محدودیت UNIQUE
محدودیت UNIQUE تعیین می کند هر رکوردی در جدول یکتاست.
محدودیت های UNIQUE و PRIMARY KEY باهم یکتایی یک ستون یا مجموعه ای از ستون ها را تضمین می کنند.
محدودیت PRIMARY KEY به طور خودکار محدودیت UNIQUE را در خود دارد.
توجه داشته باشید که می توانید چندین محدودیت UNIQUE را در یک جدول داشته باشید اما تنها یک PRIMARY KEY در جدول می توانید داشته باشید.
محدودیت UNIQUE در دستور CREATE TABLE
عبارت زیر یک محدودیت UNIQUE را روی ستون P_Id هنگام ایجاد جدول Persons به وجود می آورد.
در MySQL:
(
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:
(
P_Id int NOT NULL UNIQUE,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
برای تعریف محدودیت UNIQUE روی ستون های چندگانه (ترکیب دو یا چند ستون) از دستور زیر استفاده کنید (منظور داده های چند ستون روی هم رفته منحصر به فرد باشند):
(
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)
)
محدودیت UNIQUE در دستور ALTER TABLE
برای ایجاد محدودیت UNIQUE روی ستون P_Id هنگامی که جدول قبلا ایجاد شده از دستور زیر استفاده می کنیم.
در MySQL / SQL Server / Oracle / MS Access:
ADD UNIQUE (P_Id)
برای تعریف محدودیت UNIQUE روی ستون های ترکیبی (ترکیب دو یا چند ستون) از دستور زیر استفاده کنید (منظوراین است که داده های چند ستون روی هم رفته منحصر به فرد باشند):
در MySQL / SQL Server / Oracle / MS Access:
ADD CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)
حذف محدودیت UNIQUE
برای حذف محدودیت UNIQUE از دستور زیر استفاده می کنیم.
در MySQL:
DROP INDEX uc_PersonID
در SQL Server / Oracle / MS Access:
DROP CONSTRAINT uc_PersonID
برای مشاهده فیلم های آموزشی مقدماتی تا پیشرفته پایگاه داده SQLServer کلیک کنید.
میشه با یه مثال تفاوت unique و primarykey رو توضیح بدید؟
Primary Key:
1- هر جدول تنها یک Primary Key می تواند داشته باشد.
2- در اکثر پایگاه داده ها، مثل SQL Server و MySQL اجازه وارد کردن مقدار NULL برای فیلد Primary Key وجود ندارد.
3- Primary Key منحصر بفرد بودن تمام مقادیر فیلد را تضمین می کند.
4- اطلاعات جدول بر اساس Primary Key مرتب می شوند. یعنی اگر برای نمایش اطلاعات از دستور Select استفاده کنیم و قسمت order by را نیاوریم، اطلاعات بصورت پیشفرض براساس فیلد Primary Key مرتب می شوند.
Unique Key
1- هر جدول بیش از یک unique key می تواند داشته باشد.
2- اجازه وارد کردن مقدار NULL برای unique key وجود دارد.
3- با وجود چندین مقدار NULL برای فیلد unique key نمی توان منحصر بفرد بودن مقادیر را تضمین کرد.
فرضا ما در دستور ساخت جدول و با این خط کد
[dir=#555]P_Id int NOT NULL UNIQUE
[/dir]یک ستون p_id یونیک تعریف کردیم
حالا اگر بخوایم محدودیت یونیک فیلد مذکور رو برداریم باید چکار کنیم؟
با تشکر
کد زیر رو نگاه کنید:
[dir=#555]ALTER TABLE tablename
DROP INDEX uc_PersonID[/dir]
[dir=#555]UNIQUE (ID)
[/dir]حال تصمیم گرفته ایم آن را DROP کنیم اما برای DROP ما اسم محدودیت INDEX-NAME نداریم، در این حالت چگونه از drop استفاده کنیم؟
با تشکر
میتونی از دستور زیر استفاده کنی:
[dir=#555]DROP INDEX field_Name ON Table_Name[/dir]
عبارت uc_PersonID اسم CONSTRAINT است و میشه به جاش عبارت دلخواه دیگه ای گذاشت
منظور از کلمه uc_PersonID در مثال های بالا چیه؟؟
این کلمه صرفا یک نام اختیاری برای محدودیت مورد نظر است. در واقع uc سرنام واژه های Unique Constraint است و در ادامه برای قابل فهم تر شدن آن از نام فیلد در ادامه استفاده کرده ایم.