Bài viết này cần thêm chú thích nguồn gốc để kiểm chứng thông tin. |
Câu lệnh SQL UPDATE thay đổi hay cập nhật dữ liệu của một hay nhiều hàng trong bảng dữ liệu. Tùy theo điều kiện mà một số hàng hay tất cả các hàng trong bảng sẽ bị thay đổi.
Câu lệnh UPDATE
có cấu trúc như sau:
UPDATE
table_name SET
column_name = value [, column_name = value...] [WHERE
condition]Để thực thi câu lệnh UPDATE
, người dùng phải có quyền sửa chữa dữ liệu (data manipulation privileges) (quyền UPDATE
) trên bảng hay cột, các dữ liệu được cập nhật phải thỏa các ràng buộc (như từ khóa chính, chỉ số duy nhất (unique indexes), ràng buộc CHECK
, và ràng buộc không rỗng NOT NULL
).
Thay đổi giá trị ở cột C1 trong bảng T thành "1" ở những hàng có giá trị "a" ở cột C2.
UPDATE T SET C1 = 1 WHERE C2 = 'a'
Tăng giá trị ở cột C1 lên 1 nếu như giá trị trong cột C2 là "a".
UPDATE T SET C1 = C1 + 1 WHERE C2 = 'a'
Thêm tiền tố "text" vào giá trị ở cột C1 nếu như giá trị ở cột C2 là "a".
UPDATE T SET C1 = 'text' || C1 WHERE C2 = 'a'
Thay đổi giá trị ở cột C1 trong bảng T1 thành "2" nếu như giá trị trong cột C2 là một trong những giá trị tìm thấy ở cột C3 trong bảng T2 với giá trị trong cột C4 bằng 0.
UPDATE T1
SET C1 = 2
WHERE C2 IN (SELECT C3
FROM T2
WHERE C4 = 0)
Cũng có thể đồng thời cập nhật dữ liệu trên nhiều cột:
UPDATE T SET C1 = 1, C2 = 2
Sử dụng điều kiện phức tạp:
UPDATE T SET A = 1 WHERE C1 = 1 AND C2 = 2
Chuẩn SQL:2003 không hỗ trợ cập nhật dữ liệu trên bảng hội (joined table). Vì thế phương pháp sử dụng cậu lệnh SELECT
được dùng để cập nhật dữ liệu trong bảng hội. Chú ý: giá trị trả về trong câu lệnh SELECT
trong mệnh đề SET
phải là giá trị đơn, hay giá trị duy nhất; nghĩa là chỉ có duy nhất 1 hàng được trả về trong câu lệnh SELECT
thôi.
UPDATE T1
SET C1 = (SELECT T2.C2
FROM T2
WHERE T1.ID = T2.ID)
WHERE EXISTS (SELECT 1
FROM T2
WHERE T1.ID = T2.ID)