Sử dụng backtick (`) cho tên cột có khoảng trắng trong MySQL
MySQL cho phép tên cột chứa khoảng trắng, ký tự đặc biệt, từ khóa nếu bao quanh bằng backtick ` (phím cùng ~).
Ví dụ: Tạo bảng với tên cột có space
mysql> CREATE TABLE blankSpacesDemo (
-> `Student Id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> `Student Full Name` VARCHAR(100)
-> );
Chèn dữ liệu (phải dùng backtick):
mysql> INSERT INTO blankSpacesDemo(`Student Full Name`) VALUES
('John Smith'), ('Carol Taylor'), ('David Miller');
Truy vấn (cũng cần backtick):
mysql> SELECT `Student Id`, `Student Full Name` FROM blankSpacesDemo;
Kết quả:
+------------+--------------------+ | Student Id | Student Full Name | +------------+--------------------+ | 1 | John Smith | | 2 | Carol Taylor | | 3 | David Miller | +------------+--------------------+
Quy tắc sử dụng backtick
- Bắt buộc: Tên có space, ký tự đặc biệt, từ khóa SQL (order, group, select...)
- Khuyến nghị: Luôn dùng backtick cho identifier (bảng, cột, index, alias) để nhất quán
- Không cần: Tên đơn giản không space, không từ khóa (vd: id, name, created_at)
So sánh với chuẩn SQL
| Database | Quoting identifier |
|---|---|
| MySQL | Backtick `name` (mặc định), Double quote "name" (ANSI_QUOTES mode) |
| PostgreSQL | Double quote "name" |
| SQL Server | Bracket [name], Double quote "name" (QUOTED_IDENTIFIER ON) |
| Oracle | Double quote "NAME" (case-sensitive) |
| SQLite | Double quote "name", Bracket [name], Backtick `name` |
Lưu ý
- Không dùng single quote
'cho identifier (đó là string literal) - Trong ứng dụng (PHP, Java, Python), driver thường tự escape identifier
- Tránh tên cột có space nếu có thể → dùng snake_case:
student_id,student_full_name