Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Tại sao không thể dùng tên cột 'desc' trong MySQL và cách khắc phục

DESC là từ khóa dành riêng (reserved word) trong MySQL, dùng cho lệnh DESCRIBE hoặc mệnh đề ORDER BY ... DESC. Do đó, bạn không thể sử dụng nó làm tên cột trực tiếp.

Cách khắc phục: Sử dụng backtick (` `)

Bọc tên cột trong cặp dấu backtick để MySQL hiểu đây là định danh (identifier), không phải từ khóa.

Ví dụ minh họa

Tạo bảng với cột tên desc:

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)

Chèn dữ liệu (không cần chỉ định cột desc vì có DEFAULT):

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)

Truy vấn tất cả bản ghi (cần backtick cho cột desc):

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

Truy vấn chỉ cột desc:

mysql> SELECT `desc` FROM useOfDescColumnNameDemo;
+------+
| desc |
+------+
| GOOD |
| GOOD |
| GOOD |
| GOOD |
+------+

Lưu ý: Cách này áp dụng cho mọi từ khóa dành riêng (reserved words) như order, group, select, key, v.v. Tuy nhiên, tốt nhất hãy tránh dùng từ khóa làm tên cột/bảng để tránh nhầm lẫn.