Jadval yaratganimizda, har bir ustun uchun qanday qiymatlar saqlanishini belgilab qo'yishimiz mumkin. Cheklovlar (constraints) — bu ustunlarga qo'yiladigan qoidalar. Ular ma'lumotlar bazasiga noto'g'ri yoki yetishmayotgan ma'lumot kirib qolishining oldini oladi.
Masalan, biz "har bir mahsulotning nomi bo'lishi shart" yoki "har bir id takrorlanmas bo'lishi kerak" degan qoidalarni o'rnata olamiz. Quyida eng ko'p ishlatiladigan to'rtta cheklovni ko'rib chiqamiz.
PRIMARY KEY ustunni jadvaldagi har bir qatorni yagona qilib ajratuvchi "asosiy kalit" deb belgilaydi. Bu ustundagi qiymatlar takrorlanmas (unique) va bo'sh emas bo'lishi kerak.
Odatda bu id ustuni bo'ladi:
CREATE TABLE mahsulot (
id INTEGER PRIMARY KEY,
nomi TEXT
);Endi ikkita mahsulotning id qiymati bir xil bo'la olmaydi — har bir qator o'ziga xos id ga ega bo'ladi.
Ba'zi ustunlar har doim qiymatga ega bo'lishi kerak. Masalan, mahsulotning nomisiz qator qo'shishning ma'nosi yo'q. NOT NULL cheklovi ana shu ustunni bo'sh (NULL) qoldirishni taqiqlaydi.
CREATE TABLE mahsulot (
id INTEGER PRIMARY KEY,
nomi TEXT NOT NULL
);Agar siz nomi ustunisiz qator qo'shmoqchi bo'lsangiz, ma'lumotlar bazasi xato beradi.
Ba'zan qiymat ko'rsatilmasa ham, ustunga avtomatik biror qiymat qo'yilishini istaymiz. DEFAULT ana shu uchun ishlatiladi: qator qo'shilganda bu ustun uchun qiymat berilmasa, ma'lumotlar bazasi DEFAULT da ko'rsatilgan qiymatni o'zi qo'yadi.
CREATE TABLE mahsulot (
id INTEGER PRIMARY KEY,
nomi TEXT NOT NULL,
narx INTEGER DEFAULT 0
);Bu jadvalga narxini ko'rsatmasdan mahsulot qo'shsak:
INSERT INTO mahsulot (id, nomi) VALUES (1, 'Telefon');narx ustuni avtomatik 0 bo'ladi, chunki biz uni ko'rsatmadik:
1|Telefon|0Agar narxni o'zimiz ko'rsatsak, DEFAULT ishlamaydi — bizning qiymatimiz qo'yiladi:
INSERT INTO mahsulot (id, nomi, narx) VALUES (2, 'Kitob', 50000);2|Kitob|50000Eslatma: DEFAULT qiymat faqat siz ustunni
INSERTda tashlab ketganingizda ishlaydi. Qiymat ko'rsatsangiz (hatto0bo'lsa ham), o'sha ko'rsatilgan qiymat saqlanadi.
UNIQUE cheklovi ustundagi qiymatlar bir-birini takrorlamasligini talab qiladi. PRIMARY KEY ga o'xshaydi, lekin uni istalgan ustunga qo'yish mumkin va u faqat takrorlanishni taqiqlaydi.
CREATE TABLE mahsulot (
id INTEGER PRIMARY KEY,
nomi TEXT NOT NULL UNIQUE,
narx INTEGER DEFAULT 0
);Endi ikkita mahsulot bir xil nomi ga ega bo'la olmaydi.
Muhim: Bir ustunga bir nechta cheklovni birga qo'yish mumkin. Yuqorida
nomiustuni hamNOT NULL, hamUNIQUE— ya'ni nomi bo'sh ham, takror ham bo'la olmaydi.
Mahsulot jadvalini cheklovlar bilan yarating: id — PRIMARY KEY, nomi — TEXT NOT NULL, narx — INTEGER DEFAULT 0. So'ng narxsiz Telefon (narx ko'rsatmang — DEFAULT tufayli 0 bo'ladi) va narxli Kitob (narxi 50000) qo'shing. Oxirida nomi va narx ni id tartibida chiqaring va Telefonning narxi DEFAULT tufayli 0 bo'lganini kuzating.