SQL - محدوديت CHECK
توسط: عليرضا مسگري | ?-مهر-???? |
محدوديت check تعيين ميکند که چه بازه اي از مقادير و يا داده با چه مشخصاتي ميتواند در ستون پايگاه داده قرار بگيرد.
همچنين ميتوان براي جدول با توجه به ستونهايش محدوديت check ايجاد کنيم
ميخواهيم محدوديت check را هنگام ساخت جدول اعمال کنيم ، به دستورات زير دقت کنيد ، پس از ساخت جدول طراحی وب سایت شما فقط ميتوانيد مقدار integer را براي P_Id وارد کنيد
My SQL:
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CHECK (P_Id>0)
)
SQL Server / Oracle / MS Access:
CREATE TABLE Persons
(
P_Id int NOT NULL CHECK (P_Id>0),
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
و براي محدود کردن چند ستون به طور همزمان هم از دستور زير استفاده ميکنيم
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 chk_Person CHECK (P_Id>0 AND City='Sandnes')
)
براي ايجاد دستور check در جدولي که قبلا ساخته شده است از دستور زير بهره ميگيريم
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD CHECK (P_Id>0)
و همچنين اين عمل براي محدوديت چندين ستون به صورت زير اعمال ميشود
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD CONSTRAINT chk_Person CHECK (P_Id>0 AND City='Sandnes')
براي حذف يک محدوديت check نيز به اين صورت عمل ميکنيم
SQL Server / Oracle / MS Access:
ALTER TABLE Persons
DROP CONSTRAINT chk
SQL - محدوديت FOREIGN KEY
توسط: عليرضا مسگري | ?-مهر-???? |
محدوديت foreign key در يک جدول به کليد اصلي يک جدول ديگر يا همان primary key در يک جدول ديگر اشاره دارد .
بيايد براي درک بهتر به مثال زير ديقت کنيم:
جدول "person"
P_IdLastNameFirstNameAddressCity
1HansenOlaTimoteivn 10Sandnes
2SvendsonToveBorgvn 23Sandnes
3PettersenKariStorgt 20Stavanger
جدول "order"
O_IdOrderNoP_Id
1778953
2446783
3224562
4245621
دقت کنيد که عنصر P_Id درجدول order به عنصر همنام خود طراحی سایت يعني P_Id در جدول person اشره دارد و حاوي همان اطلاعات ميباشد P_Id در order يک foreign key و در person يک |primary key ميباشد.
foreign key در واقع از وارد شدن اطلاعات نا معتبر در جدول و همچنين هرچيز که ارتباط بين دو جدول را تخريب کند جلوگيري ميکند زيرا که به مقدار يکتايي در جدول اصلي اشاره دارد.
ايجاد foreign key هنگام ساخت جدول
براي انجام عمل فوق از دستور زير استفاده ميکنيم
MySQL:
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
)
SQL Server / Oracle / MS Access:
CREATE TABLE Orders
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
P_Id int FOREIGN KEY REFERENCES Persons(P_Id)
)
و براي محدود کردن چند ستون در جدول به عنوان foreign 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)
)
براي ساخت يک foreign key در جدولي که قبلا ساخته شده است بايد از دستور زير استفاده کرد.
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
و همچنين براي ساخت چند ستون به عنوان طراحی وب سایت يک foreign key از دستور زير استفاده کنيد
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
و براي حذف يک foreign key از دستورات زير بهره بگيريد
MySQL:
ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders
SQL Server / Oracle / MS Access:
ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders_Person