انواع constraint ها: CHECK و DEFAULT و INDEX

SQL INDEX, DEFAULT & CHECK Constraints

2 413

با سلام و احترام خدمت شما خوانندگان گرامی، در این قسمت می خواهیم constraint هایی به نام های CHECK و DEFAULT و INDEX را بررسی کنیم. این ها آخرین constraint هایی هستند که در زبان SQL وجود دارند.

CHECK

این محدودیت، اندازه ی مقداری را تعیین می کند که ما در ستون یک جدول قرار می دهیم. شما می توانید این محدودیت را روی یک ستون یا تمام ستون های جدول خود اعمال کنید. بگذارید نمونه ای از این محدودیت را به شما نشان دهم. در مثال زیر می خواهیم برای ستون Age (به معنی «سن») در جدول Persons محدودیتی تعیین کنیم که می گوید این ستون نمی تواند مقادیر زیر 18 را قبول کند (افراد نباید زیر 18 سال باشند):

برای MySQL:

برای SQL Server یا Oracle یا MS Access:

اگر می خواهید CHECK روی چندین جدول اعمال شود از ساختار زیر برای تمام پایگاه های داده استفاده کنید:

جدول های از پیش تعریف شده

تا اینجا کار این مثال ها برای ساخت جدول با محدودیت خاصی بود اما اگر می خواهید جدولی را که از قبل ساخته اید به این شکل ویرایش کنید باید به شکل زیر عمل کنید.

فرض کنید می خواهیم همان ستون Age را در جدولی از پیش تعریف شده تغییر دهیم:

برای MySQL یا SQL Server یا Oracle یا MS Access:

و برای اعمال روی چندین ستون مختلف:

حذف CHECK

برای حذف این محدودیت باید از ساختار زیر استفاده کنید.

برای SQL Server یا Oracle یا MS Access:

برای MySQL:

DEFAULT

DEFAULT باعث می شود ستون های جدول شما مقدار پیش فرضی داشته باشند بنابراین اگر هیچ مقداری به فیلد خاصی داده نشود، مقدار DEFAULT در آن خانه می نشیند. فرض کنید می خواهیم برای ستون City در جدول Persons مقدار پیش فرض تعیین کنیم. در این صورت:

برای My SQL یا SQL Server یا Oracle یا MS Access:

از دیگر استفاده های DEFAULT این است که می تواند مقادیر سیستمی مانند تاریخ را با استفاده از توابعی مانند ()GETDATE وارد جدول شما کند:

بنابراین می توانید به صورت خودکار زمان ثبت نام کاربر، زمان آپلود یک فایل و … را تعیین کنید بدون اینکه نیاز باشد دخالتی در عملیات ثبت آن داشته باشید.

جدول های از پیش تعریف شده

اگر جدول خود را از قبل ساخته اید و حالا می خواهید به آن مقدار پیش فرض بدهید باید از ساختار زیر استفاده کنید. به طور مثال می خواهم برای همان ستون City مقدار پیش فرض تعیین کنم:

برای MySQL:

برای SQL Server:

برای MS Access:

برای Oracle:

حذف DEFAULT

اگر از قبل برای جدول خود DEFAULT تعریف کرده اید اما دیگر نیازی به آن ندارید می توانید از ساختار زیر برای حذف آن استفاده کنید:

برای MySQL:

برای SQL Server یا Oracle یا MS Access:

CREATE INDEX

همانطور که از نام این دستور مشخص است کارش ساختن index برای جدول های پایگاه داده است. استفاده ی index ها در پایگاه داده این است که می توانیم با استفاده از آن ها داده ها را بسیار سریع تر دریافت کنیم. البته واضح است که index برای کاربران قابل مشاهده نیست.

هشدار: بروزرسانی (update) جدولی که index داشته باشد بیشتر از جدولی که بدون index باشد طول می کشد. چرا؟ به دلیل اینکه index ها نیز باید آپدیت شوند بنابراین کارها تقریبا دو برابر می شود. به همین خاطر پیشنهاد می شود فقط در ستون هایی از index استفاده کنید که مرتبا مورد استفاده قرار می گیرند.

برای ایجاد index روی ستون خاصی از جدول باید طبق ساختار زیر عمل کنید:

در این ساختار مقادیر تکراری نیز مورد قبول هستند. اگر دوست دارید مقادیر غیر تکراری و منحصر به فرد داشته باشید از ساختار زیر استفاده کنید:

هشدار: دستور ساختن index برای پایگاه داده های مختلف، متفاوت است بنابراین قبل از استفاده حتما دستور مربوط به پایگاه داده ی خود را چک کنید.

فرض کنید می خواهیم index ای بسازیم که idx_lastname نام دارد و روی ستون LastName از جدول Persons پیاده سازی می شود. در این صورت به این شکل عمل می کنید:

اگر قصد دارید این کار را برای چندین ستون انجام دهید نیز باید بنویسید:

حذف INDEX

برای حذف index از یک ستون و جدول می توانید از ساختار های زیر استفاده کنید:

برای MS Access:

برای SQL Server:

برای DB2/Oracle:

برای MySQL:

این ها آخرین موارد constraint ها بودند. در قسمت های آینده برخی از مباحث تکمیلی زبان SQL را ذکر کرده و دوره را به اتمام می رسانیم. امیدوارم این قسمت برایتان مفید بوده باشد.

ترتیبی که روکسو برای یادگیری مطالب سری آموزش زبان SQL به شما توصیه می‌کند:
2 نظر
  1. کامران

    سلام تشکر میکنم واسه سایت خوبتون و خسته نباشید میگم یک سوال برام پیش اومده در مثال هاتون کلمه هایی مثل CHK_PersonAge هست منظورتون از chk و PersonAge دقیقا چیه و چطور باید محدودیت age => 18 رو برای مثال از جدولی به نام customers حذف کنیم؟ ممنون میشم راهنمایی کنین کلی سرچ کردن اما نمونه دیگه ای پیدا نکردم! همه سایت ها همین مثال رو زدن متاسفانه! خیلی ممنون

    1. امیر زوارمی

      سلام دوست عزیز،
      PersonAge در واقع اسم یکی از ستون های جدول فرضی ما است. chk هم مخفف همون check هست یعنی چک کن که personAge (نام کاربر) بیشتر از 18 باشه.

      اون CHK_PersonAge نامی هست که برای constraint خودمون انتخاب کردیم. مثلا کد زیر:
      CONSTRAINT CHK_Person CHECK (Age>=18 AND City=’Sandnes’)

      اینجا CHK_Person یه اسم هست که واسه CHECK انتخاب کردیم. حالا اگه بخوام همین محدودیت که اسمش CHK_Person بود رو بردارم می تونم از دستور زیر استفاده کنم:
      ALTER TABLE Persons
      DROP CONSTRAINT CHK_PersonAge;

      کلمه ی DROP حذف می کنه.

ارسال نظر

توجه:‌ آدرس ایمیل شما منتشر نخواهد شد.

mezitli escort
mezitli escort
mezitli escort