Update (SQL)

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).

Ví dụ 

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)

Tham khảo

Peter Rob & Carlos Coronel. Database System: Design, Implementation, & Management, 2004, THOMSON Course Technology.

Xem thêm
 SQL
 Select (SQL)
 Delete (SQL)
 Insert (SQL)
 Join (SQL)

SQL