Chuyển đến nội dung chính
Mô-đun 8 · Bài học 2 trong tổng số 430/57 trong khóa học~10 min
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

SQL
UPDATE tabella
SET    colonna1 = nuovo_valore,
       colonna2 = altra_espressione
WHERE  condizione;

Ví dụ:

SQL
-- 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Ỏ

SQL
DELETE FROM tabella
WHERE  condizione;

Ví dụ:

SQL
-- 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:

SQL
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:

SQL
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ập thể dục#sql.m8.l2.e1
Nỗ lực: 0Đang tải…

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.

Đang tải trình chỉnh sửa…
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

tập thể dục#sql.m8.l2.e2
Nỗ lực: 0Đang tải…

Xóa mọi đánh giá có xếp hạng thấp hơn 3 (đánh giá rất tiêu cực).

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

Đánh giá ở đâu < 3.

Giải pháp khả dụng sau 3 lần thử