آموزشی

آموزش SQL بخش دوم (مفاهیم پایه جدول، ردیف، ستون و…)

SQL یک زبان برای کار با پایگاه داده است؛ SQL شامل ایجاد و حذف پایگاه داده، ، ایجاد،ویرایش و حذف ردیف‌ها و غیره است. SQL یک استاندارد استاندارد ملی آمریکا (ANSI) است، اما نسخه‌های مختلفی از زبان SQL وجود دارد.

SQL  مخفف Structured Query Language است که یک زبان رایانه‌ای برای ذخیره، دستکاری و بازیابی اطلاعات ذخیره شده در یک پایگاه داده می‌باشد.

همچنین می‌توانید آموزش SQL بخش اول را ببنید

آموزش SQL بخش دوم (مفاهیم پایه جدول، ردیف، ستون و...)

RDBMS

سیستم مدیریت پایگاه داده رابطه‌ای (RDBMS) یا Relational database management system یک سیستم مدیریت پایگاه داده (DBMS) است که بر مبنای مدل رابطه‌ای که توسط   Edgar F. Codd (از آزمایشگاه تحقیقاتی مشهور IBM در سن خوزه) ابداع شد عمل می‌کند.

بیشتر پایگاه‌های داد‌ه‌ای که امروزه به طور گسترده مورد استفاده قرار می‌گیرند بر مبنای مدل پایگاه داده رابطه‌ای او طراحی شده‌اند. ، بیشتر DBMS های رابطه‌ای تجاری از SQL به عنوان زبان پرسمان خود استفاده می‌کنند.

 

جدول (table)

جداول محلی هستند که داده‌ها در RDBMS ذخیره می‌شوند . این جدول اساسا مجموعه‌ای از ورودی‌های مربوط به داده‌ها است و شامل ستون‌ها (column) و ردیف‌های (Row) متعدد است.

بر فرض یک جدول به نام CUSTOMERS به شکل زیر داریم:

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

 

رشته(field)

هر جدول به نهادهای کوچکتر به نام فیلدها شکسته میشود. در مثال بالا فیلد شامل ID، NAME، AGE، ADDRESS و SALARY  می‌باشد.

فیلد یک ستون در یک جدول است که برای حفظ اطلاعات خاص در مورد هر رکورد در جدول طراحی شده است.

 

رکورد(Record ) و ردیف(Row)

رکورد نیز به عنوان یک ردیف داده می‌باشند و هر ورودی که در یک جدول وجود دارد. به عنوان مثال، در جدول بالا 7 رکورد وجود دارد. در زیر یک ردیف داده یا رکورد در جدول قرار دارد

رکورد به ردیف افقی در یک جدول می‌گویند.

در مثال بالا:

+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
+----+----------+-----+-----------+----------+

 

ستون (column)

ستون یک ردیف عمودی در یک جدول است که حاوی تمام اطلاعات مرتبط با یک فیلد خاص در یک جدول می‌باشد.

در مثال بالا ستون ADDRESS :

+-----------+
| ADDRESS   |
+-----------+
| Ahmedabad |
| Delhi     |
| Kota      |
| Mumbai    |
| Bhopal    |
| MP        |
| Indore    |
+----+------+

مقدار خالی (NULL value)

یک مقدار NULL در یک جدول یک مقدار در یک فیلد است که ظاهرا خالی است، یعنی یک فیلد با مقدار NULL یک فیلد بدون مقدار است.

بسیار مهم است که بدانیم که یک مقدار NULL متفاوت از مقدار صفر یا مقدار فاصله(spaces) است. یک فیلد با مقدار NULL در زمان ایجاد یک رکورد خالی شده است.

 

Constraints در SQL

Constraints به مفهوم محدودیت می‌باشد، Constraints قوانینی است که در ستون‌های داده روی یک جدول اجرا می‌شوند. Constraints ها برای محدود کردن نوع داده‌هایی که می‌توانند در یک جدول قرار گیرند استفاده می‌شود و باعث می‌شود ذخیره داده‌ها در پایگاه داده با دقت و اطمینان انجام بگیرد .

