Thử tạo bảng với cột tên When (từ khóa dành riêng):
mysql> create table DemoTable693(
StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentName varchar(100),
When datetime
);
Lỗi:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'When datetime at line 5
Giải pháp: Bọc từ khóa dành riêng bằng backticks ` (dấu ngã).
Tạo bảng đúng cách
mysql> create table DemoTable693 (
StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentName varchar(100),
`When` datetime
);
Query OK, 0 rows affected (0.63 sec)
Chèn dữ liệu (cần backticks cho cột When)
mysql> insert into DemoTable693(StudentName, `When`) values('Chris', NOW());
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable693(StudentName, `When`) values('Robert', CURDATE());
Query OK, 1 row affected (0.22 sec)
Hiển thị dữ liệu
mysql> select * from DemoTable693;
Kết quả
+-----------+-------------+---------------------+ | StudentId | StudentName | When | +-----------+-------------+---------------------+ | 1 | Chris | 2019-07-21 18:57:19 | | 2 | Robert | 2019-07-21 00:00:00 | +-----------+-------------+---------------------+ 2 rows in set (0.00 sec)
Quy tắc: Luôn dùng backticks `ten_cot`, `ten_bang` cho:
- Từ khóa dành riêng (SELECT, WHERE, WHEN, ORDER, GROUP, KEY, INDEX, ...).
- Tên chứa khoảng trắng, ký tự đặc biệt, số đầu tiên.
- Tên trùng từ khóa hàm (DATE, TIME, YEAR, ...).
Danh sách từ khóa dành riêng phổ biến: SELECT, INSERT, UPDATE, DELETE, WHERE, FROM, JOIN, LEFT, RIGHT, INNER, OUTER, ON, GROUP, ORDER, BY, LIMIT, OFFSET, UNION, DISTINCT, AS, ASC, DESC, AND, OR, NOT, IN, LIKE, BETWEEN, IS, NULL, TRUE, FALSE, PRIMARY, KEY, INDEX, UNIQUE, FOREIGN, REFERENCES, CONSTRAINT, DEFAULT, AUTO_INCREMENT, CREATE, ALTER, DROP, TABLE, DATABASE, VIEW, PROCEDURE, FUNCTION, TRIGGER, EVENT, PARTITION, ENGINE, CHARSET, COLLATE, ...