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

MySQL: แทรกข้อมูลโดยไม่ระบุชื่อคอลัมน์ (Implicit Column List)

การ 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 (...) โดยไม่ระบุคอลัมน์ได้ แต่ต้องส่งค่าครบทุกคอลัมน์ตามลำดับ ควรระบุคอลัมน์เสมอเพื่อความปลอดภัยและบำรุงรักษาง่าย