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

Có thể dùng dấu gạch dưới (_) trong tên bảng MySQL?

Sử dụng dấu gạch dưới (_) trong tên bảng MySQL

MySQL cho phép dấu gạch dưới (_) trong tên bảng, tuy nhiên nếu tên bảng chứa ký tự đặc biệt hoặc từ khóa dành riêng, bắt buộc phải dùng backtick (`) để bao quanh, không dùng dấu nháy đơn (').

Ví dụ: Lỗi khi dùng dấu nháy đơn

mysql> CREATE TABLE 'Demo_Table725'(
    ClientId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ClientName VARCHAR(100),
    ClientAge INT,
    ClientCountryName VARCHAR(100),
    isMarried BOOLEAN
);

Kết quả lỗi:

ERROR 1064 (42000): You have an error in your SQL syntax;
check the manual ... near ''Demo_Table725' (...' at line 1

Sửa đúng: Dùng 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)

Chèn dữ liệu (cũng phải dùng backtick):

mysql> INSERT INTO `Demo_Table725`(ClientName,ClientAge,ClientCountryName,isMarried) 
VALUES('John',34,'US',true);
Query OK, 1 row affected (0.40 sec)
mysql> INSERT INTO `Demo_Table725`(ClientName,ClientAge,ClientCountryName,isMarried) 
VALUES('Chris',28,'UK',false);
Query OK, 1 row affected (0.25 sec)

Truy vấn (cũng dùng backtick):

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)

Quy tắc đặt tên trong MySQL

Ký tựCho phép?Cần backtick?
Chữ cái (a-z, A-Z)✅Không
Số (0-9)✅ (không bắt đầu bằng số)Không
Dấu gạch dưới (_)✅Không (trừ khi là từ khóa)
Dấu $✅Khuyến nghị
Ký tự Unicode✅ (MySQL 8.0+)Khuyến nghị
Khoảng trắng, @, #, ., -, ...❌ (trừ khi dùng backtick)Bắt buộc
Từ khóa dành riêng (SELECT, FROM, TABLE, ...)❌ (trừ khi dùng backtick)Bắt buộc

Thực hành tốt (Best Practice)

  • Luôn dùng backtick (`) cho tên bảng, cột, index, alias để an toàn
  • Đặt tên theo chuẩn: snake_case (ví dụ: user_profiles, order_items)
  • Tránh từ khóa SQL làm tên định danh
  • Cấu hình sql_mode=ANSI_QUOTES cho phép dùng dấu nháy kép (") cho identifier, nhưng không khuyến khích