บทนำ
MySQL อนุญาตให้ใช้ตัวอักษรพิเศษ (Special Characters) ในชื่อคอลัมน์/ตาราง ได้โดยการครอบด้วย Backtick (`)
ตัวอย่างการสร้างตารางชื่อคอลัมน์มีขีดกลาง (-)
mysql> CREATE TABLE DemoTable (
-> `Student-Id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> `Student-Name` VARCHAR(100),
-> `Student-Age` INT
-> );
Query OK, 0 rows affected (0.55 sec)
เพิ่มข้อมูล (ต้องใช้ Backtick ครอบชื่อคอลัมน์)
mysql> INSERT INTO DemoTable(`Student-Name`, `Student-Age`) VALUES('Chris', 21);
mysql> INSERT INTO DemoTable(`Student-Name`, `Student-Age`) VALUES('Mike', 19);
mysql> INSERT INTO DemoTable(`Student-Name`, `Student-Age`) VALUES('Bob', 18);
แสดงข้อมูล
mysql> SELECT * FROM DemoTable;
ผลลัพธ์
+------------+--------------+-------------+
| Student-Id | Student-Name | Student-Age |
+------------+--------------+-------------+
| 1 | Chris | 21 |
| 2 | Mike | 19 |
| 3 | Bob | 18 |
+------------+--------------+-------------+
3 rows in set (0.00 sec)
กฎการใช้ Backtick
| สถานการณ์ | ตัวอย่าง |
|---|---|
| ชื่อมีช่องว่าง | `First Name` |
| ชื่อมีขีดกลาง | `Student-Id` |
| ชื่อเป็น Reserved Word | `SELECT`, `ORDER`, `GROUP` |
| ชื่อขึ้นต้นด้วยตัวเลข | `123Column` |
| ชื่อมีตัวอักษรพิเศษอื่นๆ | `Col@Name` |
แนวทางปฏิบัติที่ดี (Best Practice)
- หลีกเลี่ยง ตัวอักษรพิเศษและ Reserved Words ในชื่อ Identifier
- ใช้
snake_case(lowercase + underscore):student_id,student_name - หากต้องใช้ชื่อที่มีตัวพิเศษ ให้ใช้ Backtick **ทุกครั้ง** ที่อ้างอิง
- ตั้งค่า
sql_mode=ANSI_QUOTESเพื่อให้ Double Quote (") ทำหน้าที่เหมือน Backtick
คำสั่งที่ต้องใช้ Backtick
SELECT `Student-Name` FROM `DemoTable` WHERE `Student-Age` > 18;
ALTER TABLE `DemoTable` ADD COLUMN `New-Column` INT;