Trong SQL Server (Transact-SQL) lệnh UPDATE được dùng để cập nhật các bản ghi hiện có trên một bảng trong cơ sở dữ liệu của SQL Server. Có 3 cú pháp cho lệnh UPDATE, phụ thuộc vào việc bạn cập nhật theo kiểu truyền thống hay cập nhật một bảng bằng dữ liệu từ 1 bảng khác.
Cú pháp lệnh UPDATE
Cú pháp cập nhật bảng trong SQL Server
UPDATE bangSET cot1 = bieuthuc1,cot2 = bieuthuc2,…[WHERE dieu_kien] ;
Cú pháp cập nhật 1 bảng bằng dữ liệu từ 1 bảng khác trong SQL Server, kết hợp lệnh SELECT.
UPDATE bang1SET cot1 = (SELECT bieuthuc1FROM bang2WHERE dieu_kien)[WHERE dieu_kien];
Hoặc cú pháp khác để cập nhật một bảng bằng dữ liệu từ 1 bảng khác
UPDATE bang1SET bang1.cot = bang2.bieuthuc1FROM bang1INNER JOIN bang2ON (bang1.cot1 = bang2.cot1)[WHERE dieu_kien];
Tên biến hoặc giá trị biến
cot1, cot2
Cột cần cập nhật.
bieuthuc1, bieuthuc2
Giá trị mới cần chỉ định cho cot1, cot2. Cot1 sẽ gán giá trị của bieuthuc1, cot2 gán giá trị của bieuthuc2…
WHERE dieu_kien
Tùy chọn. Điều kiện phải đáp ứng để bản ghi được cập nhật.
Ví dụ – cập nhật 1 cột
UPDATEnhanvienSET ho = ‘Johnson’WHERE nhanvien_id = 10;
Lệnh UPDATE này sẽ cập nhật họ của nhân viên trong bảng nhanvien thành Johnson nếu nhanvien_id là 10.
Ví dụ – cập nhật nhiều cột
Đây là ví dụ cập nhật nhiều hơn 1 cột chỉ với 1 lệnh UPDATE.
UPDATEnhanvienSET ten = ‘Kyle’,nhanvien_id = 14WHERE ho = ‘Johnson’;
Nếu muốn cập nhật nhiều cột, chỉ cần tách các cột/giá trị bằng dấu phẩy.
Lệnh UPDATE nói trên sẽ cập nhật tên thành Kyle và nhanvien_id thành 14 nếu họ của người đó là Johnson.
Ví dụ – cập nhật bảng bằng dữ liệu từ 1 bảng khác
Đây là ví dụ cập nhật bảng bằng dữ liệu từ 1 bảng khác trong MySQL.
UPDATE nhanvienSET ten = (SELECT tenFROM danhbaWHERE danhba.ho = nhanvien.ho)WHERE nhanvien_id > 95;
Ví dụ nói trên sẽ cập nhật cho tất cả các bản ghi trong bảng nhanvien nếu nhanvien_id lớn hơn 95. Nếu họ của nhân viên ở bảng nhanvien và danhba giống nhau, thì tên trong bảng danhba sẽ được sao chép sang tên trong bảng nhanvien.
Có thể viết lại lệnh UPDATE này bằng cú pháp thứ 2 dưới đây.
UPDATE nhanvienSET nhanvien.ten = danhba.tenFROM nhanvienINNER JOIN danhbaON (nhanvien.ho = danhba.ho)WHERE nhanvien_id > 95;

8 Th1 2021
8 Th1 2021
16 Th12 2020
4 Th1 2021
22 Th12 2020
16 Th12 2020