Constraints ها می‌توانند برای ستون یا جدول باشند. محدودیت‌های ستون تنها به یک ستون اعمال می‌شود، در حالی که محدودیت‌های جدول برای کل جدول اعمال می‌شود.

بعضی از محدودیت‌های قابل استفاده در SQL است:

  • NOT NULL Constraint − اطمینان حاصل می‌کند که یک ستون نمی‌تواند یک مقدار NULL داشته باشد.
  • DEFAULT Constraint − یک مقدار پیش‌فرض برای ستون‌ها در نظر می‌گیرد زمانی که هیچ مقداری مشخص نشده باشد.
  • UNIQUE Constraint − اطمینان می‌دهد که تمام مقادیر در یک ستون متفاوت هستند.
  • PRIMARY Key − هر ردیف / رکورد را در یک جدول پایگاه داده منحصر به فرد می‌کند.
  • FOREIGN Key − یک ردیف / رکورد در یک جدول پایگاه داده را نسبت به جداول دیگر منحصر به فرد می‌کند .
  • CHECK Constraint − تضمین می‌کند که تمام مقادیر در یک ستون شرایط خاصی که تعیین می‌کنید را برآورده کنند.
  • INDEX − برای سرعت بخشیدن به ایجاد و بازیابی اطلاعات از پایگاه داده استفاده می‌شود.

 

در مطلب آموزش SQL بخش اول ( آشنایی مقدماتی و لیست دستورات) درباره T-SQL و چگونگی ایجاد یک Query توضیح دادم

در ادامه درباره Syntax و یا نحوه نوشتن دستور‌ها بیشتر صحبت می‌کنیم

SQL از یکسری قواعد جهت نوشتن Syntax پیروی میکند

کلیه دستورات با یک کلمه کلیدی شروع می‌شود مانند  SELECT, INSERT, UPDATE, DELETE, ALTER, DROP, CREATE, USE, SHOW و با نقطه و ویرگول (;) تمام می‌شود

SQL به حروف بزرگ و کوچک حساس نیست، یعنی دستور SELECT با select تفاوتی نمی‌کند، در حالی که MySQL در نام جدول به حروف حساس است بنابراین، اگر شما با MySQL کار می‌کنید،  باید نام جدول را همانطور که در پایگاه داده وجود دارد، بدهید.

با مطالبی که خوانیدم به راحتی یک Syntax  را می‌توانید متوجه بشویم

در اینجا نحوه دستور ساده  SELECT را می‌بینیم

SELECT column1, column2, ...
FROM table_name;

به راحتی متوجه‌ می شویم که ابتدا با دستور SELECT شروع می‌کینم بعد ستون‌های (column) مورد نظر جهت انتخاب و یا نمایش را می‌نویسیم

سپس با دستور FROM نام جدولی که می‌خواهم جستجو شود را وارد میکنیم و در انتخاب نقطه ویرگول دستور را می‌بنیدم

 

انواع داده در SQL

SQL Server  انواع داده‌ها برای استفاده شما ارائه می‌دهد که در زیر آورده شده‌اند:

داده های متنی

نوع دادهتوضیحاتفضا
char(n)رشته ای با طول ثابت، حداکثر 8000 کاراکتر
مصرف فضای ابن نوع وابسته به تعداد کاراکترهای آن است هر کاراکتر یک بایت اشغال می کندn می تواند عددی بین 1 تا 8000 باشدتوجه: اگر 5=n باشد و 2 کاراکتر وارد کنید، 3 کاراکتر باقی مانده با Space پر می شودمزیت این نوع داده در جستجوی سریع آن است
n
varchar(n)رشته ای با طول متغیر، حداکثر 8000 کاراکتر
از این نوع داده زمانی استفاده می کنیم که میزان فضایی که داده ها اشغال می کنند بسیار متغیر باشدتوجه: اگر 5=n باشد و 2 کاراکتر وارد کنید، فقط به اندازه 2 کاراکتر فضا اشغال می شود (3 کاراکتر باقی مانده در نظر گرفته نمی شود)مزیت این نوع داده در میزان فضای استفاده شده است
varchar(max)رشته ای با طول متغیر، حداکثر 1,073,741,824 کاراکتر

