บทความนี้สาธิตปัญหาการใช้คำสงวนของ MySQL (Reserved Keyword) เป็นชื่อตาราง และวิธีแก้ไขด้วย Backticks (`)
ลองสร้างตารางชื่อ 'table' (จะ Error)
mysql> CREATE TABLE table(
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
FirstName VARCHAR(100)
);
ERROR 1064 (42000): You have an error in your SQL syntax...
แก้ไขด้วย Backticks
mysql> CREATE TABLE `table`(
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
FirstName VARCHAR(100)
);
Query OK, 0 rows affected (0.81 sec)
ใช้งานตาราง `table` (ต้องใช้ Backticks ทุกครั้ง)
mysql> INSERT INTO `table`(FirstName) VALUES('Chris');
mysql> INSERT INTO `table`(FirstName) VALUES('Robert');
mysql> INSERT INTO `table`(FirstName) VALUES('David');
mysql> INSERT INTO `table`(FirstName) VALUES('Mike');
mysql> SELECT * FROM `table`;
ผลลัพธ์
+----+-----------+
| Id | FirstName |
+----+-----------+
| 1 | Chris |
| 2 | Robert |
| 3 | David |
| 4 | Mike |
+----+-----------+
คำอธิบาย:
- Backticks (
`) ใช้ Escape Identifier (ชื่อตาราง, คอลัมน์, ฐานข้อมูล) ที่เป็น Reserved Word หรือมีอักขระพิเศษ - คำสงวนทั่วไป:
TABLE, SELECT, INSERT, UPDATE, DELETE, WHERE, ORDER, GROUP, BY, INDEX, KEY, PRIMARY, REFERENCES, ... - Best Practice: หลีกเลี่ยงการใช้ Reserved Word เป็นชื่อ ตั้งชื่อให้มีความหมายและไม่ซ้ำ Keyword
- ใน MySQL สามารถตั้งค่า
sql_mode=ANSI_QUOTESให้ใช้ Double Quotes (") แทน Backticks ได้