Không bắt buộc. Nếu bạn **không chỉ định danh sách cột** trong INSERT, MySQL yêu cầu cung cấp giá trị cho **tất cả cột** theo đúng thứ tự định nghĩa bảng – bao gồm cả cột cho phép NULL. Lúc này bạn phải truyền NULL rõ ràng cho các cột không có giá trị.
Cú pháp không liệt kê cột (phải truyền đủ giá trị)
INSERT INTO ten_bang VALUES (NULL, 'Chris', NULL, NULL);
Cú pháp khuyến nghị: Liệt kê cột có giá trị
INSERT INTO ten_bang (cot_co_gia_tri) VALUES (gia_tri);
- Các cột không liệt kê sẽ nhận **giá trị mặc định (DEFAULT)** hoặc
NULL(nếu cho phép NULL và không có DEFAULT). - Code rõ ràng, an toàn khi thay đổi cấu trúc bảng (thêm/xóa cột).
- Tránh lỗi khi số lượng giá trị không khớp số cột.
Ví dụ minh họa (cách không khuyến nghị)
Tạo bảng 4 cột cho phép NULL:
mysql> CREATE TABLE DemoTable1513 (
-> StudentId INT,
-> StudentName VARCHAR(20),
-> StudentAge INT,
-> StudentCountryName VARCHAR(20)
-> );
Chèn không liệt kê cột – phải truyền 4 giá trị (kể cả NULL):
mysql> INSERT INTO DemoTable1513 VALUES (NULL, 'Chris Brown', NULL, NULL); mysql> INSERT INTO DemoTable1513 VALUES (101, NULL, NULL, NULL); mysql> INSERT INTO DemoTable1513 VALUES (NULL, NULL, 23, NULL); mysql> INSERT INTO DemoTable1513 VALUES (NULL, NULL, NULL, 'US');
Kết quả – nhiều cột NULL:
+-----------+-------------+------------+--------------------+ | StudentId | StudentName | StudentAge | StudentCountryName | +-----------+-------------+------------+--------------------+ | NULL | Chris Brown | NULL | NULL | | 101 | NULL | NULL | NULL | | NULL | NULL | 23 | NULL | | NULL | NULL | NULL | US | +-----------+-------------+------------+--------------------+
Best practice
-- ✅ Tốt: chỉ định cột có dữ liệu
INSERT INTO DemoTable1513 (StudentName) VALUES ('Chris Brown');
INSERT INTO DemoTable1513 (StudentId) VALUES (101);
INSERT INTO DemoTable1513 (StudentAge) VALUES (23);
INSERT INTO DemoTable1513 (StudentCountryName) VALUES ('US');
Kết quả giống hệt nhưng code an toàn, dễ đọc, dễ bảo trì.