SQL UNIQUE Constraint

در SQL از UNIQUE Constraint برای اطمینان از یکتا بودن مقدارها در یک ستون (یا ترکیب چند ستون) استفاده می‌کنیم.
یعنی هیچ دو رکوردی نباید مقدار تکراری در آن ستون داشته باشند.

🔹 ساختار کلی

CREATE TABLE table_name ( column_name datatype UNIQUE, ... );
  • column_name → نام ستونی که باید مقدارش یکتا باشد.

🔹 مثال ساده

CREATE TABLE Students ( StudentID INT UNIQUE, FullName VARCHAR(100), Email VARCHAR(100) UNIQUE );

📌 توضیح:

  • ستون StudentID باید مقدار یکتا داشته باشه.

  • ستون Email هم تکراری پذیرفته نمیشه.

🔹 درج داده معتبر

INSERT INTO Students (StudentID, FullName, Email) VALUES (1, 'Ali Rezaei', 'ali@email.com'); INSERT INTO Students (StudentID, FullName, Email) VALUES (2, 'Sara Ahmadi', 'sara@email.com');

✅ هیچ تکراری وجود نداره، پس هر دو رکورد درج می‌شن.

🔹 درج داده نامعتبر

INSERT INTO Students (StudentID, FullName, Email) VALUES (1, 'Mehdi Karimi', 'mehdi@email.com');

❌ خطا: مقدار StudentID = 1 تکراریه، چون قبلاً وجود داشته.

🔹 نام‌گذاری محدودیت UNIQUE

می‌تونیم برای محدودیت اسم دلخواه بگذاریم:

CREATE TABLE Students ( StudentID INT, Email VARCHAR(100), CONSTRAINT unique_email UNIQUE (Email) );

📌 در اینجا محدودیت با نام unique_email تعریف شده تا بعداً راحت‌تر حذف یا تغییر داده بشه.

🔹 ترکیب چند ستون (UNIQUE در چند فیلد)

CREATE TABLE Enrollments ( StudentID INT, CourseID INT, CONSTRAINT unique_enrollment UNIQUE (StudentID, CourseID) );

📌 توضیح:
در این جدول یک دانشجو نمی‌تونه دوبار در یک درس ثبت‌نام کنه.
اما می‌تونه در چند درس مختلف شرکت کنه.

🔹 افزودن UNIQUE به جدول موجود

ALTER TABLE Students ADD CONSTRAINT unique_email UNIQUE (Email);

🔹 حذف محدودیت UNIQUE

ALTER TABLE Students DROP CONSTRAINT unique_email;

🔹 نکات مهم

  • ستون‌هایی با PRIMARY KEY به‌صورت خودکار UNIQUE هم هستن.

  • UNIQUE اجازه میده مقدار NULL در ستون باشه (برخلاف PRIMARY KEY).

  • برای کنترل داده‌های تکراری، از UNIQUE استفاده کن تا نیازی به چک‌کردن دستی نباشه.