Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ข้ามคอลัมน์ขณะ INSERT ข้อมูลใน MySQL (ค่า DEFAULT/NULL จะถูกใช้)

บทนำ

ใน 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