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

Sử dụng "rank" làm tên cột trong MySQL 8.0: bắt buộc dùng backticks

RANK là từ khóa reserved word từ MySQL 8.0.2 (dùng cho window function RANK()). Không thể dùng làm tên cột/bảng trừ khi bao quanh bằng backticks.

Kiểm tra phiên bản MySQL

SELECT VERSION(); -- 8.0.12 (ví dụ)

❌ Sai (lỗi cú pháp)

CREATE TABLE DemoTable1596 (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentName VARCHAR(20),
    rank INT
);
ERROR 1064 (42000): syntax error near 'rank int'

✅ Đúng (dùng backticks)

CREATE TABLE DemoTable1596 (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentName VARCHAR(20),
    `rank` INT
);

Chèn và truy vấn (cần backticks khi tham chiếu):

INSERT INTO DemoTable1596 (StudentName, `rank`) VALUES ('Bob', 4567), ('David', 1);
SELECT Id, StudentName, `rank` FROM DemoTable1596;

Kết quả

IdStudentNamerank
1Bob4567
2David1

Danh sách từ khóa reserved mới MySQL 8.0 (một phần)

  • RANK, DENSE_RANK, ROW_NUMBER, LEAD, LAG, FIRST_VALUE, LAST_VALUE, NTILE, CUME_DIST, PERCENT_RANK (Window functions)
  • GROUPS, RANGE, ROWS (Frame clauses)
  • LATERAL, RECURSIVE (CTE)
  • FUNCTION, PROCEDURE (nâng cao)

Khuyến nghị

  • Tránh dùng từ khóa reserved làm identifier.
  • Naming convention: ranking, rank_value, student_rank.
  • Nếu migration từ phiên bản cũ: tìm và rename cột/bảng trùng từ khóa mới.
  • Luôn dùng backticks quanh identifier trong code SQL động / ORM.