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 ยังสามารถใช้เพื่อแทรกข้อมูลจากตารางหนึ่งไปยังอีกตารางหนึ่งได้