SQL constraint — ustun cheklovlari
Baza faqat ma’lumot saqlamaydi — u ma’lumot to’g’ri bo’lishini ham kuzatishi mumkin. Masalan narx manfiy bo’lmasligi yoki email takrorlanmasligi kerak. Bu qoidalar constraint (cheklov) deyiladi. Ular jadval yaratilganda belgilanadi va noto’g’ri qiymatni bazaga kiritmaydi.
Primary key va foreign key ham aslida constraint edi. Endi qolgan asosiy turlarni ko’ramiz.
Asosiy constraint turlari
Ularni CREATE TABLE da, ustun tipidan keyin yozamiz:
CREATE TABLE hodimlar (
id INTEGER PRIMARY KEY,
ism TEXT NOT NULL,
email TEXT UNIQUE,
maosh INTEGER CHECK (maosh > 0),
faol INTEGER DEFAULT 1
);
O’zingiz ishga tushirib ko’ring — so’rovni tahrirlashingiz ham mumkin:
Har cheklov o’z vazifasini bajaradi:
NOT NULL— ustun bo’sh (NULL) bo’lolmaydi.ismmajburiy.UNIQUE— qiymat takrorlanmaydi. Ikki hodimda bir xilemailbo’lolmaydi.CHECK (shart)— qiymat shartga mos bo’lishi kerak.maoshmusbat bo’lsin.DEFAULT qiymat— kiritilmasa, avtomatik qiymat qo’yiladi.faol—1.
Cheklov qanday himoya qiladi
Cheklovga zid qiymat kiritmoqchi bo’lsangiz, baza qatorni rad etadi. Masalan manfiy maosh:
INSERT INTO hodimlar (id, ism, maosh) VALUES (1, 'Aziz', -500);
CHECK (maosh > 0) buzildi, shuning uchun bu INSERT bajarilmaydi — baza
xato qaytaradi. Xuddi shunday, bir xil email ni ikki marta kiritsangiz,
UNIQUE uni to’sadi.
Amaliy mashq
Cheklovlarni sinang:
nomustunigaNULLqiymat qo’yishga urining;- qanday xato chiqqanini o’qing;
idni takrorlashga urining;NOT NULLbo’lgan ustunni tashlabINSERTqiling;- barcha majburiy ustunlarni to’g’ri to’ldirib, muvaffaqiyatli qo’shing.
Cheklovlar ma’lumot sifatini qanday himoya qilyapti?
Qisqacha xulosa
- Constraint — ustun qiymatiga qo’yilgan qoida; buzuq ma’lumotni to’sadi.
NOT NULL— bo’sh bo’lolmaydi;UNIQUE— takrorlanmaydi.CHECK (shart)— qiymat shartga mos bo’lishi shart (masalanmaosh > 0).DEFAULT— kiritilmasa, avtomatik qiymat beradi.- Cheklov bazaga kirishdan oldin tekshiriladi — tozalik kafolatlanadi.
Keyingi darsda VIEW — murakkab so’rovni “virtual jadval” sifatida saqlab, qayta ishlatishni ko’ramiz.