محدودیت unique در SQL
محدودیت 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 کلیک کنید.
- نوشته شده توسط مهندس تمیزی
- بازدید: 24561
دیدگاهها
سلام
میشه با یه مثال تفاوت unique و primarykey رو توضیح بدید؟
سلام، در زیر تفاوت بین Primary Key و Unique Key آورده شده است:
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 نمی توان منحصر بفرد بودن مقادیر را تضمین کرد.
سلام
فرضا ما در دستور ساخت جدول و با این خط کد
P_Id int NOT NULL UNIQUE
یک ستون p_id یونیک تعریف کردیم
حالا اگر بخوایم محدودیت یونیک فیلد مذکور رو برداریم باید چکار کنیم؟
با تشکر
با سلام.
کد زیر رو نگاه کنید:
ALTER TABLE tablename
DROP INDEX uc_PersonID
سلام در هنگام ساخت جدول ما برای یک ستون بدون اینکه به محدودیت آن اسم بدهیم UNIQUE تعریف کرده ایم. مثلا ستونی به نام ID داریم و در حین ساخت جدول فقط نوشته ایم
UNIQUE (ID)
حال تصمیم گرفته ایم آن را DROP کنیم اما برای DROP ما اسم محدودیت INDEX-NAME نداریم، در این حالت چگونه از drop استفاده کنیم؟
با تشکر
سلام.
میتونی از دستور زیر استفاده کنی:
DROP INDEX field_Name ON Table_Name
field_name در اینجا به چه چیزی اشاره دارد
field_Name به نام فیلد اشاره دارد...!
سلام
عبارت uc_PersonID اسم CONSTRAINT است و میشه به جاش عبارت دلخواه دیگه ای گذاشت
با سلام و عرض خسته نباشید.
منظور از کلمه uc_PersonID در مثال های بالا چیه؟؟
با سلام و تشکر.
این کلمه صرفا یک نام اختیاری برای محدودیت مورد نظر است. در واقع uc سرنام واژه های Unique Constraint است و در ادامه برای قابل فهم تر شدن آن از نام فیلد در ادامه استفاده کرده ایم.
ممنون از سایت فوق العاده شما .