توسط Constraints می توان نوع داده هایی که در جدول وارد می شوند محدود نمود

این محدودیت می تواند در زمان تعریف جدول برای ستونها اعمال شود
و یا بعد از تعریف جدول توسط دستور alter table .
ما در اینجا روی Constraints مهم زیر تمرکز می کنیم :
 
  • NOT NULL
  • UNIQUE
  • PRIMARY KEY
  • FOREIGN KEY
  • CHECK
  • DEFAULT
 
NOT NULL
 به طور پیش فرض یک جدول می تواند مقادیر NULL را در خود ذخیره نماید
 یعنی اینکه در دستور INSERT INTO خیچ مقداری برای فیلد مشخص نشود . این فیلد چه عددی چه رشته ای برابر NULL خواهد شد
 اما دستور NOT NULL فیلد را مجبور می کند که حتما یک مقداری داشته باشد

 مثال

در مثال زیر هنگام تعریف جدول مشخص می کنیم که فیلد FAMILY نمی تواند مقدار NULL داشته باشدیعنی در زمان INSERT INTO  یا UPDATE شما نمی توانید برای این فیلد مقدار مشخص نکنید

CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
 

UNIQUE

 توسط این دستور مشخص می کنید که مقادیر فیلد باید در کل جدول یکتا باشد یعنی هیچ مقدار دیگری در این فیلد نمی تواند مشابه مقدار دیگر باشد مثلا دو تا اسم علی نمی تواند در جدول باشد
 UNIQUE و  PRIMARY KEY هر دو باعث می شود مطمئن شویم که مقدار یک فیلد در جدول همیشه یکتا خواهد بود
 با این تفاوت که شما فقط یک فیلد بطور PRIMARY KEY  می تواندی در جدول  داشته باشید اما به تعداد دلخواه می توانید فیلد از نوع UNIQUE  داشته باشید

با یک مثال روش  مشخص کردن فیلد بصورت UNIQUE  در MYSQL  را می گوئیم

این کار در دستور ایجاد جدول انجام می شود :

در MYSQL :

 مثال

فیلد P_ID را بصورت UNIQUE مشخص نمائید

 CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
UNIQUE (P_Id)
)

 در SQL Server / Oracle / MS Access:

CREATE TABLE Persons
(
P_Id int NOT NULL UNIQUE,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

 در این مثال با عبارت NOT NULL UNIQUE یکتا بودن مقدار فیلد مشخص شده است
در شرایطی لازم است حالت UNIQUE بودن فیلد یا فیلدها حذف شود پس بهتر است در زمان تعریف جدول نامی را برای فیلدهای UNIQUE شده در نظر بگیریم  که بعدا با این نام بتوان حالت UNIQUE بود را از این فیلدها حذف نمود

برای این کار در MySQL / SQL Server / Oracle / MS Access:

به روش زیر عمل می کنیم

CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)
)

جلوی عبارت CONSTRAINT نام مورد نظر برای UNIQUE را می نویسیم 

و جلوی UNIQUE و در پرانتز ان نام فیلدهایی را می نویسیم که می خواهیم حالت UNIQUE پیدا کنند

 

UNIQUE و ALTER TABLE

 

اگر بعد از ایجاد جدول تصمیم به UNIQUE کردن فیلد یا فیلدهایی گرفتید باید از دستور ALTER TABLE استفاده کنید

مثال

روش انجام این کار در MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons
ADD UNIQUE (P_Id)

فیلد P_ID را بصورت UNIQUE تغییر می دهد

برای نام گذاری UNIQUE فیلدهای UNIQUE شده بعد از تعریف جدول بصورت زیر عمل نمائید

مثال

در MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons
ADD CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)

جلوی عبارت CONSTRAINT  نام UNIQUE و جلوی عبارت UNIQUE و دورن پرانتز نام فیلدهایی که می خواهید   UNIQUE شوند بگوئید .

حذف UNIQUE از فیلد

 

 در MYSQL دستور زیر را بکار ببرید

مثال :

ALTER TABLE Persons
DROP INDEX uc_PersonID

جلوی DROP INDEX نام UNIQUE را بنویسید که می خواهید از روی فیلد حذف شود

در SQL Server / Oracle / MS Access:

ALTER TABLE Persons
DROP CONSTRAINT uc_PersonID

جلوی DROP CONSTRAINT نام UNIQUE را بنویسید که می خواهید از روی فیلد حذف شود

PRIMARY KEY

 PRIMARY KEYباعث می شود فیلد مورد نظر بصورت UNIQUE باشد
فیلد PRIMARY KEY نمی تواند مقدار NULL باشد ( یعنی مقدار نداشته باشد)
در بانک های اطلاعاتی حقیقی هر جدول باید یک فیلد کلیدی داشته باشد و هر جدول بیش از یک فیلد کلیدی نمی تواند داشته باشد
روش تعریف کلید اصلی در زمان ایجاد جدول جدید :

الف - در MY SQL

CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (P_Id)
)

با دستور PRIMARY KEY درون پرانتز نام فیلد کلیدی را بنویسید

ب - در SQL Server / Oracle / MS Access:

