แทรกแถวหากไม่มีค่าใน Postgresl

Insert Row If Values Don T Already Exist Postgresl



การรู้และจัดการระบบการจัดการฐานข้อมูลทำให้เราคุ้นเคยกับการเปลี่ยนแปลงเกี่ยวกับฐานข้อมูล ซึ่งโดยทั่วไปจะเกี่ยวข้องกับการสร้าง แทรก อัปเดต และลบฟังก์ชันที่ใช้กับตารางเฉพาะ ในบทความปัจจุบัน เราจะมาดูกันว่าข้อมูลถูกจัดการโดยวิธีการแทรกอย่างไร เราต้องสร้างตารางที่เราต้องการแทรก คำสั่ง Insert ใช้สำหรับเพิ่มข้อมูลใหม่ในแถวของตาราง คำสั่งแทรก PostgreSQL ครอบคลุมกฎบางอย่างสำหรับการดำเนินการค้นหาที่ประสบความสำเร็จ อันดับแรก เราต้องพูดถึงชื่อตารางตามด้วยชื่อคอลัมน์ (แอตทริบิวต์) ที่เราต้องการแทรกแถว ประการที่สอง เราต้องป้อนค่า โดยคั่นด้วยเครื่องหมายจุลภาคหลังส่วนคำสั่ง VALUE สุดท้าย ทุกค่าต้องอยู่ในลำดับเดียวกัน เนื่องจากมีการจัดลำดับของรายการแอตทริบิวต์ในขณะที่สร้างตารางเฉพาะ

ไวยากรณ์

>> แทรก เข้าไปข้างในชื่อตาราง(คอลัมน์ 1,คอลัมน์) ค่า ('value1', 'value2');

ในที่นี้ คอลัมน์คือแอตทริบิวต์ของตาราง คำหลัก VALUE ใช้เพื่อป้อนค่า 'ค่า' คือข้อมูลของตารางที่จะป้อน







การแทรกฟังก์ชันแถวในเชลล์ PostgreSQL (psql)

หลังจากติดตั้ง postgresql สำเร็จ เราจะป้อนชื่อฐานข้อมูล หมายเลขพอร์ต และรหัสผ่าน Psql จะถูกเริ่มต้น จากนั้นเราจะดำเนินการค้นหาตามลำดับ





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





>> สร้าง ตารางลูกค้า(NSint,ชื่อ วาร์ชาร์ (40), ประเทศวาร์ชาร์ (40));

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



>> แทรก เข้าไปข้างในลูกค้า(NS,ชื่อ, ประเทศ) ค่า ('1','Alia', 'ปากีสถาน');

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

>> เลือก*จากลูกค้า;

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

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

