با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، و کاربرانی که دوره آموزش SQLite را دنبال می کنند. Constraint یا محدودیت ها در SQLite ، قوانینی هستند که در ستون های داده روی جدول اجرا می شوند. این ها برای محدود کردن نوع داده هایی که می توانند در یک جدول قرار گیرند استفاده می شود. این قوانین به داده های موجود در پایگاه داده قابلیت اطمینان می دهد. Constraint ها در SQLite می توانند در سطح ستون یا در سطح جدول اعمال شوند. محدودیت های سطح ستون های جدول تنها به یک ستون در جدول اعمال می شود،در حالی که محدودیت های سطح جدول در کل جدول اعمال خواهد شد. در ادامه ی این مباحث برای آشنایی بیشتر با Constraint ها در SQLite با ما همراه باشید.
در این آموزش با سینتکس انواع محدودیت ها در SQLite و نمونه ای از هر یک آشنا خواهید شد.
Constraint ها در SQLite شامل موارد زیر هستند :
در ادامه با هر یک از Constraint ها در SQLite و کاربردهای هر یک آشنا می شوید.
در حالت پیش فرض هر از یک ستون ها می تواند مقادیر NULL را بپذیرد.
اگر می خواهید که یک ستون مقادیر NULL را نپذیرد، می توانید از این محدودیت استفاده کنید.
مقدار NULL به این معنی نیس که هیچ مقداری نیست، بلکه NULL یک مقدار ناشناخته است.
مثال
برای نمونه در SQLite جدولی با نام COMPANY و ۵ ستون به صورت زیر تعریف می کنیم.
در این جدول ستون های ID و NAME و AGE مقادیر NULL را نمی پذیرند:
1 2 3 4 5 6 7 | CREATE TABLE COMPANY( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL ); |
محدودیت DEFAULT برای وقتی که دستور INSERT INTO شامل هیچ مقداری برای آن ستون نمی شود، یک مقدار پیش فرض اختصاص می دهد.
مثال
برای نمونه در SQLite جدولی با نام COMPANY و ۵ ستون تعریف می کنیم.
به طوری که در این جدول برای ستون SALARY مقدار پیش فرض ۵۰۰۰٫۰۰ را در نظر می گیریم:
1 2 3 4 5 6 7 | CREATE TABLE COMPANY( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL DEFAULT 50000.00 ); |
محدودیت UNIQUE تعیین می کند که تمام مقادیر آن ستون باید یکتا بوده و با هم فرق داشته باشند.
مثال
برای نمونه در SQLite جدولی با نام COMPANY و ۵ ستون تعریف کرده که برای ستون AGE این جدول محدودیت UNIQUE را تعریف می کنیم :
1 2 3 4 5 6 7 | CREATE TABLE COMPANY( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL UNIQUE, ADDRESS CHAR(50), SALARY REAL DEFAULT 50000.00 ); |
این محدودیت یک ستون را به عنوان کلید اصلی آن جدول تعریف می کند.
کلید اصلی همانند محدودیت UNIQUE اجازه ی تکراری بودن مقادیر ستون مربوطه را نمی دهد.
اما در کلید اصلی بر خلاف UNIQUE در هر جدول فقط می تواند شامل یک کلید اصلی باشد.
تعریف کلیدهای اصلی در زمان طراحی جداول از مهم ترین مباحث محسوب می شود.
کلیدهای اصلی جداول ارتباط بین آن ها را برقرار می کنند.
زمانیکه یک کلید اصلی در جدول دیگر کلید خارجی باشد، این دو جدول را می توان با یکدیگر نوعی ارتباط یک به یک داد.
در SQLite یک فیلد کلید اصلی با برخی کدها می تواند مقادیر NULL را نیز بپذیرد، در حالیکه در سایر دیتابیس ها اینگونه نیست.
یک کلید اصلی می تواند از چند فیلد آن جدول تشکیل شده باشد که در اینصورت به آن composite key گفته می شود.
مثال
اگر دقت کرده باشید در مثال های قبلی در جدول COMPANY فیلد ID را به عنوان کلید اصلی جدول تعریف کرده ایم:
1 2 3 4 5 6 7 | CREATE TABLE COMPANY( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL ); |
این محدودیت بر اساس شرط هایی که در ساختار آن تعریف می کنیم، مقادیر را می پذیرد.
در این محدودیت اگر مقداری که قرار است وارد این فیلد شود با شرط آن مطابقت نداشته باشد، آن را نمی پذیرد.
مثال
برای نمونه در SQLite جدولی با نام COMPANY و ۵ ستون تعریف کرده که در فیلد SALARY محدودیتی را اعمال می کنیم که مقادیر ۰ نپذیرد:
1 2 3 4 5 6 7 | CREATE TABLE COMPANY3( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL CHECK(SALARY > 0) ); |
بعد از تعریف جدول ، تنها می توان با دستور ALTER TABLE امکان تغییر نام جدول و یا افزودن ستون را به کاربران داد.
اما نمی توان برای کاربران امکان ، تغییر نام یا حذف ستون و افزودن و حذف محدودیت ها را تعریف کرد.
در حالت پیش فرض تمام ستون های یک جدول مثل هم بوده و محدودیت خاصی ندارند، اما تقریبا در تمام موارد نیاز به تعریف یک یا چند محدودیت، حداقل تعریف کلید اصلی جداول را خواهید داشت، در این خصوص می توان از محدودیت ها در SQLit استفاده کرد.