به جای n در مورد قبلی می توان از عبارت max استفاده کرد تا حداکثر فضای امکان پذیر در دسترس باشد

textرشته کاراکتر با طول متغیر، حداکثر 2GB داده متنی

داده های متنی Unicode

نوع دادهتوضیحاتفضا
nchar(n)داده Unicode با طول ثابت، حداکثر 4,000 کاراکتر

میزان مصرف این نوع داده دو بایت به ازای هر کاراکتر است. بخاطر این موضوع، n باید بین یک تا چهار هزار تعیین شود

nvarchar(n)داده Unicode با طول متغیر، حداکثر 4,000 کاراکتر
nvarchar(max)داده Unicode با طول متغیر، حداکثر 536,870,912 کاراکتر
ntextداده Unicode با طول متغیر، حداکثر 2GB داده متنی

داده های Binary

نوع دادهتوضیحاتفضا
bit0، 1 یا NULL
binary(n)داده باینری با طول ثابت حداکثر 8000 بایت
varbinary(n)داده باینری با طول متغیر حداکثر 8000 بایت
varbinary(max)داده باینری با طول متغیر حداکثر 2GB
imageداده باینری با طول متغیر حداکثر 2GB

داده های عددی

نوع دادهتوضیحاتفضا
tinyintاعداد صحیح بین 0 تا 2551 byte
smallintاعداد صحیح بین 32,767 تا 32,768-2 bytes
intاعداد صحیح بین 2,147,483,647 تا 2,147,483,648 –
معادل از منفی 231 تا 231 منهای یک است
4 bytes
bigintاعداد صحیح بین 9,223,372,036,854,775,807 تا 9,223,372,036,854,775,808-

که معادل از منفی 263 تا 263 منهای یک است

8 bytes
decimal(p,s)اعداد با مقیاس (scale) و دقت (precision) ثابت
از منفی 1038 بعلاوه یک تا 1038 منهای یک
پارامتر p ماکزیمم تعداد ارقام یک عدد را نشان می دهد (شامل هم ارقامی که سمت راست علامت اعشار می آیند و هم ارقامی که سمت چپ علامت اعشار می آیند) پارامتر p باید مقداری بین صفر تا 38 باشد. مقدار پیش فرض 18 می باشد.
پارامتر s ماکزیمم تعداد ارقامی که سمت راست علامت اعشار می آید را نشان می دهد. پارامتر s باید عددی بین صفر تا p باشد. مقدار پیش فرض عدد صفر است
5-17 bytes
numeric(p,s)اعداد با مقیاس (scale) و دقت (precision) ثابت
از منفی 1038 بعلاوه یک تا 1038 منهای یک
پارامتر p ماکزیمم تعداد ارقام یک عدد را نشان می دهد (شامل هم ارقامی که سمت راست علامت اعشار می آیند و هم ارقامی که سمت چپ علامت اعشار می آیند) پارامتر p باید مقداری بین صفر تا 38 باشد. مقدار پیش فرض 18 می باشد.
پارامتر s ماکزیمم تعداد ارقامی که سمت راست علامت اعشار می آید را نشان می دهد. پارامتر s باید عددی بین صفر تا p باشد. مقدار پیش فرض عدد صفر است
5-17 bytes
smallmoneyداده های ارزی بین 214,748.3648- تا 214,748.36474 bytes
moneyداده های ارزی بین 922,337,203,685,477.5808- تا 922,337,203,685,477.58078 bytes
float(n)برای نگهداری اعداد غیر صحیح با تعداد ارقام اعشار متغیر و یا تخمـینـی استفاده می‌شود (from -1.79E + 308 to 1.79E + 308)
پارامتر n نشان دهنده 4 byteی یا 8 byteی بودن فیلد است. اگر بین ا تا 24 باشد فیلد، 4 byteی است و اگر بین 25 تا 53 باشد فیلد، 8 byteی است. مقدار پیش فرض عدد 53 است.
4 یا 8 bytes
real برای نگهداری اعداد غیر صحیح با تعداد ارقام اعشار متغیر و یا تخمـینـی استفاده می‌شود (from -3.40E + 38 to 3.40E + 38)4 bytes