>> สร้าง ตารางถึง(ชื่อ วาร์ชาร์ (30),ระดับ วาร์ชาร์ (40));
>> แทรก เข้าไปข้างในถึงค่า ('อาม่า'1),('ภีสมะ','2'),('จาเวด','3'),('ลง',4');

ค่าสี่ค่าถูกแทรกลงในตารางโดยใช้ทฤษฎีเกิน เราตรวจสอบได้โดยใช้คำสั่ง select

ในทำนองเดียวกัน เราจะสร้างตาราง b โดยมีแอตทริบิวต์ของชื่อและหัวเรื่องทั้งหมด แบบสอบถาม 2 รายการเดียวกันจะถูกนำมาใช้เพื่อแทรกและดึงข้อมูลบันทึกจากตารางที่เกี่ยวข้อง

>> สร้าง ตารางNS(ชื่อทั้งหมด varchar(30), เรื่อง varchar(70));

ดึงบันทึกโดยทฤษฎีการเลือก

>> เลือก*จากNS;

การใส่ค่าของ table NS ในตารางเราจะใช้แบบสอบถามต่อไปนี้ แบบสอบถามนี้จะทำงานในลักษณะที่ชื่อทั้งหมดใน table NS จะถูกแทรกลงในตาราง ถึง ด้วยการนับตัวเลขที่แสดงจำนวนครั้งของจำนวนเฉพาะในคอลัมน์ที่เกี่ยวข้องของตาราง NS . b.allnames แสดงถึงฟังก์ชันวัตถุเพื่อระบุตาราง ฟังก์ชัน Count (b.allnames) ทำงานเพื่อนับจำนวนการเกิดขึ้นทั้งหมด เนื่องจากทุกชื่อเกิดขึ้นพร้อมกัน คอลัมน์ผลลัพธ์จะมี 1 หมายเลข

>> แทรก เข้าไปข้างในถึง(ชื่อ,ระดับ) เลือกb.allnames, นับ(b.allnames) จากNSกลุ่ม โดยb.allnames;

ตัวอย่างที่ 4: INSERT ข้อมูลในแถวหากไม่มีอยู่
แบบสอบถามนี้ใช้เพื่อป้อนแถวหากไม่มีอยู่ ประการแรก แบบสอบถามที่ให้มาจะตรวจสอบว่าแถวนั้นมีอยู่แล้วหรือไม่ หากมีอยู่แล้ว ข้อมูลจะไม่ถูกเพิ่ม และหากไม่มีข้อมูลในแถว การแทรกใหม่จะถูกระงับ ที่นี่ tmp เป็นตัวแปรชั่วคราวที่ใช้เก็บข้อมูลในบางครั้ง

>> แทรก เข้าไปข้างในNS(ทุกชื่อเรื่อง) เลือก*จาก (เลือก'กินซ่า'เช่นชื่อทั้งหมด 'อิสลาม'เช่นเรื่อง) เช่นtmpที่ไหน ไม่ มีอยู่ ( เลือกชื่อทั้งหมดจากNSที่ไหนชื่อทั้งหมด='ซุนดัส'ขีดจำกัด 1);

ตัวอย่างที่ 5: PostgreSQL Upsert โดยใช้คำสั่ง INSERT
ฟังก์ชั่นนี้มีสองแบบ:

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

เริ่มแรกเราจะสร้างตารางที่มีข้อมูลตัวอย่าง

>> สร้าง ตารางtbl2(NSINT หลัก กุญแจ,ชื่อ ตัวละครที่แตกต่างกัน);

หลังจากสร้างตาราง เราจะแทรกข้อมูลใน tbl2 โดยใช้แบบสอบถาม:

>> แทรก เข้าไปข้างในtbl2ค่า (1,'อุซมา'),(2,'อับดุล'),(3,'แฮมนา'),(4,'ฟาติมา'),(5,'ชิซ่า'),(6,'จาเวเรีย');

หากเกิดข้อขัดแย้ง ให้อัปเดต:

>>แทรก เข้าไปข้างในtbl2ค่า (8,'ขี่') บนขัดแย้ง(NS) ทำ อัปเดต ชุด ชื่อ=ไม่รวมชื่อ;

ตอนแรกเราจะป้อนข้อมูลโดยใช้ข้อความค้นหาข้อขัดแย้งของ id 8 และชื่อ Rida แบบสอบถามเดียวกันจะถูกใช้ตามรหัสเดียวกัน จะเปลี่ยนชื่อ ตอนนี้คุณจะสังเกตเห็นว่าชื่อจะเปลี่ยนไปอย่างไรใน id เดียวกันในตาราง

>> แทรก เข้าไปข้างในtbl2ค่า (8,'ทำงาน') บนขัดแย้ง(NS) ทำ อัปเดต ชุด ชื่อ =ไม่รวมชื่อ;

เราพบว่ามีความขัดแย้งใน id 8 ดังนั้นจึงมีการอัปเดตแถวที่ระบุ

หากเกิดความขัดแย้งอย่าทำอะไรเลย

>> แทรก เข้าไปข้างในtbl2ค่า (9,'ฮิระ') บนขัดแย้ง(NS) ทำ ไม่มีอะไร;

การใช้แบบสอบถามนี้ แถวใหม่จะถูกแทรก หลังจากนั้นเราจะใช้ if แบบสอบถามเดียวกันเพื่อดูข้อขัดแย้งที่เกิดขึ้น

>>แทรก เข้าไปข้างในtbl2ค่า (9,'ฮิระ') บนขัดแย้ง(NS) ทำ ไม่มีอะไร;

ตามภาพด้านบน คุณจะเห็นว่าหลังจากดำเนินการค้นหา INSERT 0 0 แสดงว่าไม่มีการป้อนข้อมูล

บทสรุป

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