Câu lệnh "create table table" có hoạt động trong MySQL không vì từ khóa dành riêng?
Hãy xem trường hợp chúng ta dùng "create table table" khi tạo bảng. Một lỗi sẽ phát sinh:
mysql> create table table(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
FirstName varchar(100)
);
Điều này sẽ tạo ra đầu ra sau tức là lỗi:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'table( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, FirstName varchar(100) )' at line 1
Như bạn thấy ở trên, từ "table" là từ khóa dành riêng, và chúng ta không thể dùng nó làm tên bảng. Do đó, để khắc phục, bạn cần bọc tên bảng bằng backtick.
Hãy tạo lại bảng và đặt tên bảng là `table` với backtick:
mysql> create table `table`(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
FirstName varchar(100)
);
Query OK, 0 rows affected (0.81 sec)
Chèn một số bản ghi vào bảng bằng lệnh insert:
mysql> insert into `table`(FirstName) values('Chris');
Query OK, 1 row affected (0.15 sec)
mysql> insert into `table`(FirstName) values('Robert');
Query OK, 1 row affected (0.15 sec)
mysql> insert into `table`(FirstName) values('David');
Query OK, 1 row affected (0.15 sec)
mysql> insert into `table`(FirstName) values('Mike');
Query OK, 1 row affected (0.13 sec)
Hiển thị tất cả các bản ghi từ bảng bằng câu lệnh select:
mysql> select * from `table`;
Điều này sẽ tạo ra đầu ra sau:
+----+-----------+ | Id | FirstName | +----+-----------+ | 1 | Chris | | 2 | Robert | | 3 | David | | 4 | Mike | +----+-----------+ 4 rows in set (0.00 sec)
Lưu ý: Luôn sử dụng backtick (`) cho tên bảng, tên cột trùng từ khóa dành riêng (reserved words) như: table, order, group, select, index, key, v.v.