Cú pháp UPDATE cơ bản: Sửa đổi giá trị một cột theo điều kiện
Câu lệnh UPDATE table SET column = new_value WHERE condition cho phép thay đổi giá trị của cột cụ thể cho các hàng thỏa mãn điều kiện.
1. Tạo bảng và chèn dữ liệu
mysql> CREATE TABLE DemoTable (
StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Score INT
);
mysql> INSERT INTO DemoTable (Score) VALUES (56), (78), (34), (55);
2. Xem dữ liệu ban đầu
mysql> SELECT * FROM DemoTable;
+-----------+-------+ | StudentId | Score | +-----------+-------+ | 1 | 56 | | 2 | 78 | | 3 | 34 | | 4 | 55 | +-----------+-------+
3. Truy vấn: Cập nhật Score = 95 cho StudentId = 3
mysql> UPDATE DemoTable
SET Score = 95
WHERE StudentId = 3;
Kết quả: Query OK, 1 row affected ... Rows matched: 1 Changed: 1
4. Kiểm tra kết quả
mysql> SELECT * FROM DemoTable;
+-----------+-------+ | StudentId | Score | +-----------+-------+ | 1 | 56 | | 2 | 78 | | 3 | 95 | ← Đã cập nhật từ 34 thành 95 | 4 | 55 | +-----------+-------+
Các biến thể UPDATE hữu ích:
| Loại | Cú pháp | Ví dụ |
|---|---|---|
| 1 cột | SET col = val | SET Score = 95 |
| Nhiều cột | SET col1=val1, col2=val2 | SET Score=95, Grade='A' |
| Biểu thức | SET col = col + 10 | SET Score = Score + 10 |
| Subquery | SET col = (SELECT ...) | SET Score = (SELECT AVG(Score) FROM DemoTable) |
| CASE | SET col = CASE WHEN ... | SET Grade = CASE WHEN Score>=90 THEN 'A' ELSE 'B' END |
An toàn: Luôn có WHERE (trừ khi muốn update toàn bảng). Test trước bằng SELECT * FROM table WHERE condition.
LIMIT trong UPDATE (MySQL): UPDATE ... WHERE ... LIMIT 1 - giới hạn số hàng cập nhật.