การ INSERT โดยไม่ระบุคอลัมน์
ใช้ INSERT INTO table VALUES (val1, val2, ...) ต้องระบุค่าครบทุกคอลัมน์ตามลำดับที่สร้างตาราง
ตัวอย่าง: ตารางมี AUTO_INCREMENT
mysql> create table DemoTable862(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
FirstName varchar(100),
Age int );
Query OK, 0 rows affected (0.68 sec)
INSERT ไม่ระบุคอลัมน์ (ส่ง NULL ให้ Id)
mysql> insert into DemoTable862 values(NULL, 'Chris', 23);
mysql> insert into DemoTable862 values(NULL, 'Robert', 21);
mysql> insert into DemoTable862 values(NULL, 'Mike', 24);
mysql> insert into DemoTable862 values(NULL, 'Sam', 25);
mysql> insert into DemoTable862 values(NULL, 'Bob', 26);
ผลลัพธ์ (Id Auto-generate แม้ส่ง NULL):
+----+-----------+------+
| Id | FirstName | Age |
+----+-----------+------+
| 1 | Chris | 23 |
| 2 | Robert | 21 |
| 3 | Mike | 24 |
| 4 | Sam | 25 |
| 5 | Bob | 26 |
+----+-----------+------+
⚠️ ข้อควรระวัง
- ลำดับคอลัมน์ต้องตรงกับ CREATE TABLE เรียงตาม Id, FirstName, Age
- ต้องระบุค่าครบทุกคอลัมน์ (ไม่สามารถข้ามได้)
- AUTO_INCREMENT รับ NULL ได้ จะสร้างค่าใหม่อัตโนมัติ (MySQL Behavior)
- ไม่แนะนำสำหรับ Production: ถ้า ALTER TABLE เพิ่มคอลัมน์ Query จะพัง
Best Practice: ระบุคอลัมน์เสมอ
-- แนะนำ: ระบุคอลัมน์ชัดเจน
INSERT INTO DemoTable862 (FirstName, Age) VALUES ('Chris', 23);
-- ไม่แนะนำ: ไม่ระบุคอลัมน์
INSERT INTO DemoTable862 VALUES (NULL, 'Chris', 23);
สรุป
สามารถ INSERT ... VALUES (...) โดยไม่ระบุคอลัมน์ได้ แต่ต้องส่งค่าครบทุกคอลัมน์ตามลำดับ ควรระบุคอลัมน์เสมอเพื่อความปลอดภัยและบำรุงรักษาง่าย