DML β€” Data Manipulation Language β€” ma'lumotlarni boshqarish buyruqlari.

INSERT β€” Qo'shish

-- Bitta qator
INSERT INTO talabalar (ism, email, ball)
VALUES ('Sherali Rahimov', 'sherali@mail.uz', 92);

-- Bir necha qator
INSERT INTO talabalar (ism, email, ball) VALUES
    ('Aziza Karimova', 'aziza@mail.uz', 88),
    ('Bobur Toshmatov', 'bobur@mail.uz', 76),
    ('Nilufar Yusupova', 'nilufar@mail.uz', 95);

-- Boshqa jadvaldan ko'chirish
INSERT INTO talabalar_arxiv (ism, email, ball)
SELECT ism, email, ball FROM talabalar
WHERE yaratildi < '2025-01-01';

UPDATE β€” Yangilash

-- Bitta ustun
UPDATE talabalar SET ball = 95 WHERE id = 1;

-- Bir necha ustun
UPDATE talabalar
SET ball = 90, shahar = 'Samarqand', yangilandi = NOW()
WHERE email = 'sherali@mail.uz';

-- Hisob-kitob bilan
UPDATE xodimlar SET maosh = maosh * 1.15
WHERE lavozim = 'Dasturchi';

-- JOIN bilan yangilash
UPDATE talabalar t
SET kurs_id = k.id
FROM kurslar k
WHERE k.nom = 'Python' AND t.email LIKE '%@example.com';

DELETE β€” O'chirish

-- Shart bilan o'chirish
DELETE FROM talabalar WHERE ball < 50;

-- Barcha qatorlarni o'chirish (sekin)
DELETE FROM talabalar;

-- TRUNCATE β€” tez tozalash
TRUNCATE TABLE talabalar;
TRUNCATE TABLE talabalar RESTART IDENTITY; -- ID ni 1 dan boshlaydi

UPSERT β€” Qo'shish yoki yangilash

-- PostgreSQL
INSERT INTO talabalar (email, ism, ball)
VALUES ('sherali@mail.uz', 'Sherali', 90)
ON CONFLICT (email) DO UPDATE
SET ism = EXCLUDED.ism,
    ball = EXCLUDED.ball,
    yangilandi = NOW();

-- Agar mavjud bo'lsa hech narsa qilma
INSERT INTO talabalar (email, ism)
VALUES ('sherali@mail.uz', 'Sherali')
ON CONFLICT (email) DO NOTHING;

RETURNING β€” Natijani qaytarish

-- Kiritilgan qatorni qaytarish
INSERT INTO talabalar (ism, email)
VALUES ('Yangi Talaba', 'yangi@mail.uz')
RETURNING id, ism, yaratildi;

-- O'chirilgan qatorlarni ko'rish
DELETE FROM talabalar WHERE ball < 50
RETURNING id, ism, ball;