Lệnh UPDATE trong SQL
Lệnh UPDATE trong SQL được dùng để chỉnh sửa dữ liệu sẵn có trong database.
Ta có thể dùng lệnh UPDATE để chỉ ra rằng ta muốn chỉnh sửa cụ thể từng trường, hàng nào bằng cách sử dụng các điều kiện kèm với mệnh đề WHERE.
Hình thức của câu lệnh UPDATE như sau:
UPDATE ten_bang SET [ten_cot1 = gia_tri1,...,ten_cotn = gia_trin] [WHERE condition]
Ví dụ cách sử dụng lệnh UPDATE trong SQL
Ta xét bảng ‘Users’ sau:
ID | Ten | Ho | Tai_khoan |
1 | Hung | Tran | hungtran |
2 | Hung | Pham Kim | hungkim |
3 | Dung | Tran | dungtran |
Khi bạn muốn cập nhật cho trường ‘Tai_khoan” của Tran Hung từ ‘hungtran’ sang ‘tranhung’, bạn có thể dùng câu lệnh sau.
UPDATE Users
SET Tai_khoan = 'tranhung'
WHERE ID=1;
Kết quả sau khi chạy lệnh UPDATE sẽ là:
ID | Ten | Ho | Tai_khoan |
1 | Hung | Tran | tranhung |
2 | Hung | Pham Kim | hungkim |
3 | Dung | Tran | dungtran |
Bạn có thể cập nhật nhiều trường trong một câu lệnh UPDATE.
Ví dụ khi bạn muốn chỉnh sửa từ Tran” sang “Tran Quang” và ‘dungtran’ sang ‘dunztran’, bạn có thể dùng câu lệnh sau:
UPDATE Users
SET Tai_khoan = 'dunztran', Ho='Tran Quang'
WHERE ID=3;
Kết quả bạn thu được sau khi chạy câu lệnh trên như sau:
ID | Ten | Ho | Tai_khoan |
1 | Hung | Tran | tranhung |
2 | Hung | Pham Kim | hungkim |
3 | Dung | Tran Quang | dunztran |
Chú ý: Những cú pháp của các ví dụ trong bài học này là cú pháp dành cho MySQL
Cách sử dụng lệnh UPDATE cùng với lệnh SELECT
Chúng ta có thể sử dụng lệnh SELECT để cập nhật, chỉnh sửa các bản ghi thông qua lệnh UPDATE.
Cú pháp:
UPDATE bang_dich
SET ten_cot_bang_dich = (
SELECT ten_cot_bang_nguon
FROM bang_nguon
WHERE dieu_kien1) WHERE dieu_kien2;
Xét một bảng khác có tên “Admins”:
ID | Role | Ten | Tai_khoan |
1 | Admin | Vi | thuyvi |
2 | Admin | Du | chudu |
3 | Khach | Duong | thamdzuong |
Khi bạn muốn UPDATE bảng Admins với dữ liệu từ bảng Users, bạn có thể dùng câu lệnh sau:
UPDATE Admins
SET Ten = (SELECT Ten FROM Users WHERE Admins.Ten = Users.Ten)
WHERE ID>1;
Trong câu lệnh trên vì điều kiện của mệnh đề WHERE không được thỏa mãn (Admins.Ten = Users.Ten), nên kết quả trả về sẽ là ‘NULL’. Ta kiểm tra lại nội dung bảng Admins sau khi chạy lệnh trên:
SELECT * FROM Admins;