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

ทำไมไม่สามารถใช้ชื่อคอลัมน์ 'desc' ใน MySQL และวิธีแก้ไข


สาเหตุ

desc เป็น reserved word ของ MySQL (ใช้สำหรับคำสั่ง DESCRIBE หรือ ORDER BY ... DESC) จึงไม่สามารถใช้เป็นชื่อคอลัมน์ได้โดยตรง

วิธีแก้ไข: ใช้ Backticks

ห่อชื่อคอลัมน์ด้วย backtick (` `) เพื่อบอก MySQL ว่านี้เป็น identifier ไม่ใช่ keyword

ตัวอย่างการสร้างตาราง

mysql> create table useOfDescColumnNameDemo 
    -> ( 
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    -> Name varchar(20), 
    -> `desc` varchar(200) default 'GOOD' 
    -> ); 
Query OK, 0 rows affected (0.60 sec)

เพิ่มข้อมูลทดสอบ

mysql> insert into useOfDescColumnNameDemo(Name) values('John'); 
Query OK, 1 row affected (0.17 sec)
mysql> insert into useOfDescColumnNameDemo(Name) values('Bob'); 
Query OK, 1 row affected (0.16 sec)
mysql> insert into useOfDescColumnNameDemo(Name) values('Carol'); 
Query OK, 1 row affected (0.13 sec)
mysql> insert into useOfDescColumnNameDemo(Name) values('Sam'); 
Query OK, 1 row affected (0.13 sec)

Query ข้อมูลทั้งหมด

mysql> select * from useOfDescColumnNameDemo;
+----+-------+------+
| Id | Name  | desc |
+----+-------+------+
| 1  | John  | GOOD |
| 2  | Bob   | GOOD |
| 3  | Carol | GOOD |
| 4  | Sam   | GOOD |
+----+-------+------+

Query เฉพาะคอลัมน์ desc (ต้องใช้ backticks)

mysql> select `desc` from useOfDescColumnNameDemo;
+------+
| desc |
+------+
| GOOD |
| GOOD |
| GOOD |
| GOOD |
+------+

แนวทางปฏิบัติที่ดี: หลีกเลี่ยงการใช้ reserved words เป็นชื่อคอลัมน์ หากจำเป็นต้องใช้ ให้ใช้ backticks ทุกครั้งที่อ้างอิง