Ma'lumotlarni yangilash
Kirish: ushbu darsda siz jadvaldagi bir yoki bir nechta qatorlardagi ma'lumotlarni yangilash uchun PostgreSQL UPDATE buyrug'idan qanday foydalanishni o'rganasiz.
Jadvaldagi ma'lumotlarni yangilash uchun PostgreSQL UPDATE buyrug'idan foydalanasiz. Mana UPDATE buyrug'ining sintaksisi:
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
Ushbu sintaksisda:
UPDATE kalit so'zidan keyin ma'lumotlarini yangilamoqchi bo'lgan jadval nomini ko'rsating.SET bandida ustun nomlari va yangi qiymatlarni bering.WHERE bandida shartni ko'rsating. UPDATE buyrug'i faqat shartni qanoatlantirgan qatorlarni yangilaydi.WHERE bandi ixtiyoriy (optional). Agar WHERE bandini tushirib qoldirsangiz, UPDATE buyrug'i jadvaldagi barcha qatorlarning ustunlarini yangilaydi:
UPDATE table_name
SET column1 = value1, column2 = value2, ...;
WHERE bandini unutish kutilmagan o'zgarishlarga olib kelishi mumkin, chunki UPDATE buyrug'i jadvaldagi har bir qatorni yangilab yuboradi. Ushbu xavfning oldini olish uchun har doim siz yangilamoqchi bo'lgan qatorlarni aniq ko'rsatadigan WHERE bandini qo'shishingiz kerak.
UPDATE buyrug'i mijozga yangilangan qatorlar sonini qaytaradi.
Biz inventories jadvalidagi ma'lumotlarni yangilaymiz:
CREATE TABLE inventories (
name VARCHAR(255),
brand VARCHAR(50),
quantity INT,
price DECIMAL(19, 2)
);
INSERT INTO inventories (name, brand, quantity, price)
VALUES
('iPhone 14 Pro', 'Apple', 10, 999.99),
('Galaxy S23 Ultra', 'Samsung', 15, 1199.99),
('Pixel 7 Pro', 'Google', 8, 899.99),
('Xperia 1 IV', 'Sony', 7, 1299.99);
Quyidagi misolda UPDATE buyrug'i yordamida "iPhone 14 Pro" nomli mahsulotning soni (quantity) 30 ga o'zgartiriladi:
UPDATE inventories
SET
quantity = 30
WHERE
name = 'iPhone 14 Pro';
Natija:
UPDATE 1
Chiqarilgan natija UPDATE buyrug'i bitta qatorni muvaffaqiyatli yangilaganini bildiradi. Yangilanishni tekshirish uchun inventories jadvalidan ma'lumotlarni olishingiz mumkin:
SELECT
name,
quantity
FROM
inventories
WHERE
name = 'iPhone 14 Pro';
Natija:
name | quantity
---------------+----------
iPhone 14 Pro | 30
Quyidagi misolda UPDATE buyrug'i narxni 0.9 ga (90%) ko'paytirish orqali barcha mahsulotlarning narxini 10% ga kamaytiradi:
UPDATE inventories
SET
price = price * 0.9;
Natija:
UPDATE 4
Biz ushbu misolda WHERE bandidan foydalanmadik, shuning uchun buyruq barcha qatorlarni yangiladi. Natija UPDATE buyrug'i inventories jadvalidagi to'rtta qatorni yangilaganini ko'rsatadi.
Quyidagi SELECT so'rovi inventories jadvalidan barcha qatorlarni oladi:
SELECT
name,
price
FROM
inventories;
Natija:
name | price
------------------+---------
Galaxy S23 Ultra | 1079.99
Pixel 7 Pro | 809.99
Xperia 1 IV | 1169.99
iPhone 14 Pro | 899.99
Natija buyruqning barcha narxlarni muvaffaqiyatli yangilaganini ko'rsatadi.
UPDATE buyrug'i yangilangan qatorlarni qaytaruvchi RETURNING bandini taqdim etadi:
UPDATE table_name
SET
column1 = value1,
column2 = value2
WHERE
condition
RETURNING
column1, column2;
RETURNING bandi ushbu bandda ko'rsatilgan ustunlarni o'z ichiga olgan yangilangan qatorlarni qaytaradi.
Agar siz yangilangan qatorning barcha ustunlarini qaytarmoqchi bo'lsangiz, RETURNING bandida yulduzcha (*) belgisidan foydalanishingiz mumkin. Bu ustunlarni birma-bir sanab o'tmasdan barchasini qaytarishning qulay usulidir:
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition
RETURNING *;
Quyidagi misolda UPDATE buyrug'i "iPhone 14 Pro" mahsulotining narxini 750 ga yangilaydi va yangilangan qatorni qaytaradi:
UPDATE inventories
SET
price = 750
WHERE
name = 'iPhone 14 Pro'
RETURNING *;
Natija:
name | brand | quantity | price
---------------+-------+----------+--------
iPhone 14 Pro | Apple | 30 | 750.00
UPDATE buyrug'idan foydalaning.WHERE bandini tushirib qoldirish jadvaldagi barcha qatorlarni yangilaydi.RETURNING bandidan foydalaning.