PostgreSQL ลบแบบสอบถาม (ลบแถวจากการเลือก)
ลบแบบสอบถามใน PostgreSQL
เหตุการณ์ ลบใบแจ้งยอด in PostgreSQL ใช้เพื่อลบหนึ่งหรือหลายระเบียนออกจากตาราง หากคุณต้องการลบแถวที่เลือกออกจากตาราง PostgreSQL ช่วยให้คุณสามารถรวมคำสั่ง DELETE เข้ากับส่วนคำสั่ง WHERE มิฉะนั้นจะเป็นการลบบันทึกทั้งหมด
Postgres ลบไวยากรณ์แบบสอบถาม
คำสั่ง DELETE สามารถกำหนดได้โดยไวยากรณ์ด้านล่าง:
[ WITH [ RECURSIVE ] with-query [, ...] ] DELETE FROM [ ONLY ] table-name [ * ] [ [ AS ] alias ] [ USING using-list ] [ WHERE condition(s) | WHERE CURRENT OF cursor-name] [ RETURNING * | output-expression [ [ AS ] output-name] [, ...] ]
พารามิเตอร์
- ด้วยแบบสอบถาม: ส่วนคำสั่ง WITH ช่วยให้เราสามารถอ้างอิงหนึ่งหรือหลายแบบสอบถามย่อยที่จะอ้างอิงด้วยชื่อในการสืบค้น DELETE
- ชื่อตาราง: ชื่อของตารางที่ต้องการลบเรคคอร์ด
- นามแฝง: นี่เป็นการทดแทนชื่อของตารางเป้าหมาย
- การใช้รายการ: นิพจน์ตารางเพื่ออนุญาตให้ใช้คอลัมน์จากตารางอื่นในส่วนคำสั่ง WHERE
- เงื่อนไข): ไม่จำเป็น. เป็นเงื่อนไขที่ต้องปฏิบัติตามจึงจะลบบันทึกได้ หากไม่มีการระบุส่วนนี้ บันทึกชื่อตารางทั้งหมดจะถูกลบ
- ชื่อเคอร์เซอร์: เคอร์เซอร์ที่จะใช้ใน WHERE CURRENT OF Condition แถวที่ดึงข้อมูลล่าสุดโดยเคอร์เซอร์นี้จะถูกลบ
- เอาท์พุทแสดงออก: นิพจน์ที่จะประมวลผลและส่งกลับด้วยคำสั่ง DELETE หลังจากลบทุกแถวแล้ว
- ชื่อเอาต์พุต: ชื่อที่จะใช้สำหรับคอลัมน์ที่ส่งคืน
โปรดทราบว่าเนื่องจากคำสั่ง DELETE จะลบทั้งแถว คุณจึงไม่จำเป็นต้องระบุชื่อคอลัมน์
PostgreSQL ลบแบบสอบถามที่มีเงื่อนไขเดียว
คำสั่ง DELETE ใช้ได้กับเงื่อนไขเดียว เงื่อนไขจะถูกกำหนดโดยใช้คำสั่ง WHERE พิจารณาตารางราคาที่มีข้อมูลต่อไปนี้:
ค่าสมัครเรียน
ให้เราลบบันทึกด้วยรหัส 4:
DELETE FROM Price WHERE id = 4;
คำสั่งดังกล่าวจะลบบันทึกที่มี ID 4 ให้เรายืนยันว่าการลบสำเร็จหรือไม่:
ลบแถวที่มีรหัส 4 แล้ว
ลบแบบสอบถามที่มีสองเงื่อนไข
เหตุการณ์ PostgreSQL คำสั่ง DELETE สามารถรับเงื่อนไขได้ 2 เงื่อนไข โดยจะต้องเชื่อมเงื่อนไขทั้งสองเข้าด้วยกันโดยใช้ตัวดำเนินการ AND เราจะใช้ตารางต่อไปนี้:
ราคา:
ลองพิจารณาตัวอย่างที่ให้ไว้ด้านล่าง:
DELETE FROM Price WHERE id = 3Y AND price = 300;
ในคำสั่งข้างต้น เรากำลังลบแถวที่มี id เป็น 3 และราคาคือ 300 ตอนนี้เราสามารถสืบค้นตารางได้แล้ว:
SELECT * FROM Price
สิ่งนี้จะส่งคืนสิ่งต่อไปนี้:
บันทึกที่มี ID 3 และราคา 300 ถูกลบไปแล้ว
PostgreSQL ลบแบบสอบถามโดยใช้เงื่อนไขที่มีอยู่
ด้วยเงื่อนไข EXISTS คุณสามารถทำให้ DELETE ซับซ้อนมากขึ้นได้ บางครั้งอาจจำเป็นต้องลบระเบียนในตารางหนึ่งตามระเบียนในตารางอื่น
คุณจะเห็นว่าคำสั่ง FROM ไม่อนุญาตให้คุณแสดงรายการจากตารางมากกว่าหนึ่งตารางเมื่อทำการลบ คำสั่ง EXISTS จึงมีประโยชน์มาก เรามีตารางสองตารางดังต่อไปนี้:
หนังสือ:
ราคา:
จากนั้นเราสามารถรันแบบสอบถามต่อไปนี้ได้:
DELETE FROM Book WHERE EXISTS (SELECT 1 FROM Price WHERE Price.id = Book.id AND price < 250 );
คำสั่งดังกล่าวจะลบออกจากตาราง Book ซึ่งมีบันทึกอยู่ในตารางราคาซึ่งมีรหัสตรงกับตาราง Book และราคาต่ำกว่า 250
ขณะนี้ตารางหนังสือเป็นดังนี้:
บันทึกที่มีรหัส 1 ถูกลบแล้ว
วิธีการลบแถวใน PostgreSQL โดยใช้ pgAdmin
ต่อไปนี้เป็นขั้นตอนในการลบแถวใน PostgreSQL ใช้ pgAdmin:
โดยมีเงื่อนไขเดียว
หากต้องการบรรลุผลเช่นเดียวกันผ่าน pgAdmin ให้ทำดังนี้:
ขั้นตอนที่ 1) เข้าสู่ระบบบัญชี pgAdmin ของคุณ
เปิด pgAdmin และเข้าสู่ระบบบัญชีของคุณโดยใช้ข้อมูลประจำตัวของคุณ
ขั้นตอนที่ 2) สร้างฐานข้อมูลสาธิต
- จากแถบนำทางทางด้านซ้ายให้คลิกฐานข้อมูล
- คลิกสาธิต
ขั้นตอนที่ 3) พิมพ์แบบสอบถาม
พิมพ์แบบสอบถามด้านล่างในตัวแก้ไขแบบสอบถาม:
DELETE FROM Price WHERE id = 4;
ขั้นตอนที่ 4) ดำเนินการแบบสอบถาม
คลิกปุ่มดำเนินการ
ขั้นตอนที่ 5) ตรวจสอบว่าแถวถูกลบหรือไม่
ให้เราตรวจสอบว่าการลบสำเร็จหรือไม่:
ด้วยสองเงื่อนไข
หากต้องการบรรลุผลเช่นเดียวกันผ่าน pgAdmin ให้ทำดังนี้:
ขั้นตอน 1) เข้าสู่ระบบบัญชี pgAdmin ของคุณ
ขั้นตอน 2)
- จากแถบนำทางทางด้านซ้ายให้คลิกฐานข้อมูล
- คลิกสาธิต
ขั้นตอน 3) พิมพ์แบบสอบถามในตัวแก้ไขแบบสอบถาม:
DELETE FROM Price WHERE id = 3 AND price = 300;
ขั้นตอน 4) คลิกปุ่มดำเนินการ
ขั้นตอน 5) ให้เราตรวจสอบว่าการลบสำเร็จหรือไม่:
การใช้เงื่อนไขที่มีอยู่
หากต้องการบรรลุผลเช่นเดียวกันผ่าน pgAdmin ให้ทำดังนี้:
ขั้นตอน 1) เข้าสู่ระบบบัญชี pgAdmin ของคุณ
ขั้นตอน 2)
- จากแถบนำทางทางด้านซ้ายให้คลิกฐานข้อมูล
- คลิกสาธิต
ขั้นตอน 3) พิมพ์แบบสอบถามในตัวแก้ไขแบบสอบถาม:
DELETE FROM Book WHERE EXISTS (SELECT 1 FROM Price WHERE Price.id = Book.id AND price < 250 );
ขั้นตอน 4) คลิกปุ่มดำเนินการ
ขั้นตอน 5) ให้เราตรวจสอบว่าการลบสำเร็จหรือไม่:
สรุป
- คำสั่ง DELETE ใช้สำหรับลบหนึ่งระเบียนขึ้นไปจากตาราง
- หากต้องการลบเฉพาะแถวที่เลือกออกจากตาราง คุณสามารถรวมคำสั่ง DELETE เข้ากับส่วนคำสั่ง WHERE ได้
- หากใช้ส่วนคำสั่ง DELETE โดยไม่มีส่วนคำสั่ง WHERE จะเป็นการลบระเบียนทั้งหมดออกจากตาราง
- พารามิเตอร์ชื่อตารางช่วยให้คุณสามารถเพิ่มชื่อของตารางที่จะลบบันทึกได้
- เราสามารถใช้คำสั่ง DELETE ได้โดยมีเงื่อนไขเดียว โดยระบุโดยใช้คำสั่งย่อย WHERE
- คำสั่ง DELETE ยังสามารถใช้ได้กับเงื่อนไข 2 ข้อที่ระบุไว้ในคำสั่ง WHERE โดยต้องรวมเงื่อนไขทั้งสองเข้าด้วยกันโดยใช้ตัวดำเนินการ AND
- เหตุการณ์ มีอยู่ เงื่อนไขสามารถช่วยให้เราลบบันทึกออกจากตารางโดยอิงตามบันทึกของตารางอื่นได้
ดาวน์โหลดฐานข้อมูลที่ใช้ในบทช่วยสอนนี้