MySQL INSERT INTO Query: วิธีเพิ่มแถวในตาราง (ตัวอย่าง)
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'
ตัวอย่าง:
สมมติว่าเรามีรายชื่อสมาชิกห้องสมุดใหม่ต่อไปนี้ที่จำเป็นต้องเพิ่มเข้าไปในฐานข้อมูล
| ชื่อเต็ม | วัน เดือน ปีเกิด | เพศ | ที่อยู่ทางกายภาพ | รหัสไปรษณีย์ | เบอร์ติดต่อ | ที่อยู่อีเมล |
|---|---|---|---|---|---|---|
| ลีโอนาร์ด ฮอฟสตัดเตอร์ | ชาย | วู้ดเครสต์ | 0845738767 | |||
| เชลดอนคูเปอร์ | ชาย | วู้ดเครสต์ | 0976736763 | |||
| ราชสีห์ คูทรพาลี | ชาย | แฟร์ | 0938867763 | |||
| เลสลี่ วิงเคิล | 14/02/1984 | ชาย | 0987636553 | |||
| ฮาวเวิร์ด โวโลวิทซ์ | 24/08/1981 | ชาย | South Park | PO Box 4563 | 0987786553 | lwolowitz@email.me |
มา INSERT ข้อมูลทีละรายการกัน เราจะเริ่มด้วยลีโอนาร์ด ฮอฟสตัดเตอร์ เราจะถือว่าหมายเลขติดต่อเป็นประเภทข้อมูลตัวเลข และไม่ใส่หมายเลขไว้ในเครื่องหมายคำพูดเดี่ยว
INSERT INTO `members` (`full_names`,`gender`,`physical_address`,`contact_number`) VALUES ('Leonard Hofstadter','Male','Woodcrest',0845738767);
การดำเนินการตามสคริปต์ด้านบนจะปล่อย 0 จากหมายเลขติดต่อของลีโอนาร์ด เนื่องจากค่าจะถือเป็นค่าตัวเลข และศูนย์ (0) ที่จุดเริ่มต้นจะถูกละทิ้งเนื่องจากไม่มีนัยสำคัญ
เพื่อหลีกเลี่ยงปัญหาดังกล่าว ค่าจะต้องอยู่ในเครื่องหมายคำพูดเดี่ยวดังที่แสดงด้านล่าง –
INSERT INTO `members` (`full_names`,`gender`,`physical_address`,`contact_number`) VALUES ('Sheldon Cooper','Male','Woodcrest', '0976736763');
ในกรณีข้างต้น ศูนย์ (0) จะไม่ถูกทิ้ง
การเปลี่ยนลำดับของคอลัมน์ไม่มีผลกับการสืบค้น INSERT MySQL ตราบใดที่ค่าที่ถูกต้องได้รับการแมปกับคอลัมน์ที่ถูกต้อง
แบบสอบถามที่แสดงด้านล่างแสดงให้เห็นถึงจุดข้างต้น
INSERT INTO `members` (`contact_number`,`gender`,`full_names`,`physical_address`) VALUES ('0938867763','Male','Rajesh Koothrappali','Woodcrest');
ข้อความค้นหาข้างต้นข้ามคอลัมน์วันเดือนปีเกิด โดยค่าเริ่มต้น, MySQL จะแทรกค่า NULL ในคอลัมน์ที่ถูกละเว้นในแบบสอบถาม INSERT
ตอนนี้เรามาแทรกบันทึกของ Leslie ซึ่งมีวันเดือนปีเกิดมาด้วย ค่าวันที่ควรอยู่ในเครื่องหมายคำพูดเดี่ยวโดยใช้รูปแบบ "ปปปป-ดด-วว"
INSERT INTO `members` (`full_names`,`date_of_birth`,`gender`,`physical_address`,`contact_number`) VALUES ('Leslie Winkle','1984-02-14','Male','Woodcrest', '0987636553');
ข้อความค้นหาข้างต้นทั้งหมดระบุคอลัมน์และแมปกับค่าใน MySQL แทรกคำสั่ง หากเราระบุค่าสำหรับคอลัมน์ทั้งหมดในตาราง เราก็สามารถละคอลัมน์จาก MySQL แทรกแบบสอบถาม
ตัวอย่าง:-
INSERT INTO `members` VALUES (9,'Howard Wolowitz','Male','1981-08-24', 'SouthPark','P.O. Box 4563', '0987786553', 'lwolowitz[at]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 ได้ตัดเลขศูนย์ (0) ออกจากหมายเลขติดต่อแล้ว หมายเลขติดต่ออื่น ๆ ไม่ได้ตัดเลขศูนย์ (0) ออกตั้งแต่ต้น
การแทรกลงในตารางจากตารางอื่น
คำสั่ง 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`))
รันสคริปต์ด้านบนเพื่อสร้างตาราง
ตอนนี้เรามาแทรกแถวทั้งหมดจากตารางหมวดหมู่ลงในตารางเก็บถาวรหมวดหมู่กัน สคริปต์ที่แสดงด้านล่างนี้ช่วยให้เราทำสิ่งนั้นได้
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 สามารถใช้เพื่อดำเนินการประเภทแบบสอบถามต่อไปนี้:
- สิ่งที่ใส่เข้าไป
- เลือก
- บันทึก
- ลบ
มีรูปแบบประโยคดังนี้
mysqli_query($db_handle,$query);
ที่นี่
“mysqli_query(…)” คือฟังก์ชันที่ดำเนินการแบบสอบถาม SQL
“$query” คือแบบสอบถาม SQL ที่จะดำเนินการ
“$link_identifier” เป็นทางเลือก ซึ่งสามารถใช้เพื่อส่งผ่านลิงก์การเชื่อมต่อเซิร์ฟเวอร์ได้
ตัวอย่าง
$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);
}
}
สรุป
- คำสั่ง INSERT ใช้เพื่อเพิ่มข้อมูลใหม่ลงในตาราง MySql จะเพิ่มแถวใหม่เมื่อดำเนินการคำสั่งแล้ว
- ค่าวันที่และสตริงควรอยู่ในเครื่องหมายคำพูดเดี่ยว
- ค่าตัวเลขไม่จำเป็นต้องอยู่ในเครื่องหมายคำพูด
- คำสั่ง INSERT ยังสามารถใช้เพื่อแทรกข้อมูลจากตารางหนึ่งไปยังอีกตารางหนึ่งได้
