Ma'lumotlar bazasi loyihasini to'g'ri tuzish β€” har qanday dastur uchun asos.

Ma'lumot turlari

-- Sonlar
INT, BIGINT, SMALLINT       -- butun sonlar
DECIMAL(10, 2), NUMERIC     -- aniq sonlar
FLOAT, REAL, DOUBLE         -- haqiqiy sonlar

-- Matn
VARCHAR(255)                -- o'zgaruvchan uzunlik
CHAR(10)                    -- qat'iy uzunlik
TEXT                        -- cheklanmagan matn

-- Vaqt
DATE                        -- 2026-06-16
TIME                        -- 14:30:00
TIMESTAMP                   -- 2026-06-16 14:30:00
TIMESTAMPTZ                 -- vaqt mintaqasi bilan

-- Boshqa
BOOLEAN                     -- TRUE/FALSE
UUID                        -- universally unique id
JSON, JSONB                 -- JSON ma'lumot

CREATE TABLE

CREATE TABLE talabalar (
    id          BIGSERIAL PRIMARY KEY,
    ism         VARCHAR(100) NOT NULL,
    familya     VARCHAR(100) NOT NULL,
    email       VARCHAR(255) UNIQUE NOT NULL,
    telefon     VARCHAR(20),
    tug'ilgan   DATE,
    yosh        INT CHECK (yosh >= 14 AND yosh <= 100),
    shahar      VARCHAR(50) DEFAULT 'Toshkent',
    kurs_id     INT REFERENCES kurslar(id) ON DELETE SET NULL,
    faol        BOOLEAN DEFAULT TRUE,
    yaratildi   TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    yangilandi  TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

ALTER TABLE β€” jadvalni o'zgartirish

-- Ustun qo'shish
ALTER TABLE talabalar ADD COLUMN manzil TEXT;

-- Ustun o'chirish
ALTER TABLE talabalar DROP COLUMN manzil;

-- Ustun turini o'zgartirish
ALTER TABLE talabalar ALTER COLUMN telefon TYPE VARCHAR(30);

-- NOT NULL qo'shish
ALTER TABLE talabalar ALTER COLUMN email SET NOT NULL;

-- Default qiymat
ALTER TABLE talabalar ALTER COLUMN shahar SET DEFAULT 'Toshkent';

Cheklovlar (Constraints)

-- Cheklov qo'shish
ALTER TABLE talabalar
ADD CONSTRAINT chk_yosh CHECK (yosh BETWEEN 14 AND 100);

ALTER TABLE talabalar
ADD CONSTRAINT fk_kurs FOREIGN KEY (kurs_id)
REFERENCES kurslar(id) ON DELETE CASCADE;

Jadval nusxasi

-- Tuzilmani nusxalash
CREATE TABLE talabalar_arxiv AS
SELECT * FROM talabalar WHERE FALSE;

-- Tuzilma va ma'lumotlarni nusxalash
CREATE TABLE talabalar_backup AS
SELECT * FROM talabalar;