คอมพิวเตอร์และอุปกรณ์ทันสมัย

คำสั่งนี้จะเพิ่มหนึ่งหรือหลายระเบียนลงในตาราง (ดำเนินการแบบสอบถามแบบผนวก)

ไวยากรณ์

ขอเพิ่มหลายระเบียน:

ใส่ลงใน สุดท้าย_วัตถุ [(สนาม1[, สนาม2[, ...]])]
เลือก [ แหล่งที่มา.]สนาม1[, สนาม2[, ...]
จาก ตาราง_การแสดงออก

ขอเพิ่มหนึ่งบันทึก:

ใส่ลงใน สุดท้าย_วัตถุ [(สนาม1[, สนาม2[, ...]])]
ค่านิยม ( สนาม1[, สนาม2[, ...])

คำสั่ง INSERT INTO ประกอบด้วยองค์ประกอบต่อไปนี้:

ส่วนหนึ่ง

คำอธิบาย

สุดท้าย_วัตถุ

ชื่อของตารางหรือคิวรีที่มีการเพิ่มระเบียน

สนาม1, สนาม2

หลังจากการโต้เถียง สุดท้าย_วัตถุ- ชื่อของฟิลด์ที่จะเพิ่มข้อมูล หลังจากการโต้แย้ง แหล่งที่มา- ชื่อของฟิลด์ที่ดึงข้อมูลออกมา

ภายนอก_ฐานข้อมูล

เส้นทางไปยังฐานข้อมูลภายนอก สำหรับคำอธิบายของพาธ โปรดดูบทความในส่วนคำสั่ง IN

แหล่งที่มา

ชื่อของตารางหรือคิวรีที่ใช้คัดลอกเรกคอร์ด

ตาราง_การแสดงออก

ชื่อตารางตั้งแต่หนึ่งชื่อขึ้นไปที่คุณต้องการดึงข้อมูลระเบียน อาร์กิวเมนต์นี้อาจเป็นชื่อของแต่ละตาราง นิพจน์ผลลัพธ์ที่สร้างขึ้นโดยใช้ INNER JOIN, LEFT JOIN หรือ RIGHT JOIN หรือแบบสอบถามที่เก็บไว้

ค่า1, ค่า2

ค่าที่จะถูกเพิ่มลงในฟิลด์เฉพาะของเรกคอร์ดใหม่ แต่ละค่าจะถูกแทรกลงในฟิลด์ที่สอดคล้องกับตำแหน่งในรายการ: ค่า1เพิ่มไปยัง สนาม1รายการใหม่ ค่า2- วี สนาม2เป็นต้น คุณต้องคั่นค่าด้วยเครื่องหมายจุลภาคและใส่ช่องข้อความด้วยเครื่องหมายคำพูด (" ")

หมายเหตุ

คำสั่ง INSERT INTO สามารถเพิ่มระเบียนเดียวลงในตารางโดยใช้ไวยากรณ์ด้านบน ในกรณีนี้ คุณจะต้องระบุชื่อและค่าสำหรับแต่ละฟิลด์ในเรกคอร์ด คุณต้องระบุฟิลด์ทั้งหมดในบันทึกที่กำหนดค่าและค่าที่เกี่ยวข้อง หากคุณไม่ได้ระบุค่าฟิลด์ ค่าดังกล่าวจะถูกกำหนดค่าเริ่มต้นหรือ NULL บันทึกจะถูกเพิ่มที่ส่วนท้ายของตาราง

คำสั่ง INSERT INTO ยังสามารถใช้เพื่อเพิ่มชุดของระเบียนจากตารางหรือแบบสอบถามอื่นโดยใช้ส่วนคำสั่ง SELECT... FROM ดังที่แสดงด้านบน (ดูไวยากรณ์แบบสอบถามสำหรับการเพิ่มหลายระเบียน) ในกรณีนี้ ส่วนคำสั่ง SELECT จะระบุฟิลด์ที่จะเพิ่มไปยังส่วนที่ระบุ สุดท้าย_วัตถุ.

แหล่งที่มาหรือ สุดท้าย_วัตถุอาจเป็นตารางหรือแบบสอบถามก็ได้ เมื่อได้รับแบบสอบถาม กลไกจัดการฐานข้อมูล Microsoft Access จะเพิ่มระเบียนลงในตารางทั้งหมดที่ส่งคืน

การใช้คำสั่ง INSERT INTO เป็นทางเลือก หากระบุไว้ จะต้องนำหน้าคำสั่ง SELECT

หากตารางเป้าหมายมีคีย์หลัก ตรวจสอบให้แน่ใจว่าค่าที่คุณเพิ่มลงในฟิลด์คีย์หลักอย่างน้อยหนึ่งรายการไม่ซ้ำกันและแตกต่างจาก โมฆะ; มิฉะนั้นรายการจะไม่ถูกเพิ่ม

หากมีการเพิ่มระเบียนลงในตารางที่มีเขตข้อมูลตัวนับและคุณต้องการกำหนดหมายเลขใหม่ ไม่ต้องรวมเขตข้อมูลตัวนับในแบบสอบถาม รวมฟิลด์ตัวนับในแบบสอบถามหากคุณต้องการรักษาค่าดั้งเดิมจากฟิลด์

คุณสามารถเพิ่มบันทึกลงในตารางในฐานข้อมูลอื่นได้โดยใช้ส่วนคำสั่ง IN

หากต้องการสร้างตาราง ให้ใช้คำสั่ง SELECT... INTO เพื่อสอบถามเพื่อสร้างตาราง

ก่อนที่คุณจะเรียกใช้แบบสอบถามเพิ่ม ให้ใช้แบบสอบถามแบบใช้เลือกข้อมูลที่มีเกณฑ์การเลือกเดียวกันเพื่อใช้ผลลัพธ์เพื่อกำหนดว่าระเบียนใดจะถูกเพิ่ม

แบบสอบถามแบบผนวกจะคัดลอกระเบียนจากตารางหนึ่งตารางขึ้นไปไปยังอีกตารางหนึ่ง ในกรณีนี้ ตารางที่มีบันทึกที่เพิ่มเข้ามายังคงไม่เปลี่ยนแปลง

แทนที่จะเพิ่มระเบียนจากตารางอื่น คุณสามารถตั้งค่าของแต่ละฟิลด์ในระเบียนใหม่แยกต่างหากได้โดยใช้ส่วนคำสั่ง VALUES หากละเว้นรายการฟิลด์ ส่วนคำสั่ง VALUES จะต้องรวมค่าที่สอดคล้องกันสำหรับแต่ละฟิลด์ตาราง มิฉะนั้นการดำเนินการ INSERT จะล้มเหลว ใช้คำสั่ง INSERT INTO ร่วมกับส่วนคำสั่ง VALUES สำหรับแต่ละระเบียนเพิ่มเติมที่คุณต้องการสร้าง

นอกเหนือจากคำสั่ง SELECT ที่กล่าวถึงก่อนหน้านี้ Data Manipulation Language (DML) ยังมีคำสั่งอื่นๆ อีกสามคำสั่ง: INSERT, UPDATE และ DELETE เช่นเดียวกับคำสั่ง SELECT คำสั่งทั้งสามนี้ทำงานบนตารางหรือมุมมอง บทความนี้กล่าวถึงคำสั่ง INSERT และอีกสองคำสั่งจะกล่าวถึงในบทความถัดไป

คำสั่ง INSERTแทรกแถว (หรือส่วนของแถว) ลงในตาราง คำสั่งนี้มีสองรูปแบบที่แตกต่างกัน:

INSERT tab_name [(col_list)] ค่าเริ่มต้น | ค่า (( DEFAULT | NULL | expression ) [ ,...n]) INSERT INTO tab_name | view_name [(col_list)] (select_statement |Execute_statement) แบบแผนไวยากรณ์

รูปแบบแรกของคำสั่งช่วยให้คุณสามารถแทรกหนึ่งแถว (หรือบางส่วน) ลงในตารางได้ และรูปแบบที่สองของคำสั่ง INSERT ช่วยให้คุณสามารถแทรกชุดผลลัพธ์ของคำสั่ง SELECT หรือขั้นตอนการจัดเก็บที่ดำเนินการโดยคำสั่ง EXECUTE ลงในตารางได้ ขั้นตอนที่เก็บไว้จะต้องส่งคืนข้อมูลที่จะแทรกลงในตาราง เมื่อใช้กับคำสั่ง INSERT คำสั่ง SELECT สามารถเลือกค่าจากตารางอื่นหรือตารางเดียวกันกับที่ข้อมูลถูกแทรกเข้าไปได้ ตราบใดที่ชนิดข้อมูลของคอลัมน์ที่เกี่ยวข้องเข้ากันได้

สำหรับทั้งสองแบบฟอร์ม ประเภทข้อมูลของแต่ละค่าที่แทรกจะต้องเข้ากันได้กับประเภทข้อมูลของคอลัมน์ตารางที่เกี่ยวข้อง สตริงและข้อมูลชั่วคราวทั้งหมดจะต้องอยู่ในเครื่องหมายคำพูด ค่าตัวเลขไม่จำเป็นต้องอยู่ในเครื่องหมายคำพูด

การแทรกแถวเดียว

สำหรับคำสั่ง INSERT ทั้งสองรูปแบบ การระบุรายการคอลัมน์อย่างชัดเจนเป็นทางเลือก การไม่แสดงรายการคอลัมน์จะเหมือนกับการระบุคอลัมน์ทั้งหมดในตาราง

พารามิเตอร์ค่าเริ่มต้นแทรกค่าเริ่มต้นให้กับทุกคอลัมน์ คอลัมน์ที่มีประเภทข้อมูล TIMESTAMP หรือคุณสมบัติ IDENTITY จะถูกแทรกโดยค่าเริ่มต้นด้วยค่าที่ระบบสร้างขึ้นโดยอัตโนมัติ สำหรับคอลัมน์ของประเภทข้อมูลอื่น ค่าเริ่มต้นที่ไม่ใช่ค่าว่างที่เกี่ยวข้องจะถูกแทรก หากมี หรือมิฉะนั้นจะเป็น NULL หากคอลัมน์ไม่อนุญาตให้มีค่า Null และไม่มีการกำหนดค่าเริ่มต้น คำสั่ง INSERT จะล้มเหลวและข้อความจะปรากฏขึ้น

ตัวอย่างด้านล่างแทรกแถวลงในตารางพนักงานในฐานข้อมูล SampleDb ซึ่งสาธิตการใช้คำสั่ง INSERT เพื่อแทรกข้อมูลจำนวนเล็กน้อยลงในฐานข้อมูล:

ใช้ SampleDb; แทรกลงในค่านิยมของพนักงาน (34990, "Andrey", "Batonov", "d1"); แทรกลงในค่านิยมของพนักงาน (38640, "Alexey", "Vasin", "d3");

มีสองวิธีในการแทรกค่าลงในแถวใหม่ คำสั่ง INSERT ในตัวอย่างด้านล่างใช้คีย์เวิร์ด NULL อย่างชัดเจนและแทรกค่า NULL ลงในคอลัมน์ที่เกี่ยวข้อง:

ใช้ SampleDb; แทรกลงในค่านิยมของพนักงาน (34991, "Andrey", "Batonov", NULL);

หากต้องการแทรกค่าลงในคอลัมน์บางคอลัมน์ (แต่ไม่ใช่ทั้งหมด) ของตาราง คุณจะต้องระบุคอลัมน์เหล่านั้นอย่างชัดเจน คอลัมน์ที่ไม่ระบุต้องอนุญาตค่า NULL หรือมีการกำหนดค่าเริ่มต้น

ใช้ SampleDb; INSERT INTO Employee(Id, FirstName, LastName) VALUES (34992, "Andrey", "Batonov");

สองตัวอย่างก่อนหน้านี้เทียบเท่ากัน ในตารางพนักงาน คอลัมน์เดียวที่อนุญาตให้มีค่า NULL คือคอลัมน์ DepartmentNumber และคอลัมน์อื่นๆ ทั้งหมดถูกปิดใช้งานโดยส่วนคำสั่ง NOT NULL ในคำสั่ง CREATE TABLE

ลำดับของค่าใน ข้อเสนอค่านิยมคำสั่ง INSERT อาจแตกต่างจากลำดับที่ระบุในคำสั่ง CREATE TABLE ในกรณีนี้ ลำดับจะต้องตรงกับลำดับที่แสดงคอลัมน์ที่เกี่ยวข้องในรายการคอลัมน์ ด้านล่างนี้เป็นตัวอย่างของการแทรกข้อมูลในลำดับที่แตกต่างจากต้นฉบับ:

ใช้ SampleDb; INSERT INTO Employee(หมายเลขแผนก, นามสกุล, Id, ชื่อ) ค่า ("d1", "Batonov", 34993, "Andrey");

การแทรกหลายแถว

รูปแบบที่สองของคำสั่ง INSERT จะแทรกแถวตั้งแต่หนึ่งแถวขึ้นไปที่เลือกโดยแบบสอบถามย่อยลงในตาราง ตัวอย่างด้านล่างแสดงวิธีการแทรกแถวลงในตารางโดยใช้รูปแบบที่สองของคำสั่ง INSERT ในกรณีนี้ แบบสอบถามจะดำเนินการเพื่อเลือกหมายเลขและชื่อของแผนกที่ตั้งอยู่ในมอสโก และชุดผลลัพธ์ผลลัพธ์จะถูกโหลดลงในตารางใหม่ที่สร้างขึ้นก่อนหน้านี้

ตาราง MoscowDepartment ใหม่ที่สร้างขึ้นในตัวอย่างด้านบนมีคอลัมน์เดียวกันกับตาราง Department ที่มีอยู่ ยกเว้นคอลัมน์ Location ที่หายไป แบบสอบถามย่อยในคำสั่ง INSERT จะเลือกแถวทั้งหมดในตาราง Department ซึ่งค่าคอลัมน์ Location คือ "Moscow" ซึ่งจะถูกแทรกลงในตารางใหม่ที่สร้างขึ้นที่จุดเริ่มต้นของแบบสอบถาม

ตัวอย่างด้านล่างแสดงอีกวิธีหนึ่งในการแทรกแถวลงในตารางโดยใช้รูปแบบที่สองของคำสั่ง INSERT ในกรณีนี้ แบบสอบถามจะถูกดำเนินการเพื่อเลือกหมายเลขบุคลากร หมายเลขโครงการ และวันที่เริ่มต้นโครงการสำหรับพนักงานทุกคนที่มีตำแหน่ง “ผู้จัดการ” ที่ทำงานในโครงการ p2 จากนั้นโหลดผลลัพธ์ผลลัพธ์ที่ตั้งค่าไว้ในตารางใหม่ที่สร้างขึ้นที่จุดเริ่มต้นของ แบบสอบถาม:

ใช้ SampleDb; สร้างทีมผู้จัดการตาราง (EmpId INT ไม่ใช่ NULL, ProjectNumber CHAR (4) ไม่ใช่ NULL, EnterDate DATE); แทรกลงในทีมผู้จัดการ (EmpId, ProjectNumber, EnterDate) เลือก EmpId, ProjectNumber, EnterDate จาก Works_on โดยที่งาน = "ผู้จัดการ";

ก่อนที่จะแทรกแถวโดยใช้คำสั่ง INSERT ตาราง MoscowDepartment และ ManagerTeam (ในตัวอย่างด้านบน) นั้นว่างเปล่า หากมีตารางอยู่แล้วและมีแถวที่มีข้อมูล แถวใหม่จะถูกเพิ่มเข้าไป

สวัสดีทุกคน! บทความนี้จะหารือเกี่ยวกับวิธีที่คุณสามารถทำได้ เพิ่มข้อมูลลงในตารางใน Microsoft SQL Server หากคุณคุ้นเคยกับภาษา T-SQL บ้างแล้วคุณอาจรู้ว่าตอนนี้เราจะพูดถึงคำสั่ง INSERT รวมถึงวิธีการใช้เพื่อเพิ่มข้อมูลลงในตาราง

มาเริ่มกันตามปกติด้วยทฤษฎีเล็กน้อย

คำสั่ง INSERT ใน T-SQL

แทรกเป็นคำสั่ง T-SQL ที่ออกแบบมาเพื่อเพิ่มข้อมูลลงในตาราง เช่น การสร้างบันทึกใหม่ คำสั่งนี้สามารถใช้ได้ทั้งในการเพิ่มแถวเดียวลงในตารางและเพื่อแทรกข้อมูลเป็นกลุ่ม คำสั่ง INSERT ต้องได้รับอนุญาตในการแทรกข้อมูล ( แทรก) ไปยังตารางเป้าหมาย

มีหลายวิธีในการใช้คำสั่ง INSERT กับข้อมูลที่ต้องการแทรก:

  • แสดงรายการค่าเฉพาะที่จะแทรก
  • การระบุชุดข้อมูลเป็นแบบสอบถาม SELECT
  • การระบุชุดข้อมูลในรูปแบบของการเรียกขั้นตอนที่ส่งคืนข้อมูลแบบตาราง

ไวยากรณ์แบบง่าย

แทรก [ตาราง] ( รายการคอลัมน์...) ค่านิยม ( รายการค่า...) หรือเลือก คำขอตัวอย่างหรือดำเนินการ ขั้นตอน

  • INSERT INTO เป็นคำสั่งเพื่อเพิ่มข้อมูลลงในตาราง
  • Table คือชื่อของตารางเป้าหมายที่คุณต้องการแทรกเรคคอร์ดใหม่
  • รายการคอลัมน์คือรายการชื่อคอลัมน์ของตารางที่จะแทรกข้อมูล โดยคั่นด้วยเครื่องหมายจุลภาค
  • ค่านิยมคือ ตัวสร้างค่าตารางโดยที่เราระบุค่าที่เราจะแทรกลงในตาราง
  • รายการค่าคือค่าที่จะแทรกโดยคั่นด้วยเครื่องหมายจุลภาค มีการแสดงรายการตามลำดับที่คอลัมน์ปรากฏในรายการคอลัมน์
  • SELECT เป็นแบบสอบถามเพื่อเลือกข้อมูลที่จะแทรกลงในตาราง ชุดผลลัพธ์ที่แบบสอบถามส่งคืนจะต้องตรงกับรายการคอลัมน์
  • EXECUTE เป็นการเรียกใช้โพรซีเดอร์เพื่อรับข้อมูลเพื่อแทรกลงในตาราง ชุดผลลัพธ์ที่ Stored Procedure ส่งคืนต้องตรงกับรายการคอลัมน์

นี่คือลักษณะไวยากรณ์แบบง่ายของคำสั่ง INSERT INTO โดยคร่าวๆ ในกรณีส่วนใหญ่ คุณจะเพิ่มระเบียนใหม่ลงในตารางด้วยวิธีต่อไปนี้

ไม่จำเป็นต้องเขียนรายการคอลัมน์ที่คุณจะแทรกข้อมูล ในกรณีนี้ลำดับจะถูกกำหนดตามลำดับที่แท้จริงของคอลัมน์ในตาราง คุณต้องจำลำดับนี้ไว้เมื่อคุณระบุค่าที่จะแทรกหรือเขียนแบบสอบถามเพื่อเลือก โดยส่วนตัวแล้ว ฉันขอแนะนำให้คุณระบุรายการคอลัมน์ที่คุณวางแผนจะเพิ่มข้อมูลเข้าไป

คุณควรจำไว้ว่ารายการคอลัมน์และรายการค่าตามลำดับจะต้องมีสิ่งที่เรียกว่าคอลัมน์ที่จำเป็น ซึ่งคือคอลัมน์ที่ไม่สามารถมีค่า NULL ได้ หากคุณไม่ได้ระบุและคอลัมน์ไม่มีค่าเริ่มต้น จะเกิดข้อผิดพลาดขึ้น

ฉันอยากจะทราบด้วยว่าประเภทข้อมูลของค่าที่คุณจะแทรกจะต้องตรงกับประเภทข้อมูลของคอลัมน์ที่จะแทรกค่านี้หรืออย่างน้อยก็รองรับการแปลงโดยนัย แต่ฉันแนะนำให้คุณควบคุมประเภทข้อมูล ( รูปแบบ) ค่าทั้งในรายการค่าและในแบบสอบถาม SELECT

ทฤษฎีพอแล้ว เรามาฝึกฝนกันต่อ

ข้อมูลเบื้องต้น

ในการเพิ่มข้อมูลลงในตาราง เราจำเป็นต้องมีตารางเอง ดังนั้นเรามาสร้างตารางขึ้นมาและลองเพิ่มระเบียนลงไปกันดีกว่า

บันทึก! ตัวอย่างทั้งหมดจะถูกดำเนินการใน ไมโครซอฟต์ SQL Server 2016 เอ็กซ์เพรส.

สร้างตาราง TestTable (ข้อมูลประจำตัว (1,1) ไม่เป็นโมฆะ (100) ไม่เป็นโมฆะ ไม่เป็นโมฆะ)

ตารางทดสอบของเราจะมีรายการผลิตภัณฑ์พร้อมราคา

นอกจากนี้ในตัวอย่าง เราจะใช้ขั้นตอนที่ส่งคืนค่าตารางเพื่อเพิ่มข้อมูลลงในตาราง ดังนั้นเรามาสร้างขั้นตอนนั้นด้วย

สร้างขั้นตอน TestProcedure AS BEGIN เลือกชื่อผลิตภัณฑ์, ราคาจาก TestTable END

ตัวอย่างเช่น จะส่งกลับข้อมูลจากตาราง TestTable ที่สร้างขึ้นใหม่

บันทึก!

ตามที่คุณเข้าใจ การอ่านเนื้อหานี้แสดงถึงการมีความรู้เกี่ยวกับภาษา T-SQL อยู่บ้าง ดังนั้นหากคุณมีบางอย่างไม่ชัดเจน ฉันขอแนะนำให้คุณทำความคุ้นเคยกับเนื้อหาต่อไปนี้:

ตัวอย่างที่ 1 – การเพิ่มเรกคอร์ดใหม่ลงในตารางโดยใช้ตัวสร้างค่าตาราง

ขั้นแรกให้ลองเพิ่มหนึ่งระเบียนแล้วดูผลลัพธ์ทันที เช่น มาเขียนคำขอตัวอย่างกัน

แทรกลงในค่า TestTable (ชื่อผลิตภัณฑ์, ราคา) ("คอมพิวเตอร์", 100) GO SELECT * FROM TestTable

คุณจะเห็นว่าหลังจากชื่อตารางเราแสดงรายการชื่อของคอลัมน์ที่เราจะเพิ่มข้อมูลโดยคั่นด้วยเครื่องหมายจุลภาคจากนั้นเราระบุคำหลัก ค่านิยมและในวงเล็บในลำดับเดียวกันโดยคั่นด้วยลูกน้ำเราเขียนค่าที่เราต้องการแทรก

หลังจากคำสั่ง INSERT ฉันเขียนคำสั่ง SELECT และคั่นด้วยคำสั่ง GO

ตอนนี้ลองจินตนาการว่าเราต้องเพิ่มสองสามบรรทัด เราจะเขียนคำขอต่อไปนี้สำหรับสิ่งนี้

INSERT INTO TestTable(ProductName, Price) VALUES ("คอมพิวเตอร์", 100), ("คีย์บอร์ด", 20), ("จอภาพ", 50) GO SELECT * FROM TestTable


ตัวอย่างที่ 2 - การเพิ่มแถวใหม่ลงในตารางโดยใช้แบบสอบถาม SELECT

บ่อยครั้งที่มีความจำเป็นต้องเพิ่มข้อมูลจำนวนมากลงในตาราง ตัวอย่างเช่น โดยอิงตามแบบสอบถามแบบใช้เลือกข้อมูล เช่น เลือก. ในการดำเนินการนี้ แทนที่จะระบุ VALUES เราเพียงแค่ต้องระบุคำขอ

แทรกลงในตารางทดสอบ(ชื่อผลิตภัณฑ์, ราคา) เลือกชื่อผลิตภัณฑ์, ราคาจากตารางทดสอบ WHERE Id >


ในตัวอย่างนี้ เราเขียนแบบสอบถาม SELECT ที่ส่งคืนข้อมูลจากตาราง TestTable แต่ไม่ใช่ทั้งหมด แต่เฉพาะรายการที่มี ID มากกว่า 2 เท่านั้น และผลลัพธ์ก็ถูกแทรกลงในตาราง TestTable เดียวกัน

เป็นตัวอย่างวิธีที่คุณสามารถเพิ่มระเบียนลงในตารางโดยไม่ต้องระบุรายการคอลัมน์ เรามาเขียนแบบสอบถามการแทรกข้อมูลอื่นที่จะทำสิ่งเดียวกันกับแบบสอบถามด้านบนทุกประการ เพียงแต่จะไม่แสดงรายการคอลัมน์ที่จะแทรก

แทรกลงใน TestTable เลือกชื่อผลิตภัณฑ์ ราคาจาก TestTable WHERE Id > 2 GO SELECT * FROM TestTable


ในกรณีนี้ เราแน่ใจว่าในตาราง TestTable คอลัมน์แรกคือ ProductName และคอลัมน์ที่สองคือ Price ดังนั้นเราจึงสามารถเขียนคอลัมน์ดังกล่าวได้ แต่ในทางปฏิบัติ เป็นการดีกว่าที่จะระบุรายการคอลัมน์

หากคุณสังเกตเห็นว่าในตัวอย่างทั้งหมดฉันไม่ได้ระบุคอลัมน์ Id แต่เรามีแล้ว ไม่มีข้อผิดพลาดเกิดขึ้น เนื่องจากคอลัมน์นี้มีคุณสมบัติ IDENTITY จึงสร้างตัวระบุโดยอัตโนมัติ ดังนั้นการแทรกข้อมูลลงในคอลัมน์ดังกล่าวจึงไม่สามารถทำได้

ตัวอย่างที่ 3 - การเพิ่มบันทึกใหม่ลงในตารางโดยใช้ขั้นตอนการจัดเก็บ

ตอนนี้เรามาแทรกข้อมูลลงในตารางที่กระบวนงานที่เก็บไว้จะกลับมาหาเรา ความหมายในที่นี้จะเหมือนกัน แทนที่จะเป็น VALUES และแทนที่จะเป็นคำขอ เราระบุถึงการเรียกกระบวนการ แต่ตามที่คุณเข้าใจ ลำดับและจำนวนคอลัมน์ที่ส่งคืนโดยโพรซีเดอร์จะต้องตรงกับรายการคอลัมน์ที่จะแทรกอย่างเคร่งครัด ( แม้ว่าไม่ได้ระบุรายการคอลัมน์ก็ตาม).

INSERT INTO TestTable(ชื่อผลิตภัณฑ์, ราคา) EXEC TestProcedure GO SELECT * FROM TestTable


ฉันหวังว่าเนื้อหานี้จะช่วยให้คุณเข้าใจคำแนะนำได้ ใส่ลงในและนั่นคือทั้งหมดที่ฉันมีตอนนี้!

อัปเดตครั้งล่าสุด: 07/13/2017

หากต้องการเพิ่มข้อมูล ให้ใช้คำสั่ง INSERT ซึ่งมีไวยากรณ์ที่เป็นทางการดังต่อไปนี้:

INSERT table_name [(column_list)] ค่า (value1, value2, ... valueN)

อันดับแรกคือนิพจน์ INSERT INTO จากนั้นในวงเล็บคุณสามารถระบุรายการคอลัมน์ที่คั่นด้วยเครื่องหมายจุลภาคที่ควรเพิ่มข้อมูลและในตอนท้ายหลังจากคำว่า VALUES ค่าที่จะเพิ่มสำหรับคอลัมน์จะแสดงรายการอยู่ใน วงเล็บ

ตัวอย่างเช่น สมมติว่าฐานข้อมูลต่อไปนี้ถูกสร้างขึ้นก่อนหน้านี้:

สร้างผลิตภัณฑ์ฐานข้อมูลdb; ไปใช้ผลิตภัณฑ์db; สร้างผลิตภัณฑ์ตาราง (Id INT IDENTITY PRIMARY KEY, ProductName NVARCHAR(30) NOT NULL, ผู้ผลิต NVARCHAR(20) NOT NULL, ProductCount INT DEFAULT 0, Price MONEY NOT NULL)

มาเพิ่มหนึ่งบรรทัดโดยใช้คำสั่ง INSERT:

แทรกค่าผลิตภัณฑ์ ("iPhone 7", "Apple", 5, 52000)

หลังจากดำเนินการสำเร็จใน SQL Server Management Studio ข้อความ "1 แถวที่ได้รับผลกระทบ" ควรปรากฏในฟิลด์ข้อความ:

ควรพิจารณาว่าค่าสำหรับคอลัมน์ในวงเล็บหลังจากคีย์เวิร์ด VALUES ถูกส่งไปตามลำดับที่ประกาศไว้ ตัวอย่างเช่น ในคำสั่ง CREATE TABLE ด้านบน คุณจะเห็นว่าคอลัมน์แรกคือ Id แต่เนื่องจากมีการระบุแอตทริบิวต์ IDENTITY ค่าของคอลัมน์นี้จะถูกสร้างขึ้นโดยอัตโนมัติและสามารถละเว้นได้ คอลัมน์ที่สองแสดงถึง ProductName ดังนั้นค่าแรกซึ่งเป็นสตริง "iPhone 7" จะถูกส่งผ่านไปยังคอลัมน์นั้น ค่าที่สอง - สตริง "Apple" จะถูกส่งไปยังคอลัมน์ที่สามของผู้ผลิตเป็นต้น นั่นคือค่าจะถูกส่งผ่านไปยังคอลัมน์ดังนี้:

    ชื่อสินค้า: "ไอโฟน 7"

    ผู้ผลิต: "แอปเปิล"

นอกจากนี้ เมื่อป้อนค่า คุณสามารถระบุคอลัมน์ทันทีที่จะเพิ่มค่าได้:

INSERT INTO Products (ชื่อผลิตภัณฑ์, ราคา, ผู้ผลิต) ค่า ("iPhone 6S", 41000, "Apple")

ที่นี่ค่าจะถูกระบุเพียงสามคอลัมน์เท่านั้น ยิ่งกว่านั้นตอนนี้ค่าจะถูกส่งตามลำดับคอลัมน์:

    ชื่อสินค้า: "ไอโฟน 6S"

    ผู้ผลิต: "แอปเปิล"

สำหรับคอลัมน์ที่ไม่ได้ระบุ (ในกรณีนี้คือ ProductCount) ค่าเริ่มต้นจะถูกเพิ่มหากระบุแอตทริบิวต์ DEFAULT หรือค่า NULL อย่างไรก็ตาม คอลัมน์ที่ไม่ได้ระบุจะต้องเป็นค่าว่างหรือมีแอตทริบิวต์ DEFAULT

เรายังสามารถเพิ่มหลายบรรทัดพร้อมกันได้:

ใส่มูลค่าผลิตภัณฑ์ ("iPhone 6", "Apple", 3, 36000), ("Galaxy S8", "Samsung", 2, 46000), ("Galaxy S8 Plus", "Samsung", 1, 56000)

ในกรณีนี้จะมีการเพิ่มสามแถวลงในตาราง

นอกจากนี้ เมื่อเพิ่ม เราสามารถระบุได้ว่าคอลัมน์ควรมีค่าเริ่มต้นโดยใช้คีย์เวิร์ด DEFAULT หรือค่า NULL:

แทรกลงในผลิตภัณฑ์ (ชื่อผลิตภัณฑ์, ผู้ผลิต, จำนวนผลิตภัณฑ์, ราคา) ค่า ("Mi6", "Xiaomi", ค่าเริ่มต้น, 28000)

ในกรณีนี้ จะใช้ค่าเริ่มต้นสำหรับคอลัมน์ ProductCount (หากตั้งค่าไว้ หากไม่ได้ตั้งค่าไว้ จะเป็น NULL)

หากคอลัมน์ทั้งหมดมีแอตทริบิวต์ DEFAULT ที่ระบุค่าเริ่มต้นหรือเป็นค่าว่าง คุณสามารถแทรกค่าเริ่มต้นสำหรับคอลัมน์ทั้งหมดได้:

แทรกลงในค่าเริ่มต้นของผลิตภัณฑ์

แต่ถ้าเรารับตารางผลิตภัณฑ์คำสั่งดังกล่าวจะล้มเหลวโดยมีข้อผิดพลาดเนื่องจากหลายฟิลด์ไม่มีแอตทริบิวต์ DEFAULT และในเวลาเดียวกันไม่อนุญาตให้มีค่า NULL

หากคุณสังเกตเห็นข้อผิดพลาด ให้เลือกส่วนของข้อความแล้วกด Ctrl+Enter
แบ่งปัน:
คอมพิวเตอร์และอุปกรณ์ทันสมัย