داده های تاریخ و زمان

این نوع فیلد‌ها برای نگهداری تاریخ میلادی و ساعت استفاده می‌شود و برای تاریخ شمسی کاربردی ندارد.

نوع دادهتوضیحاتفضا
datetimeاز تاریخ اول January سال 1753 تا سی ویکم December سال 9999 با دقت 3.33 میلی ثانیه8 bytes
datetime2از تاریخ اول January سال 0001 (01/01/0001) تا سی ویکم December سال 9999 (31/12/9999)  با دقت 100 نانو ثانیه6-8 bytes
smalldatetimeاز تاریخ  اول January سال 1900 تا ششم June سال 2079 با دقت یک دقیقه4 bytes
dateفقط تاریخ را ذخیره می کند. از تاریخ  اول January سال 0001 (01/01/0001) تا سی ویکم December سال 9999(31/12/9999)3 bytes
timeفقط زمان را ذخیره می کند با دقت 100 نانو ثانیه3-5 bytes
datetimeoffsetمشابه datetime2 می باشد به علاوه timeoffset را ذخیره می کند8-10 bytes
timestampهر زمان سطری ایجاد یا تغییر داده می شود، یک عدد یکتا ذخیره می شود. داده timestamp وابسته به ساعت داخلی سیستم می باشد و با زمان واقعی مطابقت ندارد. هر جدولی ممکن است یک timestamp متفاوت داشته باشد.

به عبارت دیگر در این فیلد ۸ بایتی، تایم لحظه‌ای اجرای دستور نگهداری می‌شود و کاربرد آن کنترل بروزرسانی همزمان (Concurrency) اطلاعات توسط چند کاربر است. البته در تعداد رکوردهای پایین به کار نمی‌آید و بیشتر زمانی مورد نیاز است که تعداد رکوردها خیلی زیاد باشد مثلاً ۱۰۰ میلیون رکورد!

انواع داده ای دیگر

نوع دادهتوضیحات
sql_variantاین نوع فیلد، به جز داده های text, ntext, timestamp برای نگهداری انواع داده های دیگر استفاده می‌شود و نوع آن با توجه به اولین مقداری که در آن قرار می‌گیرد تعیین خواهد شد. (حداکثر 8000 بایت) چون نوع و حجم فیلد مشخص نیست، لذا تنها یک اشاره‌گر ۱۶ بایتی در آن قرار گرفته و داده اصلی در فایل جداگانه نگهداری می‌شود. استفاده از این نوع فیلد، توصیه نمی‌گردد.
uniqueidentifierاین فیلد ۱۶ بایتی، به ما کدی Unique یا یکتا می‌دهد که به اصطلاح GUID می‌گویند. یکی از کاربردهای آن در Replication است.
xmlداده هایی با فرمت XML را ذخیره می کند. (حداکثر 2GB)

این فیلد بیشتر برای انتقال اطلاعات و دستورات تحت web استفاده می‌شود و شامل انواع MetaData های مختلف است. این فیلد در SQL 2005 معرفی گردید.

cursorاین فیلد مربوط به كنترل Cursor است و مرجع یک Cursor در آن ذخیره می شود
tableنتیجه یک

 

 

 

 

در مطالب بعدی شروع به توضیح در مورد دستورات پر‌کاربرد SQL می کنیم…

امیر فدائیان

عاشق تکنولوژی هستم،مشغول برنامه نویسی و همچنین پشتیبانی و نصب سیستم های نظارتی و حفاظتی هست، در اين وبلاگ علاوه بر اينكه دفترچه ياداشتي براي خودم هست ،تجربیات و دانسته‌هام در حوزه نرم‌افزار ،اينترنت ،تلفن همراه و ... را منتشر ميكنم. Programming languages: Delphi, Kotlin, Python, SQL Server

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا