آشنایی با محدودیت‌های SQL

understanding sql constraints
20 آبان 1403

سلام! امروز می‌خواهیم درباره محدودیت‌های SQL صحبت کنیم، که تقریبا می‌توان گفت تقریبا در تمامی پایگاه‌های داده استفاده می‌شوند. این محدودیت‌ها به ما کمک می‌کنند تا داده‌هایمان تعاملات منطقی و درستی داشته باشند و از ذخیره‌سازی داده‌های ناسازگار جلوگیری کنیم. در اصل محدودیت‌ها قوانینی هستند که بر روی ستون‌های جدول‌ها اعمال می‌شوند تا ما بتوانیم بهبود بیشتری در صحت اطلاعات داشته باشیم.

یکی از اولین محدودیت‌هایی که به طور حتم با آن مواجه شده‌اید، محدودیت NOT NULL است. این محدودیت تضمین می‌کند که یک ستون حتماً باید مقداری داشته باشد و نمی‌تواند خالی باشد. این برای مواقعی عالی است که یک داده حیاتی باید همیشه حضور داشته باشد.

یکی دیگر از محدودیت‌های مهم UNIQUE است. این محدودیت باعث می‌شود تا داده‌ها در یک ستون هیچگاه تکراری نباشند. این ویژگی به ما اطمینان می‌دهد که هر رکوردی دارای یک شناسه منحصر به فرد است، و ساختار داده یکتا حفظ می‌شود.

محدودیت PRIMARY KEY، ترکیبی از NOT NULL و UNIQUE است. این محدودیت کلید اصلی جدول را مشخص می‌کند و این بدان معنی است که هر جدول حداقل باید یک ستون داشته باشد که بتواند به عنوان کلید اصلی عمل کند.

محدودیت FOREIGN KEY نیز بسیار کاربردی است و ارتباط بین دو جدول را تعریف می‌کند. این محدودیت تضمین می‌کند که یک ستون در یک جدول به یک رکورد معتبر در جدول دیگر اشاره دارد، که کمک به نگهداری یکپارچگی و هماهنگی بین داده‌ها می‌کند.

در نهایت، محدودیت CHECK به ما اجازه می‌دهد تا شروطی بر روی داده‌ها قرار دهیم. این به معنی این است که می‌توانید براساس یک شرط خاص قبول کنید یا نپذیرید که یک داده خاص وارد شود.


CREATE TABLE Students (
ID INT NOT NULL PRIMARY KEY,
Name VARCHAR(100) NOT NULL,
Email VARCHAR(100) UNIQUE,
Age INT CHECK (Age >= 18),
SchoolID INT,
FOREIGN KEY (SchoolID) REFERENCES Schools(ID)
);

این یک مثال از نحوه تعریف محدودیت‌ها در SQL است.
ID INT NOT NULL PRIMARY KEY: تضمین می‌کند که ستون ID نمی‌تواند NULL باشد و باید یکتا باشد.
Name VARCHAR(100) NOT NULL: ستون Name باید مقداری داشته باشد و نمی‌تواند خالی باشد.
Email VARCHAR(100) UNIQUE: تضمین می‌کند که مقادیر ستون Email تکراری نباشند.
Age INT CHECK (Age >= 18): شرطی می‌گذارد که سن دانشجو باید حداقل 18 باشد.
FOREIGN KEY (SchoolID) REFERENCES Schools(ID): تضمین می‌کند که مقدار SchoolID به یک شناسه معتبر در جدول Schools اشاره می‌کند.

سوالات متداول

؟

محدودیت NOT NULL در SQL چیست؟

؟

فرق بین کلید اصلی (Primary Key) و کلید خارجی (Foreign Key) چیست؟

؟

چگونه می‌توان محدودیت UNIQUE را کاربردی کرد؟

؟

آیا می‌توان چندین کلید خارجی در یک جدول داشت؟