ใน MySQL คำว่า match เป็นคำสงวน (reserved word) หากใช้เป็นชื่อตารางหรือคอลัมน์ต้องล้อมรอบด้วย backticks (`) ไม่ใช่ single quotes (')
ข้อผิดพลาดที่พบ
mysql> select *from match; 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 'match' at line 1
วิธีแก้ไข: ใช้ Backticks
mysql> create table `match` (
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
PlayerName varchar(20) );
Query OK, 0 rows affected (0.62 sec)
เพิ่มข้อมูล (ใช้ backticks ทุกครั้งที่อ้างอิงตาราง)
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)
แสดงข้อมูล
mysql> select *from `match`;
ผลลัพธ์:
+----+------------+ | Id | PlayerName | +----+------------+ | 1 | Chris | | 2 | Bob | | 3 | David | | 4 | Mike | | 5 | Sam | +----+------------+ 5 rows in set (0.00 sec)
แนวทางปฏิบัติที่ดี
- ใช้ backticks (`) สำหรับ identifier ทั้งหมด (ชื่อตาราง คอลัมน์ ฯลฯ) เพื่อหลีกเลี่ยงปัญหากับคำสงวน
- MySQL มีคำสงวนมากมาย เช่น
select,where,order,group,match,key,indexฯลฯ - สามารถดูรายการคำสงวนได้จากเอกสาร MySQL อย่างเป็นทางการ