Để xóa một hàng từ một bảng trong PostgreSQL, bạn sử dụng câu lệnh DELETE
. Câu lệnh này sẽ xóa các hàng thỏa mãn điều kiện trong mệnh đề WHERE
. Dưới đây là cú pháp cơ bản và các ví dụ chi tiết:
DELETE FROM table_name WHERE condition;
table_name
: Tên bảng mà bạn muốn xóa hàng.condition
: Điều kiện để xác định các hàng sẽ bị xóa. Nếu không có mệnh đề WHERE
, tất cả các hàng trong bảng sẽ bị xóa.Giả sử bạn có một bảng customers
và bạn muốn xóa một khách hàng cụ thể theo ID của họ.
DELETE FROM customers WHERE id = 5;
Câu lệnh này sẽ xóa hàng có id = 5
trong bảng customers
.
Bạn cũng có thể xóa nhiều hàng cùng lúc bằng cách sử dụng điều kiện phù hợp.
DELETE FROM customers WHERE last_purchase_date < '2023-01-01';
Câu lệnh này sẽ xóa tất cả các khách hàng có ngày mua cuối cùng trước ngày 01/01/2023
.
Nếu bạn muốn xóa tất cả các hàng trong bảng, chỉ cần bỏ qua mệnh đề WHERE
.
DELETE FROM customers;
Câu lệnh này sẽ xóa toàn bộ dữ liệu trong bảng customers
, nhưng giữ nguyên cấu trúc bảng. Nếu bạn muốn xóa toàn bộ dữ liệu nhưng làm nhanh hơn, có thể sử dụng lệnh TRUNCATE
:
TRUNCATE TABLE customers;
Lệnh TRUNCATE
có tốc độ nhanh hơn DELETE
khi xóa tất cả dữ liệu trong bảng, nhưng nó không kích hoạt các trigger và không trả về số lượng hàng đã xóa.
Bạn có thể xóa dựa trên kết quả của một truy vấn con.
DELETE FROM customers WHERE id IN ( SELECT customer_id FROM orders WHERE order_date < '2023-01-01' );
Câu lệnh này sẽ xóa tất cả các khách hàng đã thực hiện đơn hàng trước ngày 01/01/2023
.
Lưu ý:
DELETE
, đặc biệt là khi không sử dụng mệnh đề WHERE
, vì nó sẽ xóa toàn bộ dữ liệu trong bảng.SELECT
với cùng điều kiện WHERE
để xem các hàng sẽ bị xóa.