Cõu lệnh UPDATE trong SQL được sử dụng để cập nhật dữ liệu trong cỏc bảng. Cõu lệnh này cú cỳ phỏp như sau:
UPDATE tờn_bảng
SET tờn_cột = biểu_thức
[, ..., tờn_cột_k = biểu_thức_k] [FROM danh_sỏch_bảng]
[WHERE điều_kiện]
Sau UPDATE là tờn của bảng cần cập nhật dữ liệu. Một cõu lệnh UPDATE cú thể cập nhật dữ liệu cho nhiều cột bằng cỏch chỉ định cỏc danh sỏch tờn cột và biểu thức tương ứng sau từ khoỏ SET. Mệnh đề WHERE trong cõu lệnh UPDATE thường được sử dụng
để chỉ định cỏc dũng dữ liệu chịu tỏc động của cõu lệnh (nếu khụng chỉ định, phạm vi tỏc động của cõu lệnh được hiểu là toàn bộ cỏc dũng trong bảng)
Vớ dụ 2.51: Cõu lệnh dưới đõy cập nhật lại số đơn vị học trỡnh của cỏc mụn học cú số đơn vị học trỡnh nhỏ hơn 2
UPDATE monhoc SET sodvht = 3 WHERE sodvht = 2
Sử dụng cấu trỳc CASE trong cõu lệnh UPDATE
Cấu trỳc CASE cú thể được sử dụng trong biểu thức khi cần phải đưa ra cỏc quyết định khỏc nhau về giỏ trị của biểu thức
Vớ dụ 2.52: Giả sử ta cú bảng NHATKYPHONG sau đõy
Sau khi thực hiện cõu lệnh:
UPDATE nhatkyphong
SET tienphong=songay*CASE WHEN loaiphong='A' THEN 100 WHEN loaiphong='B' THEN 70 ELSE 50
END
Dữ liệu trong bảng sẽ là:
Điều kiện cập nhật dữ liệu liờn quan đến nhiều bảng
Mệnh đề FROM trong cõu lệnh UPDATE được sử dụng khi cần chỉ định cỏc điều kiện liờn quan đến cỏc bảng khỏc với bảng cần cập nhật dữ liệu. Trong truờng hợp này, trong mệnh đề WHERE thường cú điều kiện nối giữa cỏc bảng.
Vớ dụ 2.53: Giả sử ta cú hai bảng MATHANG và NHATKYBANHANG như sau:
Cõu lệnh dưới đõy sẽ cập nhật giỏ trị trường THANHTIEN của bảng NHATKYBANHANG theo cụng thức THANHTIEN = SOLUONG ì GIA
UPDATE nhatkybanhang
SET thanhtien = soluong*gia FROM mathang
WHERE nhatkybanhang.mahang = mathang.mahang
Cõu lệnh UPDATE với truy vấn con
Tương tự như trong cõu lệnh SELECT, truy vấn con cú thể được sử dụng trong mệnh đề WHERE của cõu lệnh UPDATE nhằm chỉ định điều kiện đối với cỏc dũng dữ liệu cần cập nhật dữ liệu.
Vớ dụ 2.54: Cõu lệnh ở trờn cú thể được viết như sau:
UPDATE nhatkybanhang
SET thanhtien = soluong*gia FROM mathang
WHERE mathang.mahang =(SELECT mathang.mahang FROM mathang
WHERE mathang.mahang=nhatkybanhang.mahang)