قیود (Constraints)
قیود MySQL یعنی قانون های جدول. «قید (Constraint)» قانونی است که جلوی داده اشتباه را می گیرد. با قید، داده دقیق تر می شود و خطا کمتر می شود.
انواع قیود MySQL
قید می تواند روی یک ستون باشد یا روی کل جدول. ستون سطح یعنی فقط همان ستون. جدول سطح یعنی برای چند ستون یا کل جدول.
- NOT NULL: ستون خالی نشود.
- UNIQUE: مقدارهای تکراری نداشته باشد.
- PRIMARY KEY: ترکیب NOT NULL و UNIQUE برای شناسه یکتا.
- FOREIGN KEY: ارتباط سالم بین جدول ها را نگه می دارد.
- CHECK: مقدارها باید یک شرط را پاس کنند.
- DEFAULT: مقدار پیش فرض می گذارد.
- CREATE INDEX: بازیابی داده را سریع می کند.
نکته: اگر قید با عمل درج یا ویرایش تضاد داشته باشد، عمل انجام نمی شود.
ایجاد قید هنگام ساخت جدول (CREATE TABLE)
می توانی قیدها را همان اول با ساخت جدول تعریف کنی. مثل وقتی از اول قانون کلاس را می نویسیم.
CREATE TABLE students (
student_id INT NOT NULL,
email VARCHAR(255) UNIQUE,
grade TINYINT CHECK (grade >= 0 AND grade <= 20),
class_id INT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (student_id),
FOREIGN KEY (class_id) REFERENCES classes(id)
);
افزودن قید پس از ساخت (ALTER TABLE)
بعداً هم می توانی قید اضافه کنی. مثل افزودن قانون جدید به دفتر کلاس.
ALTER TABLE students
ADD CONSTRAINT uq_students_email UNIQUE (email);
ALTER TABLE students
ADD CONSTRAINT pk_students PRIMARY KEY (student_id);
ALTER TABLE students
ADD CONSTRAINT fk_students_class
FOREIGN KEY (class_id) REFERENCES classes(id);
ALTER TABLE students
ADD CONSTRAINT ck_students_grade CHECK (grade >= 0 AND grade <= 20);
نکات کاربردی درباره قیود MySQL
- PRIMARY KEY معمولاً روی یک ستون است. اما می تواند مرکب باشد.
- FOREIGN KEY بهتر است ایندکس داشته باشد. پرس وجو سریع تر می شود.
- CHECK شرط را ساده بنویس. خوانایی خیلی مهم است.
- DEFAULT برای مقدارهای معمول عالی است. خطاها را کم می کند.
هشدار: حذف یا تغییر قید می تواند درج های قبلی را تحت تأثیر بگذارد. همیشه پشتیبان بگیر.
برای مرور کامل، صفحه قیود MySQL راهنمای اصلی توست.
جمع بندی سریع
- قید یعنی قانون برای داده.
- ستون سطح یا جدول سطح است.
- CREATE TABLE قیدها را از اول می گذارد.
- ALTER TABLE قیدها را بعداً اضافه می کند.
- هدف: دقت و یکپارچگی داده.