INSERT, UPDATE, DELETE
198 daq
Jadval tayyor bo‘lgach, unga ma’lumot qo‘shiladi, o‘zgartiriladi va o‘chiriladi. Bu uch buyruq — INSERT, UPDATE, DELETE — SELECT bilan birga kundalik ishning asosi. Ularni Erkin rejimda sinab ko‘ring.
INSERT — qo‘shish
INSERT INTO books (title, author, year, price)
VALUES ('O‘tkan kunlar', 'Abdulla Qodiriy', 1926, 65000);- qavs ichida — qaysi ustunlarga;
VALUESichida — xuddi shu tartibda qiymatlar;idni yozmaymiz — baza o‘zi qo‘yadi.
Bir nechta qatorni bittada:
INSERT INTO books (title, author, year) VALUES
('Mehrobdan chayon', 'Abdulla Qodiriy', 1929),
('Kecha va kunduz', 'Cho‘lpon', 1936);Ustunlar ro‘yxatini doim yozing.
INSERT INTO books VALUES (…)jadvaldagi barcha ustunlarni aynan tartibi bilan kutadi — jadvalga ustun qo‘shilsa, bunday so‘rovlar buziladi.
Matnda apostrof bo‘lsa, uni ikki marta yozing: 'O''tkan kunlar'. Bizning misollarda tutuq belgisi (‘) ishlatilgan — u qo‘shtirnoq emas, shuning uchun muammo yo‘q.
UPDATE — o‘zgartirish
UPDATE books SET price = 70000 WHERE id = 1;Bir nechta ustun: SET price = 70000, year = 1925. Eski qiymat asosida hisoblash ham mumkin:
UPDATE books SET price = price * 1.1 WHERE author = 'Abdulla Qodiriy';DELETE — o‘chirish
DELETE FROM books WHERE year < 1900;Eng xavfli xato: WHERE ni unutish
UPDATE books SET price = 0; -- HAMMA kitob bepul bo‘lib qoldi!
DELETE FROM books; -- HAMMA kitob o‘chdi!Yaxshi odat: UPDATE yoki DELETE dan oldin xuddi shu WHERE bilan SELECT yozib, qaysi qatorlarga ta’sir qilishini ko‘ring:
SELECT * FROM books WHERE year < 1900; -- avval tekshiramiz
DELETE FROM books WHERE year < 1900; -- keyin o‘chiramizYana bir himoya — tranzaksiya: BEGIN; … tekshirish … COMMIT; yoki ROLLBACK;. Bu haqda «Tranzaksiyalar» darsida.
Nechta qatorga ta’sir qildi?
psql javobida: UPDATE 3, DELETE 1, INSERT 0 2 (oxirgi son — qo‘shilgan qatorlar).
Qo‘shilgan qatorning raqami
PostgreSQL’da RETURNING: INSERT INTO books (title, author) VALUES ('…', '…') RETURNING id; — yangi id darhol qaytadi.
Mashq
«Mashq» bo‘limidagi 3-bosqich (INSERT) va 6-bosqich (UPDATE, DELETE) shu mavzuga bag‘ishlangan. 6-bosqichda WHERE ni unutsangiz, trenajor bazani avvalgi holatiga qaytarib, nima bo‘lganini tushuntiradi.
Esda qoldiring
INSERT INTO jadval (ustunlar) VALUES (…);UPDATE jadval SET ustun = qiymat WHERE shart;DELETE FROM jadval WHERE shart;—WHEREsiz hamma qatorga ta’sir qiladi.