Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ใช้ Underscore (_) ในชื่อตาราง MySQL ต้องห่อด้วย Backtick (`)

กฎการตั้งชื่อ Identifier ใน MySQL

MySQL อนุญาตให้ใช้ Underscore (_) ในชื่อตาราง/คอลัมน์ได้ **แต่ต้องห่อด้วย Backtick (`) เสมอ** ห้ามใช้ Single Quote (')

ตัวอย่างที่ผิด (ใช้ Single Quote)

mysql> CREATE TABLE 'Demo_Table725' (
    ClientId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ClientName VARCHAR(100),
    ClientAge INT,
    ClientCountryName VARCHAR(100),
    isMarried BOOLEAN
);
ERROR 1064 (42000): You have an error in your SQL syntax...
near ''Demo_Table725' (ClientId int NOT NULL...

ตัวอย่างที่ถูกต้อง (ใช้ Backtick)

mysql> CREATE TABLE `Demo_Table725` (
    ClientId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ClientName VARCHAR(100),
    ClientAge INT,
    ClientCountryName VARCHAR(100),
    isMarried BOOLEAN
);
Query OK, 0 rows affected (0.58 sec)

Insert และ Select ต้องใช้ Backtick เช่นกัน:

mysql> INSERT INTO `Demo_Table725` (ClientName, ClientAge, ClientCountryName, isMarried) 
VALUES ('John', 34, 'US', TRUE), ('Chris', 28, 'UK', FALSE);
Query OK, 2 rows affected

mysql> SELECT * FROM `Demo_Table725`;
+----------+------------+-----------+-------------------+-----------+
| ClientId | ClientName | ClientAge | ClientCountryName | isMarried |
+----------+------------+-----------+-------------------+-----------+
| 1        | John       | 34        | US                | 1         |
| 2        | Chris      | 28        | UK                | 0         |
+----------+------------+-----------+-------------------+-----------+
2 rows in set (0.00 sec)

กฎ Identifier ใน MySQL

  • Backtick (`) - ใช้ห่อ **Identifier** (ชื่อตาราง, คอลัมน์, ดัชนี, ฐานข้อมูล) - **มาตรฐาน MySQL**
  • Single Quote (') - ใช้ห่อ **String Literal** (ข้อความ, วันที่) - **มาตรฐาน SQL**
  • Double Quote (") - ใช้ห่อ String ได้ ถ้า ANSI_QUOTES mode ปิด (ค่าเริ่มต้น) แต่ถ้าเปิด จะกลายเป็น Identifier

เมื่อไหร่ต้องใช้ Backtick บังคับ

  • ชื่อมีอักขระพิเศษ: _, -, ., ช่องว่าง, ตัวเลขนำหน้า
  • ชื่อเป็น Reserved Word: select, from, where, order, group, key, index ฯลฯ
  • ชื่อมีตัวพิมพ์ใหญ่-เล็ก และต้องการ Case Sensitive (ขึ้นกับ OS/File System)

แนะนำ: ใช้ Backtick เสมอสำหรับ Identifier ทุกตัว

SELECT `id`, `name` FROM `my_table` WHERE `status` = 'active';