CREATE TABLE Persons
(
P_Id int NOT NULL PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

برای اینکه برای PRIMARY KAY بودن نام بگذارید که بعدا بتوانید PRIMARY بودن را از ان فیلد حذف نمائید و اینکه اگر بخواهید یک کلید اصلی روی مجموعه ای از فیلدها بسازید از روش زیر استفاده نمائید 

در MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)
)

جلوی CONSTRAINT  نامی برای ویژگی PRIMARY KEY بودن فیلد های درون P_ID , LASTNAME انتخاب می کنیم 

جلوی PRIMARY KEY هم درون پرانتز نام فیلدهایی را بگوئید که می خواهید کلید اصلی باشند

ما در یک جدول نمی توانیم بیش از یک کلید اصلی داشته باشیم همین یک کلید اصلی می تواند شامل مجموعه ای از فیلدها باشد

روش تعریف کلید اصلی بعد از ایجاد جدول جدید

اگر بعد از ایجاد جدول تصمیم گرفتید کلید اصلی را تعیین نمائید از دستور ALTER TABLE استفاده نمائید

در MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons
ADD PRIMARY KEY (P_Id)

نامگذاری کردن ویژگی PRIMARY KEY بودن فیلد یا فیلدها بعد از ایجاد جدول

در MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons
ADD CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)

جلوی PRIMARY KEY اسامی فیلدهایی را که باید کلید اصلی باشند می گوئیم

جلوی CONSTRAINT  نامی که می خواهیم برای این مجموعه کلید اصلی باشد می نویسیم

نکته بسیار مهم :

اگر بعد از ایجاد جدول می خواهید فیلد PRIMARY KEY , UNIQUE بسازید دقت داشته باشید جدول در ان فیلدها دارای مقدار باشد یعنی NULL نداشته باشد  و دارای مقدار تکراری نباشد

 

حذف ویژگی کلید اصلی بودن فیلد  با DROP

 مثال 

در MySQL:

ALTER TABLE Persons
DROP PRIMARY KEY

در جدول PERSON چون فقط می توان یک کلید اصلی  در هر جدول داشت تنها با نوشتن DROP PRIMARY KEY کلید اصلی بودن فیلد یا مجموعه فیلدها حذف می شود 

در SQL Server / Oracle / MS Access:

ALTER TABLE Persons
DROP CONSTRAINT pk_PersonID
در این جا باید نام  کلید اصلی را که هنگام تعریف ان مشخص کرده بودی جلوی DROP CONSTRAINT بنویسیم 
روش تعریف FOREIGN KEY
 یک کلید خارجی در جدولی به کلید اصلی در جدول دیگر اشاره دارد ( وابستگی دارد )

مثال

در جدول T1 اطلاعات مربوط به نام و نام خانوادگی و شماره دانش اموزی دانش اموزان قرار دارد

ID_STU FAMILY NAME
12 MOHAMMADI ALI
13 ASADI REZA
14 SHOJAEE JAMSHID

 

در جدول T2 اطلاعات مربوط به معدل دانش اموزان و شماره دانش اموزی انها قرار دارد

ID_STU AVRAGE
12 18
13 16
14 17
 همانطور که مشاهده می کنید اطلاعات هر دانش اموز را می توان با استفاده از فیلد ID_STU که در هر دو جدول قرار دارد بدست اورد . اینجا اگر جدول T1 جدول اصلی باشد و فیلد ID_STU کلید اصلی یا PRIMARY KEY  انگاه در جدول T2 فیلد ID_STU کلید خارجی برای جدول اول خواهد شد
حال روش برقراری ارتباط با فیلد ID_STU جدول اول را در هنگام تعریف جدول دوم به این صورت تعریف می کنیم :
روش کار در MYSQL :
CREATE TABLE T2(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
)
نام فیلدی که جلوی FOREIGN KEY است همان فیلد در جدول دوم است که می خواهید کلید خارجی باشد
جلوی REFERENCES بیرون  پرانتز ابتدا نام جدولی که کلید اصلی در ان است نوشته سپس دورن پرانتز نام فیلد کلید اصلی جدول اول را بنویسید
روش کار در SQL Server / Oracle / MS Access:
CREATE TABLE T2(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
P_Id int FOREIGN KEY REFERENCES Persons(P_Id)
)
FOREIGN KEY : قبل از این دستور نام کلید خارجی را بنویسید
REFERENCES : ابتدا جلوی ان نام جدولی که فیلد اصلی در ان است نوشته سپس درون پرانتز نام فیلد اصلی را بنویسید
توجه داشته باشید که هر جدولی می تواند یک کلید اصلی یا PRIMARY KEY نیز داشته باشد
روش نام گذاری کلید خارجی و تعریف کلید خارجی روی مجموعه ای از فیلدها
روش کار در MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
)

 اگر بعد از ایجاد جدول تصمیم گرفتید فیلدی را کلید خارجی تعریف کنید

مطابق مثال زیر عمل کنید

مثال

در MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)

نام گذاری و ایجاد فیلد کلیدی فرعی بعد از ایجاد جدول

ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)

روش حذف کردن فیلد فرعی

در MySQL:

ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders

نام کلید فرعی را جلوی DROP FOREIGN KEY بنویسید

در SQL Server / Oracle / MS Access:

ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders

نام کلید فرعی را جلوی DROP CONSTRAINT بنویسید