Nguyên nhân
match là từ khóa dành riêng (reserved word) trong MySQL. Nếu dùng làm tên bảng hoặc cột mà không bao quanh bằng backticks (`), sẽ gây lỗi cú pháp.
1. Lỗi khi không dùng backticks
mysql> select * from match; ERROR 1064 (42000): You have an error in your SQL syntax... near 'match' at line 1
2. Tạo bảng đúng cách
mysql> create table `match` (
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
PlayerName varchar(20)
);
Query OK, 0 rows affected (0.62 sec)
3. Chèn dữ liệu (luôn dùng backticks cho tên bảng)
mysql> insert into `match`(PlayerName) values('Chris'); Query OK, 1 row affected (0.13 sec)
mysql> insert into `match`(PlayerName) values('Bob'); Query OK, 1 row affected (0.16 sec)
mysql> insert into `match`(PlayerName) values('David'); Query OK, 1 row affected (0.24 sec)
mysql> insert into `match`(PlayerName) values('Mike'); Query OK, 1 row affected (0.15 sec)
mysql> insert into `match`(PlayerName) values('Sam'); Query OK, 1 row affected (0.14 sec)
4. Truy vấn dữ liệu
mysql> select * from `match`;
+----+------------+ | Id | PlayerName | +----+------------+ | 1 | Chris | | 2 | Bob | | 3 | David | | 4 | Mike | | 5 | Sam | +----+------------+ 5 rows in set (0.00 sec)
Quy tắc: Luôn dùng backticks cho các identifier trùng từ khóa dành riêng.