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 พิจารณาตารางราคาที่มีข้อมูลต่อไปนี้:

ค่าสมัครเรียน

PostgreSQL ลบแบบสอบถามที่มีเงื่อนไขเดียว

ให้เราลบบันทึกด้วยรหัส 4:

DELETE FROM Price
WHERE id = 4;

คำสั่งดังกล่าวจะลบบันทึกที่มี ID 4 ให้เรายืนยันว่าการลบสำเร็จหรือไม่:

PostgreSQL ลบแบบสอบถามที่มีเงื่อนไขเดียว

ลบแถวที่มีรหัส 4 แล้ว

ลบแบบสอบถามที่มีสองเงื่อนไข

เหตุการณ์ PostgreSQL คำสั่ง DELETE สามารถรับเงื่อนไขได้ 2 เงื่อนไข โดยจะต้องเชื่อมเงื่อนไขทั้งสองเข้าด้วยกันโดยใช้ตัวดำเนินการ AND เราจะใช้ตารางต่อไปนี้:

ราคา:

PostgreSQL ลบแบบสอบถามที่มีสองเงื่อนไข

ลองพิจารณาตัวอย่างที่ให้ไว้ด้านล่าง:

DELETE FROM Price
WHERE id = 3Y
AND price = 300;

ในคำสั่งข้างต้น เรากำลังลบแถวที่มี id เป็น 3 และราคาคือ 300 ตอนนี้เราสามารถสืบค้นตารางได้แล้ว:

SELECT * FROM Price

สิ่งนี้จะส่งคืนสิ่งต่อไปนี้:

PostgreSQL ลบแบบสอบถามที่มีสองเงื่อนไข

บันทึกที่มี ID 3 และราคา 300 ถูกลบไปแล้ว

PostgreSQL ลบแบบสอบถามโดยใช้เงื่อนไขที่มีอยู่

ด้วยเงื่อนไข EXISTS คุณสามารถทำให้ DELETE ซับซ้อนมากขึ้นได้ บางครั้งอาจจำเป็นต้องลบระเบียนในตารางหนึ่งตามระเบียนในตารางอื่น

คุณจะเห็นว่าคำสั่ง FROM ไม่อนุญาตให้คุณแสดงรายการจากตารางมากกว่าหนึ่งตารางเมื่อทำการลบ คำสั่ง EXISTS จึงมีประโยชน์มาก เรามีตารางสองตารางดังต่อไปนี้:

หนังสือ:

PostgreSQL ลบแบบสอบถามโดยใช้เงื่อนไขที่มีอยู่

ราคา:

PostgreSQL ลบแบบสอบถามโดยใช้เงื่อนไขที่มีอยู่

จากนั้นเราสามารถรันแบบสอบถามต่อไปนี้ได้:

DELETE FROM Book
WHERE EXISTS
  (SELECT 1
    FROM Price
    WHERE Price.id = Book.id
    AND price < 250 );

คำสั่งดังกล่าวจะลบออกจากตาราง Book ซึ่งมีบันทึกอยู่ในตารางราคาซึ่งมีรหัสตรงกับตาราง Book และราคาต่ำกว่า 250

ขณะนี้ตารางหนังสือเป็นดังนี้:

PostgreSQL ลบแบบสอบถามโดยใช้เงื่อนไขที่มีอยู่

บันทึกที่มีรหัส 1 ถูกลบแล้ว

วิธีการลบแถวใน PostgreSQL โดยใช้ pgAdmin

ต่อไปนี้เป็นขั้นตอนในการลบแถวใน PostgreSQL ใช้ pgAdmin:

โดยมีเงื่อนไขเดียว

หากต้องการบรรลุผลเช่นเดียวกันผ่าน pgAdmin ให้ทำดังนี้:

ขั้นตอนที่ 1) เข้าสู่ระบบบัญชี pgAdmin ของคุณ

เปิด pgAdmin และเข้าสู่ระบบบัญชีของคุณโดยใช้ข้อมูลประจำตัวของคุณ

ขั้นตอนที่ 2) สร้างฐานข้อมูลสาธิต

  1. จากแถบนำทางทางด้านซ้ายให้คลิกฐานข้อมูล
  2. คลิกสาธิต

ลบแถวใน PostgreSQL

ขั้นตอนที่ 3) พิมพ์แบบสอบถาม

พิมพ์แบบสอบถามด้านล่างในตัวแก้ไขแบบสอบถาม:

DELETE FROM Price
WHERE id = 4;

ขั้นตอนที่ 4) ดำเนินการแบบสอบถาม

คลิกปุ่มดำเนินการ

ลบแถวใน PostgreSQL

ขั้นตอนที่ 5) ตรวจสอบว่าแถวถูกลบหรือไม่

ให้เราตรวจสอบว่าการลบสำเร็จหรือไม่:

ลบแถวใน PostgreSQL

ด้วยสองเงื่อนไข

หากต้องการบรรลุผลเช่นเดียวกันผ่าน pgAdmin ให้ทำดังนี้:

ขั้นตอน 1) เข้าสู่ระบบบัญชี pgAdmin ของคุณ

ขั้นตอน 2)

  1. จากแถบนำทางทางด้านซ้ายให้คลิกฐานข้อมูล
  2. คลิกสาธิต

ลบแถวใน PostgreSQL

ขั้นตอน 3) พิมพ์แบบสอบถามในตัวแก้ไขแบบสอบถาม:

DELETE FROM Price
WHERE id = 3
AND price = 300;

ขั้นตอน 4) คลิกปุ่มดำเนินการ

ลบแถวใน PostgreSQL

ขั้นตอน 5) ให้เราตรวจสอบว่าการลบสำเร็จหรือไม่:

ลบแถวใน PostgreSQL

การใช้เงื่อนไขที่มีอยู่

หากต้องการบรรลุผลเช่นเดียวกันผ่าน pgAdmin ให้ทำดังนี้:

ขั้นตอน 1) เข้าสู่ระบบบัญชี pgAdmin ของคุณ

ขั้นตอน 2)

  1. จากแถบนำทางทางด้านซ้ายให้คลิกฐานข้อมูล
  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
  • เหตุการณ์ มีอยู่ เงื่อนไขสามารถช่วยให้เราลบบันทึกออกจากตารางโดยอิงตามบันทึกของตารางอื่นได้

ดาวน์โหลดฐานข้อมูลที่ใช้ในบทช่วยสอนนี้