Vấn đề
Tên cột chứa ký tự đặc biệt (dấu chấm, khoảng trắng, từ khóa) phải dùng backticks `.
Cú pháp
UPDATE bang SET `ten.cot.cham` = 'gia_tri' WHERE dieu_kien;
Ví dụ: Cột tên `User.FirstName.LastName`
Tạo bảng
mysql> CREATE TABLE UpdateDemo (
UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`User.FirstName.LastName` VARCHAR(60)
);
Dữ liệu
+--------+-------------------------+ | UserId | User.FirstName.LastName | +--------+-------------------------+ | 1 | John Smith | | 2 | Adam Smith | | 3 | Carol Taylor | | 4 | Mitchell Johnson | | 5 | David Brown | | 6 | Larry Miller | +--------+-------------------------+
UPDATE có backticks
mysql> UPDATE UpdateDemo
-> SET `User.FirstName.LastName` = 'David Miller'
-> WHERE UserId = 5;
Kết quả
+--------+-------------------------+ | UserId | User.FirstName.LastName | +--------+-------------------------+ | 5 | David Miller | -- Đã cập nhật +--------+-------------------------+
Các trường hợp cần backticks
- Chứa ký tự đặc biệt:
.-@#... - Trùng từ khóa:
SELECT,ORDER,GROUP,INDEX... - Bắt đầu bằng số:
123col - Chứa Unicode:
tên_cột,列名
Best Practice
- Luôn dùng backticks cho identifier (bảng, cột, index, alias) trong code production
- Tránh đặt tên cột có ký tự đặc biệt / từ khóa
- Dùng naming convention:
snake_case(user_first_name_last_name) - ORM/query builder tự động escape identifier
Lưu ý: Backtick ` khác single quote '. Single quote cho string literal, backtick cho identifier.