SQL Server: UPDATE

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

Câu lệnh UPDATE dùng để sửa (cập nhật) dữ liệu của bảng.

UPDATE thuộc ngôn ngữ thao tác dữ liệu DML (Data Manipulation Language).

Lưu ý rằng các giá trị được cập nhật trên cột nào phải thỏa mãn các ràng buộc đã được thiết lập trên cột đó (các ràng buộc cần lưu ý gồm PRIMARY KEY - PK, UNIQUECHECK và NOT NULL).

Cú pháp:

UPDATE Tên_bảng SET Tên_cột1=Giá_trị_mới1, Tên_cột2=Giá_trị_mới2, ... WHERE Điều_kiện;

Ví dụ:

UPDATE Marks SET mark=24 WHERE studentid=1 and subjecti=1; --sửa lại điểm thành 24 cho sinh viên có mã 1 và môn học có mã 1

Hàm .WRITE():

Hàm .WRITE() dùng trong câu lệnh UPDATE để sửa một phần giá trị dạng chuỗi.

Cú pháp:

UPDATE Tên_bảng SET Tên_cột .WRITE('Chuỗi_thay_thế', Vị_trí, Số_lượng) WHERE Điều_kiện;

, trong đó Vị_trí ở đây là vị trí nơi sẽ đặt 'Chuỗi_thay_thế', vị trí 0 là vị trí trước ký tự đầu tiên của chuỗi muốn sửa, chẳng hạn như vị trí 0 của chuỗi 'abc' là trước ký tự 'a', Số_lượng ở đây là số lượng ký tự muốn thay thế tính từ Vị_trí.

Lưu ý: Nếu Tên_cột có kiểu nvarchar() thì cần phải chuyển thành nvarchar(max) trước khi thực hiện update.

Ví dụ:

Giả sử bảng Student có bản ghi như sau:

studentid studentname
1 Nguyễn Hồng Hà

Bây giờ ta muốn sửa 'Nguyễn Hồng Hà' thành 'Trần Hồng Hà' thì ta làm như sau:

ALTER TABLE Student ALTER COLUMN studentname nvarchar(max); -- Phải chuyển về kiểu nvarchar(max) trước khi update nếu cột studentname có kiểu nvarchar()

UPDATE Student SET studentname .WRITE(N'Trần', 0, 6) WHERE studentid=1;

Giải thích: vì chuỗi 'Trần' thay thế là chuỗi có dấu nên phải thể hiện thành N'Trần', vì muốn thay 'Nguyễn' thành 'Trần' nên vị trí đặt chuỗi thay thế là 0, và vì 'Nguyễn' có 6 ký tự nên số lượng ký tự cần thay thế là 6.

UPDATE với CASE-WHEN

Khi bạn muốn sửa dữ liệu với trường hợp có nhiều tình huống xảy ra, ví dụ như với ý 5 của bài tập Practical 6 thì bạn có thể áp dụng CASE-WHEN để thực hiện. Cú pháp áp dụng là như sau:

Cú pháp 1:

UPDATE Tên_bảng SET Tên_cột = CASE Tên_cột1

WHEN Giá_trị1 then Giá trị 1_1

WHEN Giá_trị2 then Giá trị 2_2

...

ELSE Giá_trị

END;

Cú pháp 2:

UPDATE Tên_bảng SET Tên_cột = CASE

WHEN Điều_kiện1 then Giá trị 1_1

WHEN Điều_kiện2 then Giá trị 2_2

...

ELSE Giá_trị

END;

Ví dụ, với ý 5 của bài tập Practical 6 ta có thể làm như sau:

UPDATE Projects SET Type = CASE

WHEN Cost<80 then 'Education'

WHEN Cost between 80 and 150 then 'Normal'

ELSE 'Goverment'

END;

Còn với ý 9 của bài tập Practical 5 ta làm như sau:

UPDATE Student SET Gender = CASE

WHEN Name in(N'Mỹ Linh', N'Tài Linh', N'Mỹ Lệ') then 0

WHEN Name = N'Kim Tử Long' then 1

END;

» Tiếp: DELETE
« Trước: TOP với WITH TIES
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!