บทนำ
ใน MySQL สามารถระบุเฉพาะคอลัมน์ที่ต้องการใส่ค่าในคำสั่ง INSERT ได้ คอลัมน์ที่ไม่ได้ระบุจะรับค่า DEFAULT (ถ้ามี) หรือ NULL (ถ้าอนุญาต NULL)
ตัวอย่างการสร้างตาราง
mysql> CREATE TABLE DemoTable (
-> StudentName VARCHAR(100),
-> StudentAge INT
-> );
Query OK, 0 rows affected (0.72 sec)
เพิ่มข้อมูลโดยข้ามคอลัมน์สลับกัน
mysql> INSERT INTO DemoTable(StudentAge) VALUES(23);
mysql> INSERT INTO DemoTable(StudentName) VALUES('John');
แสดงข้อมูล
mysql> SELECT * FROM DemoTable;
ผลลัพธ์
+-------------+------------+
| StudentName | StudentAge |
+-------------+------------+
| NULL | 23 |
| John | NULL |
+-------------+------------+
2 rows in set (0.00 sec)
คำอธิบาย
- แถวแรก: ระบุแค่ StudentAge → StudentName ได้ NULL
- แถวที่สอง: ระบุแค่ StudentName → StudentAge ได้ NULL
- หากคอลัมน์มี
NOT NULLและไม่มี DEFAULT จะเกิด Error
รูปแบบ INSERT ต่างๆ
-- 1. ระบุคอลัมน์บางส่วน (Recommended)
INSERT INTO Table(col1, col3) VALUES(val1, val3);
-- 2. ระบุทุกคอลัมน์
INSERT INTO Table(col1, col2, col3) VALUES(val1, val2, val3);
-- 3. ไม่ระบุคอลัมน์ (ต้องใส่ค่าครบทุกคอลัมน์ และเรียงลำดับถูกต้อง)
INSERT INTO Table VALUES(val1, val2, val3);
-- 4. ใส่หลายแถวพร้อมกัน
INSERT INTO Table(col1, col2) VALUES
(val1, val2),
(val3, val4),
(val5, val6);
การตั้งค่า DEFAULT เพื่อไม่ให้เป็น NULL
CREATE TABLE DemoTable (
StudentName VARCHAR(100) DEFAULT 'Unknown',
StudentAge INT DEFAULT 0
);
-- ตอน INSERT ข้ามคอลัมน์ จะได้ค่า Default แทน NULL