Bài học theo mô-đun (2/4)
Cập nhật và xóa: UPDATE và DELETE
UPDATE sửa đổi các hàng hiện có; DELETE xóa chúng. Cả hai đều chia sẻ
quy tắc vàng, cơ bản, tương tự: mệnh đề WHERE quyết định hàng nào
để chạm vào. Quên nó có nghĩa là sửa đổi/xóa toàn bộ bảng.
CẬP NHẬT
UPDATE tabella
SET colonna1 = nuovo_valore,
colonna2 = altra_espressione
WHERE condizione;Ví dụ:
-- Aumenta del 10% i prezzi di tutti i prodotti della categoria 5 (Computer):
UPDATE products
SET price = price * 1.10
WHERE category_id = 5;
-- Aggiorna due colonne contemporaneamente:
UPDATE orders
SET status = 'shipped',
shipped_at = NOW()
WHERE id = 12;SET col = espressione: biểu thức có thể tham chiếu hiện tại của hàng
giá trị (price * 1.10) và cũng có thể sử dụng NOW(), NULL hoặc
truy vấn phụ.
XÓA BỎ
DELETE FROM tabella
WHERE condizione;Ví dụ:
-- Cancella tutte le recensioni con rating < 3:
DELETE FROM reviews
WHERE rating < 3;
-- Cancella un ordine specifico:
DELETE FROM orders WHERE id = 999;TRỞ LẠI ở đây quá
Giống như INSERT, UPDATE và DELETE cũng chấp nhận RETURNING nên bạn biết đấy
những gì họ đã hành động:
DELETE FROM reviews
WHERE rating < 3
RETURNING id, customer_id, rating;Hữu ích cho việc đăng nhập một lần những gì đã bị xóa/sửa đổi.
Khóa ngoại và xóa
Đang cố gắng xóa một hàng được tham chiếu bởi một bảng khác thông qua khóa ngoại tạo ra một lỗi:
DELETE FROM customers WHERE id = 1;
-- ERROR: update or delete on table "customers" violates foreign key constraint
-- on table "orders"Giải pháp: xóa các hàng con trước hoặc xác định FK bằng
ON DELETE CASCADE khi bạn tạo bảng (chúng tôi sẽ đề cập đến vấn đề này trong
bài học DDL tiếp theo).
Đến lượt bạn
Tăng 10% giá của mỗi sản phẩm thuộc loại 5 (Máy tính). Một câu lệnh CẬP NHẬT duy nhất.
Hiển thị gợi ý
Biểu thức ở bên phải của SET có thể tham chiếu đến chính cột đó: giá * 1.10.
Giải pháp khả dụng sau 3 lần thử
Xem lại bài tập
Xóa mọi đánh giá có xếp hạng thấp hơn 3 (đánh giá rất tiêu cực).
Hiển thị gợi ý
Đánh giá ở đâu < 3.
Giải pháp khả dụng sau 3 lần thử