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

Cách SELECT cột có tên là từ khóa 'from' và 'to' trong MySQL

Truy vấn cột có tên là từ khóa dành riêng (from, to) trong MySQL

Khi tên cột trùng với từ khóa dành riêng (reserved words) như FROM, TO, SELECT, WHERE..., bắt buộc phải dùng backtick (`) để bao quanh tên cột khi truy vấn.

Quy tắc

SELECT `to`, `from` FROM ten_bang;

Ví dụ minh họa

Tạo bảng với cột tên from và to (dùng backtick khi tạo):

mysql> CREATE TABLE DemoTable720 (
    `from` DATE,
    `to` DATE
);
Query OK, 0 rows affected (0.69 sec)

Chèn dữ liệu:

mysql> INSERT INTO DemoTable720 VALUES('2019-01-21', '2019-07-23');
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable720 VALUES('2017-11-01', '2018-01-31');
Query OK, 1 row affected (0.20 sec)
mysql> INSERT INTO DemoTable720 VALUES('2015-08-11', '2016-09-19');
Query OK, 1 row affected (0.12 sec)

Xem dữ liệu (MySQL tự hiểu backtick):

mysql> SELECT * FROM DemoTable720;
+------------+------------+
| from       | to         |
+------------+------------+
| 2019-01-21 | 2019-07-23 |
| 2017-11-01 | 2018-01-31 |
| 2015-08-11 | 2016-09-19 |
+------------+------------+
3 rows in set (0.00 sec)

SELECT đúng thứ tự cột `to` trước, `from` sau:

mysql> SELECT `to`, `from` FROM DemoTable720;

Kết quả:

+------------+------------+
| to         | from       |
+------------+------------+
| 2019-07-23 | 2019-01-21 |
| 2018-01-31 | 2017-11-01 |
| 2016-09-19 | 2015-08-11 |
+------------+------------+
3 rows in set (0.00 sec)

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

Từ khóaVí dụ dùng làm tên cột
FROM, TOKhoảng thời gian, chuyển tiền
ORDER, GROUP, BYSắp xếp, nhóm
SELECT, WHERE, LIMITHiếm nhưng có thể
KEY, INDEX, PRIMARYThiết kế schema
USER, PASSWORD, STATUSBảng user, log
DESC, ASCSắp xếp
CHECK, CONSTRAINTRàng buộc

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

  • Luôn dùng backtick cho mọi identifier (bảng, cột, alias, index, database)
  • Tránh đặt tên cột trùng từ khóa SQL nếu có thể
  • Naming convention: from_date, to_date, order_id, group_id...
  • Các ORM/Query Builder hiện đại (Laravel Eloquent, Doctrine, TypeORM...) tự động escape identifier