10 / 100

UPDATE

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.


PostgreSQL UPDATE buyrug'iga kirish

Jadvaldagi ma'lumotlarni yangilash uchun PostgreSQL UPDATE buyrug'idan foydalanasiz. Mana UPDATE buyrug'ining sintaksisi:

query.sql
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

Ushbu sintaksisda:

  • Birinchi, UPDATE kalit so'zidan keyin ma'lumotlarini yangilamoqchi bo'lgan jadval nomini ko'rsating.
  • Ikkinchi, SET bandida ustun nomlari va yangi qiymatlarni bering.
  • Uchinchi, qaysi qatorlarni yangilash kerakligini aniqlash uchun 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:

query.sql
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.


Namunaviy jadvalni tayyorlash

Biz inventories jadvalidagi ma'lumotlarni yangilaymiz:

query.sql
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);

Jadvaldagi bitta qatorni yangilash misoli

Quyidagi misolda UPDATE buyrug'i yordamida "iPhone 14 Pro" nomli mahsulotning soni (quantity) 30 ga o'zgartiriladi:

query.sql
UPDATE inventories
SET
  quantity = 30
WHERE
  name = 'iPhone 14 Pro';

Natija:

query.sql
UPDATE 1

Chiqarilgan natija UPDATE buyrug'i bitta qatorni muvaffaqiyatli yangilaganini bildiradi. Yangilanishni tekshirish uchun inventories jadvalidan ma'lumotlarni olishingiz mumkin:

query.sql
SELECT
  name,
  quantity
FROM
  inventories
WHERE
  name = 'iPhone 14 Pro';

Natija:

query.sql
     name      | quantity
---------------+----------
 iPhone 14 Pro |       30

Jadvaldagi barcha qatorlarni yangilash

Quyidagi misolda UPDATE buyrug'i narxni 0.9 ga (90%) ko'paytirish orqali barcha mahsulotlarning narxini 10% ga kamaytiradi:

query.sql
UPDATE inventories
SET
  price = price * 0.9;

Natija:

query.sql
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:

query.sql
SELECT
  name,
  price
FROM
  inventories;

Natija:

query.sql
       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.


Yangilangan qatorlarni qaytarish (RETURNING)

UPDATE buyrug'i yangilangan qatorlarni qaytaruvchi RETURNING bandini taqdim etadi:

query.sql
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:

query.sql
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:

query.sql
UPDATE inventories
SET
  price = 750
WHERE
  name = 'iPhone 14 Pro'
RETURNING *;

Natija:

query.sql
     name      | brand | quantity | price
---------------+-------+----------+--------
 iPhone 14 Pro | Apple |       30 | 750.00

Xulosa

  • Jadvaldagi ma'lumotlarni yangilash uchun UPDATE buyrug'idan foydalaning.
  • WHERE bandini tushirib qoldirish jadvaldagi barcha qatorlarni yangilaydi.
  • Yangilangan qatorlarni qaytarish uchun RETURNING bandidan foydalaning.
QBilimingizni sinab ko'ring
1 / 5

1. UPDATE buyrug'ida WHERE bandi yozilmasa nima sodir bo'ladi?