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

Khi nào cần dùng backticks (`) cho tên bảng và cột trong MySQL

Trong MySQL, **backticks (`)** dùng để phân định identifier (tên bảng, cột, database) khi tên trùng với từ khóa dự trữ (reserved words) hoặc chứa ký tự đặc biệt.

Khi nào BẮT BUỘC dùng backticks

Trường hợpVí dụLý do
Tên là từ khóa SQLSELECT * FROM `table` WHERE `where` = 1table, where, select, order, group, key, index...
Chứa khoảng trắng`ten cot`Không hợp lệ nếu không quote
Chứa ký tự đặc biệt`cot#1`, `user-name`Ký tự không phải chữ/số/_
Bắt đầu bằng số`123cot`Identifier không được bắt đầu bằng số

Ví dụ minh họa

1. Tạo bảng KHÔNG dùng backticks với từ khóa - LỖI

mysql> CREATE TABLE table ( where INT );
ERROR 1064 (42000): You have an error in your SQL syntax...
near 'table ( where int )' at line 1

2. Tạo bảng CÓ backticks - THÀNH CÔNG

mysql> CREATE TABLE `table` ( `where` INT );
Query OK, 0 rows affected (0.55 sec)

3. Chèn và truy vấn dữ liệu

INSERT INTO `table`(`where`) VALUES(1), (100), (1000);

SELECT * FROM `table` WHERE `where` = 100;

Kết quả:

+-------+
| where |
+-------+
| 100   |
+-------+

Khi nào KHÔNG cần backticks

  • Tên chỉ chứa chữ cái, số, gạch dưới (_), không bắt đầu bằng số
  • Không trùng từ khóa reserved word
  • Ví dụ: users, user_name, order_items, t1

Best Practice

  • Luôn dùng backticks trong code production, migration script, stored procedure → An toàn tuyệt đối
  • Các ORM/Query Builder (Laravel Eloquent, Doctrine, Hibernate) tự động thêm backticks
  • Khi viết thủ công ad-hoc query đơn giản: có thể bỏ qua nếu tên "sạch"

Danh sách từ khóa thường gặp cần backticks

SELECT, INSERT, UPDATE, DELETE, WHERE, FROM, JOIN, LEFT, RIGHT, INNER,
ORDER, GROUP, BY, HAVING, LIMIT, OFFSET, TABLE, INDEX, KEY, PRIMARY,
UNIQUE, FOREIGN, REFERENCES, CHECK, CONSTRAINT, TRIGGER, VIEW, PROCEDURE,
FUNCTION, DATABASE, SCHEMA, USER, PASSWORD, LOCK, UNLOCK, COMMIT, ROLLBACK

Lưu ý về ANSI_QUOTES mode

Nếu bật SET SQL_MODE='ANSI_QUOTES', dấu nháy kép " cũng dùng làm identifier quote (giống backticks). Khi đó chuỗi ký tự phải dùng nháy đơn '.