MySQL INSERT INTO Query: วิธีเพิ่มแถวในตาราง (ตัวอย่าง)
⚡ สรุปอย่างชาญฉลาด
MySQL คำสั่ง INSERT INTO จะเพิ่มแถวใหม่ลงในตาราง โดยอาจระบุชื่อคอลัมน์เป้าหมายอย่างชัดเจน หรือระบุค่าสำหรับแต่ละคอลัมน์ การใส่เครื่องหมายคำพูดที่ถูกต้องสำหรับสตริง ตัวเลข และวันที่ จะเป็นตัวกำหนดว่าข้อมูลที่จัดเก็บจะยังคงอยู่ครบถ้วนหรือไม่

INSERT INTO คืออะไร?
ใส่ลงใน คำสั่ง INSERT ใช้สำหรับจัดเก็บข้อมูลในตาราง โดยคำสั่งนี้จะสร้างแถวใหม่ในตารางเพื่อจัดเก็บข้อมูล ซึ่งโดยปกติแล้วข้อมูลจะมาจากโปรแกรมแอปพลิเคชันที่ทำงานอยู่บนฐานข้อมูล
ไวยากรณ์พื้นฐาน
ลองดูที่ไวยากรณ์พื้นฐานของ INSERT INTO MySQL คำสั่ง:
INSERT INTO `table_name`(column_1,column_2,...) VALUES (value_1,value_2,...);
ที่นี่
- INSERT INTO `table_name` เป็นคำสั่งที่บอก MySQL เซิร์ฟเวอร์เพื่อเพิ่มแถวใหม่ลงในตารางชื่อ `table_name.`
- (column_1,column_2,…) ระบุคอลัมน์ที่จะอัปเดตในคอลัมน์ใหม่ MySQL แถว
- VALUES (value_1,value_2,…) ระบุค่าที่จะเพิ่มลงในแถวใหม่
เมื่อจัดเตรียมค่าข้อมูลที่จะแทรกเข้าในตารางใหม่ ควรพิจารณาสิ่งต่อไปนี้:
- ประเภทข้อมูลสตริง – ค่าสตริงทั้งหมดควรอยู่ในเครื่องหมายคำพูดเดี่ยว
- ประเภทข้อมูลตัวเลข – ค่าตัวเลขทั้งหมดควรระบุโดยตรงโดยไม่ต้องใส่เครื่องหมายอัญประกาศเดี่ยวหรือเครื่องหมายอัญประกาศคู่
- ประเภทข้อมูลวันที่ – ใส่ค่าวันที่ไว้ในเครื่องหมายคำพูดเดี่ยวในรูปแบบ 'YYYY-MM-DD'
การแทรกหลายแถวพร้อมกัน
คำสั่ง INSERT เดียวสามารถส่งข้อมูลได้หลายแถว โดยคั่นแต่ละชุดค่าด้วยเครื่องหมายจุลภาค การใช้คำสั่งเดียวเร็วกว่าหลายคำสั่ง เพราะดัชนีจะได้รับการอัปเดตเพียงครั้งเดียว
INSERT INTO `categories`(`category_name`,`remarks`) VALUES ('Documentary', 'Factual films'), ('Musical', 'Song driven films');
MySQL ตัวอย่างคำสั่ง INSERT INTO
สมมติว่าเรามีรายชื่อสมาชิกห้องสมุดใหม่ต่อไปนี้ที่จำเป็นต้องเพิ่มเข้าไปในฐานข้อมูล
| ชื่อเต็ม | วัน เดือน ปีเกิด | เพศ | ที่อยู่ทางกายภาพ | รหัสไปรษณีย์ | เบอร์ติดต่อ | ที่อยู่อีเมล |
|---|---|---|---|---|---|---|
| ลีโอนาร์ด ฮอฟสตัดเตอร์ | ชาย | วู้ดเครสต์ | 0845738767 | |||
| เชลดอนคูเปอร์ | ชาย | วู้ดเครสต์ | 0976736763 | |||
| ราชสีห์ คูทรพาลี | ชาย | วู้ดเครสต์ | 0938867763 | |||
| เลสลี่ วิงเคิล | 14/02/1984 | ชาย | วู้ดเครสต์ | 0987636553 | ||
| ฮาวเวิร์ด โวโลวิทซ์ | 24/08/1981 | ชาย | SouthPark | PO Box 4563 | 0987786553 | lwolowitz@email.me |
เราจะแทรกข้อมูลทีละแถว โดยเริ่มจาก Leonard Hofstadter เราจะถือว่าหมายเลขติดต่อเป็นข้อมูลประเภทตัวเลข และจะไม่ใส่เครื่องหมายอัญประกาศเดี่ยวครอบหมายเลขนั้น
INSERT INTO `members` (`full_names`,`gender`,`physical_address`,`contact_number`) VALUES ('Leonard Hofstadter','Male','Woodcrest',0845738767);
การเรียกใช้สคริปต์ข้างต้นจะลบเลข 0 ออกจากหมายเลขติดต่อของเลียวนาร์ด เนื่องจากค่าดังกล่าวถูกมองว่าเป็นตัวเลข และเลขศูนย์นำหน้าไม่มีความสำคัญ
เพื่อหลีกเลี่ยงปัญหาดังกล่าว ค่าจะต้องอยู่ในเครื่องหมายอัญประกาศเดี่ยว ดังแสดงด้านล่าง
INSERT INTO `members` (`full_names`,`gender`,`physical_address`,`contact_number`) VALUES ('Sheldon Cooper','Male','Woodcrest', '0976736763');
⚠️ เคล็ดลับ: จัดเก็บหมายเลขโทรศัพท์ รหัสไปรษณีย์ และตัวระบุที่คล้ายกันในคอลัมน์ข้อความ เช่น VARCHAR คอลัมน์ตัวเลขไม่สามารถมีเลขศูนย์นำหน้าได้
การเปลี่ยนลำดับคอลัมน์
การเปลี่ยนลำดับของคอลัมน์ไม่มีผลกับการสืบค้น INSERT MySQLตราบใดที่ค่าที่ถูกต้องได้ถูกกำหนดให้กับคอลัมน์ที่ถูกต้องแล้ว ตัวอย่างคำสั่งค้นหาด้านล่างนี้แสดงให้เห็นถึงประเด็นนี้
INSERT INTO `members` (`contact_number`,`gender`,`full_names`,`physical_address`) VALUES ('0938867763','Male','Rajesh Koothrappali','Woodcrest');
ข้อความค้นหาข้างต้นข้ามคอลัมน์วันเดือนปีเกิด โดยค่าเริ่มต้น, MySQL แทรกค่า NULL ลงในคอลัมน์ที่ไม่ได้ระบุไว้ในคำสั่ง INSERT
ตอนนี้เรามาแทรกข้อมูลของเลสลี่ ซึ่งมีวันเดือนปีเกิดระบุไว้แล้ว โดยค่าวันที่ต้องใส่ไว้ในเครื่องหมายอัญประกาศเดี่ยวในรูปแบบ 'YYYY-MM-DD'
INSERT INTO `members` (`full_names`,`date_of_birth`,`gender`,`physical_address`,`contact_number`) VALUES ('Leslie Winkle','1984-02-14','Male','Woodcrest', '0987636553');
การละเว้นรายการคอลัมน์
แบบสอบถามข้างต้นทั้งหมดได้ตั้งชื่อคอลัมน์และแมปคอลัมน์เหล่านั้นกับค่าแล้ว หากเราใส่ค่าให้กับทุกคอลัมน์ในตาราง รายการคอลัมน์ก็สามารถละเว้นได้จากแบบสอบถาม MySQL แทรกแบบสอบถาม
INSERT INTO `members` VALUES (9,'Howard Wolowitz','Male','1981-08-24', 'SouthPark','P.O. Box 4563', '0987786553', 'lwolowitz@email.me');
ตอนนี้เรามาใช้ คำสั่ง SELECT เพื่อดูข้อมูลทุกแถวในตารางสมาชิก
SELECT * FROM `members`;
| หมายเลขสมาชิก | เต็ม_ชื่อ | เพศ | วันเกิด | ทางกายภาพ_ที่อยู่ | รหัสไปรษณีย์ | เบอร์ติดต่อ | อีเมล |
|---|---|---|---|---|---|---|---|
| 1 | เจเน็ต โจนส์ | หญิง | 21-07-1980 | ถนนสายแรก แปลงที่ 4 | กระเป๋าส่วนตัว | 0759 253 542 | janetjones@yagoo.cm |
| 2 | เจเน็ต สมิธ โจนส์ | หญิง | 23-06-1980 | เมลโรส 123 | NULL | NULL | jj@fstreet.com |
| 3 | โรเบิร์ต ฟิล | ชาย | 12-07-1989 | 3 ถนน 34 | NULL | 12345 | rm@tstreet.com |
| 4 | กลอเรียวิลเลียมส์ | หญิง | 14-02-1984 | 2 ถนน 23 | NULL | NULL | NULL |
| 5 | ลีโอนาร์ด ฮอฟสตัดเตอร์ | ชาย | NULL | วู้ดเครสต์ | NULL | 845738767 | NULL |
| 6 | เชลดอนคูเปอร์ | ชาย | NULL | วู้ดเครสต์ | NULL | 0976736763 | NULL |
| 7 | ราชสีห์ คูทรพาลี | ชาย | NULL | วู้ดเครสต์ | NULL | 0938867763 | NULL |
| 8 | เลสลี่ วิงเคิล | ชาย | 14-02-1984 | วู้ดเครสต์ | NULL | 0987636553 | NULL |
| 9 | ฮาวเวิร์ด โวโลวิทซ์ | ชาย | 24-08-1981 | SouthPark | PO Box 4563 | 0987786553 | lwolowitz@email.me |
โปรดสังเกตว่าหมายเลขติดต่อของ Leonard Hofstadter ได้ตัดเลขศูนย์นำหน้าออกไปแล้ว ตามที่คาดการณ์ไว้ ส่วนหมายเลขที่อ้างอิงยังคงมีเลขศูนย์นำหน้าอยู่
การแทรกลงในตารางจากตารางอื่น
คำสั่ง INSERT ยังสามารถใช้เพื่อแทรกข้อมูลลงในตารางจากตารางอื่นได้ ไวยากรณ์พื้นฐานดังแสดงด้านล่าง
INSERT INTO table_1 SELECT * FROM table_2;
ต่อไปนี้เราจะสร้างตารางจำลองสำหรับหมวดหมู่ภาพยนตร์ โดยตั้งชื่อว่า categories_archive สคริปต์ด้านล่างนี้คือโค้ดสำหรับสร้างตารางดังกล่าว สร้างตาราง.
CREATE TABLE `categories_archive` ( `category_id` int(11) AUTO_INCREMENT, `category_name` varchar(150) DEFAULT NULL, `remarks` varchar(500) DEFAULT NULL, PRIMARY KEY (`category_id`))
เรียกใช้สคริปต์ด้านบนเพื่อสร้างตาราง ตอนนี้เรามาแทรกข้อมูลทั้งหมดจากตาราง categories ลงในตาราง categories archive กัน
INSERT INTO `categories_archive` SELECT * FROM `categories`;
โครงสร้างตารางต้องเหมือนกันเพื่อให้สคริปต์นั้นทำงานได้ สคริปต์ที่มีประสิทธิภาพมากกว่าจะจับคู่ชื่อคอลัมน์ในตารางปลายทางกับชื่อคอลัมน์ในตารางที่มีข้อมูล ดังแสดงด้านล่าง
INSERT INTO `categories_archive`(category_id,category_name,remarks) SELECT category_id,category_name,remarks FROM `categories`;
การเรียกใช้คำสั่ง SELECT ด้านล่างจะให้ผลลัพธ์ดังต่อไปนี้
SELECT * FROM `categories_archive`;
| Category_id | category_name | หมายเหตุ |
|---|---|---|
| 1 | ความขบขัน | ภาพยนตร์ที่มีอารมณ์ขัน |
| 2 | โรแมนติก | เรื่องราวของความรัก |
| 3 | มหากาพย์ | เรื่องราวภาพยนตร์โบราณ |
| 4 | สยองขวัญ | NULL |
| 5 | นิยายวิทยาศาสตร์ | NULL |
| 6 | ที่ทำให้ตื่นเต้นเร้าใจ | NULL |
| 7 | การกระทำ | NULL |
| 8 | โรแมนติกคอมเมดี้ | NULL |
| 9 | การ์ตูน | NULL |
| 10 | การ์ตูน | NULL |
ตัวอย่าง PHP: แทรกลงใน MySQL ตาราง
ฟังก์ชัน mysqli_query ใช้เพื่อดำเนินการ SQL คำสั่ง SQL สำหรับ PHP สามารถรันคำสั่ง Insert, Select, Update และ Delete ได้ โดยมีไวยากรณ์ดังต่อไปนี้
mysqli_query($db_handle,$query);
ที่นี่
- “mysqli_query(…)” คือฟังก์ชันที่ดำเนินการแบบสอบถาม SQL
- “$query” คือคำสั่ง SQL ที่จะถูกเรียกใช้งาน
- “$db_handle” คือลิงก์การเชื่อมต่อเซิร์ฟเวอร์ที่ได้รับคืนจาก mysqli_connect
ตัวอย่าง
$servername = "localhost"; $username = "alex"; $password = "yPXuPT"; $dbname = "afmznf"; // Create connection $conn = mysqli_connect($servername, $username, $password, $dbname); // Check connection if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } $sql = "INSERT INTO addkeyworddata(link, keyword) VALUES ('https://www.guru99.com/','1000')"; if (mysqli_query($conn, $sql)) { echo "New record created successfully" . '<br>'; } else { echo "Error: " . $sql . "<br>" . mysqli_error($conn); }
