Để 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:
Cú pháp cơ bản
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.
Ví dụ 1: Xóa một hàng theo điều kiện
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
.
Ví dụ 2: Xóa nhiều hàng theo điều kiện
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.
<pre class="wp-block-syntaxhighlighter-code">DELETE FROM customers
WHERE last_purchase_date < '2023-01-01';</pre>
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
.
Ví dụ 3: Xóa tất cả các hàng
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
.
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.
Ví dụ 4: Xóa bằng cách sử dụng truy vấn con
Bạn có thể xóa dựa trên kết quả của một truy vấn con.
<pre class="wp-block-syntaxhighlighter-code">DELETE FROM customers
WHERE id IN (
SELECT customer_id FROM orders WHERE order_date < '2023-01-01'
);</pre>
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 ý:
- Hãy luôn cẩn thận khi sử dụng lệnh
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.
- Để kiểm tra trước khi xóa, bạn có thể sử dụng lệnh
SELECT
với cùng điều kiện WHERE
để xem các hàng sẽ bị xóa.