11 / 100

DELETE

Ma'lumotlarni o'chirish

Kirish: ushbu darsda siz jadvaldan bir yoki bir nechta qatorlarni o'chirish uchun PostgreSQL DELETE buyrug'idan qanday foydalanishni o'rganasiz.


PostgreSQL DELETE buyrug'i

PostgreSQL DELETE buyrug'i jadvaldan bir yoki bir nechta qatorlarni butunlay olib tashlaydigan kuchli vositadir. Mana DELETE buyrug'ining sintaksisi:

query.sql
DELETE FROM table_name
WHERE condition;

Ushbu sintaksisda:

  • Birinchi, DELETE FROM bandida qatorlarini o'chirmoqchi bo'lgan jadval nomini ko'rsating.
  • Ikkinchi, qaysi qatorlarni o'chirishni filtrlash uchun WHERE bandida shartni bering.

WHERE bandi ixtiyoriy bo'lgani sababli, siz uni DELETE buyrug'ida tushirib qoldirishingiz mumkin. Bunday holda, DELETE buyrug'i jadvaldagi barcha qatorlarni o'chirib yuboradi.

Agar WHERE bandidagi shartga hech qanday qator mos kelmasa, DELETE buyrug'i jadvaldan hech qanday qatorni o'chirmaydi.

PostgreSQL DELETE buyrug'i o'chirilgan qatorlar sonini qaytaradi:

query.sql
DELETE count;

Agar count nolga teng bo'lsa, DELETE buyrug'i jadvaldan hech qanday qatorni o'chirmagan bo'ladi.


Namunaviy jadvalni sozlash

Biz inventories jadvalidan qatorlarni o'chiramiz:

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);

Jadvaldan bitta qatorni o'chirish

Quyidagi so'rov inventories jadvalidan bitta qatorni o'chirish uchun DELETE buyrug'idan foydalanadi:

query.sql
DELETE FROM inventories
WHERE name = 'iPhone 14 Pro';

Natija:

query.sql
DELETE 1

Ushbu misolda WHERE bandidagi shart bitta qatorga to'g'ri keladi. Shuning uchun DELETE buyrug'i faqat o'sha qatorni o'chiradi. Natija DELETE buyrug'i bitta qatorni muvaffaqiyatli o'chirganini bildiradi.


Jadvaldagi barcha qatorlarni o'chirish

Quyidagi so'rov inventories jadvalidan barcha qatorlarni o'chirish uchun DELETE buyrug'idan foydalanadi:

query.sql
DELETE FROM inventories;

Ushbu DELETE buyrug'i WHERE bandidan foydalanmaydi, shuning uchun u inventories jadvalidagi qolgan barcha qatorlarni olib tashlaydi. Bu jadvalni butunlay tozalashni xohlaganingizda, masalan, unga yangi ma'lumotlarni qayta kiritishdan oldin foydali bo'lishi mumkin.

Natija:

query.sql
DELETE 3

Natija DELETE buyrug'i inventories jadvalidan uchta qatorni olib tashlaganini ko'rsatadi.


O'chirilgan qatorlarni qaytarish (RETURNING)

DELETE buyrug'i o'chirilgan qatorlarni qaytaruvchi ixtiyoriy RETURNING bandiga ega:

query.sql
DELETE FROM table_name
WHERE condition
RETURNING column1, column2, ...;

Ushbu sintaksisda o'chirilgan qatordan qaytarishni xohlagan ustunlar ro'yxatini vergul bilan ajratib ko'rsating. Agar siz o'chirilgan qatorning barcha ustunlarini qaytarmoqchi bo'lsangiz, yulduzcha (*) belgisidan foydalanishingiz mumkin:

query.sql
DELETE FROM table_name
WHERE condition
RETURNING *;

Misol uchun, birinchi navbatda, inventories jadvaliga yangi qator kiriting:

query.sql
INSERT INTO inventories (name, brand, quantity, price)
VALUES ('iPhone 15 Pro', 'Apple', 5, 1299.99);

Ikkinchi, 'iPhone 15 Pro' mahsulotini o'chiring va o'chirilgan qatorni qaytaring:

query.sql
DELETE FROM inventories
WHERE name = 'iPhone 15 Pro'
RETURNING *;

Natija:

query.sql
     name      | brand | quantity |  price
---------------+-------+----------+---------
 iPhone 15 Pro | Apple |        5 | 1299.99

Xulosa

  • Jadvaldan bir yoki bir nechta qatorlarni o'chirish uchun PostgreSQL DELETE buyrug'idan foydalaning.
  • O'chirilgan qatorlarni mijozga qaytarish uchun RETURNING bandidan foydalaning.
QBilimingizni sinab ko'ring
1 / 5

1. DELETE buyrug'ida WHERE bandi ko'rsatilmasa nima bo'ladi?