CREATE TABLE: turlar va cheklovlar
1810 daq
Endi bazadan o‘qishni emas, uni qurishni o‘rganamiz. Bu darsdagi buyruqlarni o‘zingizning shaxsiy bazangizda sinab ko‘ring: Mashq → Erkin rejim — u yerda xohlagan jadvalni yaratib, o‘chirishingiz mumkin.
Baza yaratish
CREATE DATABASE kutubxona;PostgreSQL’da yangi bazaga ulanish: \c kutubxona. Bazalar ro‘yxati: \l.
Jadval yaratish
CREATE TABLE books (
id ..., -- birlamchi kalit (pastda)
title varchar(200) NOT NULL,
author varchar(100) NOT NULL,
year int,
price decimal(10, 2) DEFAULT 0,
isbn varchar(20) UNIQUE
);Har bir ustun: nomi, turi va kerak bo‘lsa cheklovlar.
Asosiy turlar
| Tur | Nima saqlaydi | Misol |
|---|---|---|
int / bigint |
butun son | 42 |
decimal(p, s) |
aniq kasr son (pul uchun) | 18000.50 |
varchar(n) |
n tagacha belgili matn | 'Otabek' |
text |
uzun matn | maqola |
date |
sana | '2026-11-14' |
boolean |
ha / yo‘q | true |
PostgreSQL’da sana-vaqt — timestamp, kasr — numeric (decimal ham ishlaydi).
Pul uchun hech qachon
floatishlatmang: u taxminiy son,0.1 + 0.20.30000000000000004bo‘lib chiqishi mumkin. Pul —decimal.
Avtomatik raqam: birlamchi kalit
id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEYEski usul serial ham ishlaydi: id serial PRIMARY KEY.
Raqamni baza o‘zi qo‘yadi: 1, 2, 3… INSERT da id ni yozish shart emas.
Cheklovlar
| Cheklov | Ma’nosi |
|---|---|
NOT NULL |
bo‘sh bo‘lishi mumkin emas |
UNIQUE |
takrorlanmasin |
DEFAULT x |
qiymat berilmasa — x |
CHECK (shart) |
shart bajarilsin: CHECK (price >= 0) |
PRIMARY KEY |
NOT NULL + UNIQUE, qatorning raqami |
REFERENCES |
tashqi kalit |
Tashqi kalit
CREATE TABLE loans (
id bigint PRIMARY KEY ...,
book_id bigint NOT NULL,
reader varchar(100) NOT NULL,
taken_at date NOT NULL DEFAULT CURRENT_DATE,
FOREIGN KEY (book_id) REFERENCES books (id)
);Qoidalar:
- ota jadval (
books) avval yaratiladi; - tashqi kalit ustunining turi ota kalit turi bilan bir xil bo‘ladi (
bigint↔bigint); - mavjud bo‘lmagan kitobni berib bo‘lmaydi, berilgan kitobni o‘chirib bo‘lmaydi.
Jadval tuzilishini ko‘rish
\d books — ustunlar, turlar, kalitlar. Jadvallar ro‘yxati — \dt.
Mashq
Erkin rejimda kutubxona bazasini yarating va unda books hamda loans jadvallarini yuqoridagidek quring. Keyin mavjud bo‘lmagan book_id bilan qator qo‘shib ko‘ring — baza qanday xato berishini ko‘ring. Bosqichma-bosqich mashq uchun Mashq bo‘limidagi 2- va 4-bosqichlar aynan shu mavzuda.
Esda qoldiring
CREATE TABLE nom (ustun tur cheklovlar, …);- Pul —
decimal, sana —date, matn —varchar(n). - Tashqi kalitni MySQL’da ham, PostgreSQL’da ham alohida
FOREIGN KEYqatori bilan yozing.