To'g'ri ma'lumot turlarini tanlash va cheklovlar qo'yish yaxlitlikni ta'minlaydi.
Asosiy ma'lumot turlari
-- Butun sonlar
SMALLINT -- -32,768 dan 32,767
INTEGER -- -2B dan 2B
BIGINT -- juda katta sonlar
SERIAL -- avtomatik oshuvchi
-- Kasr sonlar
DECIMAL(10,2) -- 10 ta raqam, 2 ta kasr
NUMERIC(10,2) -- DECIMAL bilan bir xil
REAL -- 6 ta aniqlik
DOUBLE PRECISION -- 15 ta aniqlik
-- Matn
VARCHAR(100) -- maksimal 100 belgi
TEXT -- cheksiz matn
CHAR(10) -- aniq 10 belgi
-- Sana/vaqt
DATE -- 2024-01-15
TIME -- 14:30:00
TIMESTAMP -- 2024-01-15 14:30:00
TIMESTAMPTZ -- vaqt mintaqasi bilan
-- Boshqalar
BOOLEAN -- TRUE/FALSE
UUID -- noyob identifikator
JSONB -- JSON (indekslanadi)
Cheklovlar
CREATE TABLE talabalar (
id SERIAL PRIMARY KEY,
ism VARCHAR(100) NOT NULL,
email VARCHAR(200) UNIQUE NOT NULL,
yosh INTEGER CHECK (yosh BETWEEN 14 AND 80),
kurs_id INTEGER REFERENCES kurslar(id) ON DELETE SET NULL,
yaratilgan TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Cheklov qo'shish va o'chirish
-- Cheklov qo'shish
ALTER TABLE talabalar ADD CONSTRAINT chk_yosh CHECK (yosh > 0);
-- Cheklov o'chirish
ALTER TABLE talabalar DROP CONSTRAINT chk_yosh;
-- Ustun qo'shish
ALTER TABLE talabalar ADD COLUMN telefon VARCHAR(20);
-- Ustun o'chirish
ALTER TABLE talabalar DROP COLUMN telefon;