MySQL – วิธีแทรกแถวใหม่เฉพาะในกรณีที่ไม่มีข้อมูล

Mysql Withi Thaerk Thaew Him Chephaa Ni Krni Thi Mimi Khxmul



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

โพสต์นี้จะกล่าวถึงการแทรกแถวใหม่เฉพาะในกรณีที่ไม่มีข้อมูลอยู่ในตาราง MySQL ก่อนเริ่มโพสต์นี้ ตรวจสอบให้แน่ใจว่าคุณลงชื่อเข้าใช้เซิร์ฟเวอร์ภายใน MySQL ของคุณและเลือกฐานข้อมูลที่คุณต้องการทำงาน

แทรกแถวใหม่เฉพาะในกรณีที่ไม่มีข้อมูลโดยใช้คำสั่ง “INSERT IGNORE”

คำตอบสำหรับคำถามในชื่อนั้นค่อนข้างเรียบง่ายและตรงไปตรงมา เพียงใช้ปุ่ม “ แทรก ” คำหลักพร้อมกับ “ ไม่สนใจ ' คำสำคัญ. สิ่งนี้จะทำให้แน่ใจว่าข้อมูลใหม่หรือคิวรีแทรกจะทำงานเฉพาะเมื่อไม่พบรายการข้อมูลก่อนหน้านี้ใน MySQL หากต้องการดูภาพรวมโดยย่อ โปรดดูที่ไวยากรณ์ต่อไปนี้:







แทรก ไม่สนใจ เข้าไปข้างใน [ โต๊ะ - ชื่อ ] ( [ คอลัมน์1 - ชื่อ ] , [ คอลัมน์ 2 - ชื่อ ] , [ คอลัมน์ 3 - ชื่อ ] ) ค่านิยม ( [ มูลค่า1 ] , [ ค่า2 ] , [ มูลค่า3 ] ) ;

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



เลือก * จาก ลูกค้า;
แทรก ไม่สนใจ เข้าไปข้างใน ลูกค้า ( รหัส , ชื่อจริง , นามสกุล ) ค่านิยม ( 1 , 'จอห์น' , 'โดย' ) ;

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







แทรกแถวใหม่เฉพาะในกรณีที่ไม่มีข้อมูลโดยใช้คำสั่ง 'ที่ไม่มีอยู่'

ใน MySQL นั้น “ ที่ไหน ไม่มีอยู่จริง ” ข้อป้องกันการแทรกแถวหากมีอยู่แล้วในตารางเมื่อใช้ใน “ ใส่ลงใน ” คำสั่งที่มีแบบสอบถามย่อยเพื่อกำหนดเงื่อนไข เมื่อใช้ประโยคนี้กับข้อความค้นหาย่อย “ (เลือก * จาก [ชื่อตาราง] [ชื่อคอลัมน์]=[นิพจน์]); ” ตรวจสอบว่ามีแถวอยู่ในตารางที่ตรงตามเงื่อนไขหรือไม่ หากมีแถวอยู่ แสดงว่า “ ไม่มีที่ไหน ” ประโยคจะส่งกลับค่าเท็จและ “ เลือก ” คำสั่งจะไม่ส่งกลับแถวใดๆ เป็นผลให้แถวจะไม่ถูกแทรกลงในตาราง ไวยากรณ์มีให้ด้านล่าง:

แทรก เข้าไปข้างใน [ โต๊ะ - ชื่อ ] ( [ คอลัมน์1 - ชื่อ ] , [ คอลัมน์ 2 - ชื่อ ] , [ คอลัมน์ 3 - ชื่อ ] )
เลือก [ มูลค่า1 ] , [ ค่า2 ] , [ มูลค่า3 ]
ที่ไหน ไม่ มีอยู่ ( เลือก * จาก [ โต๊ะ - ชื่อ ] [ คอลัมน์ - ชื่อ ] = [ การแสดงออก ] ) ;

ลองดูตัวอย่างหากผู้ใช้ต้องการแทรกแถวในตารางพนักงานที่มีค่า “ 1 ”, “ อเมริกัน ' และ ' เฮนเรียต ” ในคอลัมน์ “ รหัส ”, “ ชื่อ บริษัท ' และ ' ชื่อผู้ติดต่อ ” ตามลำดับ แต่ถ้าเป็นแถวที่มี id เป็น “ 1 ไม่พบ ” ในตารางหรือไม่มีอยู่จริง ในกรณีนั้น ข้อความค้นหาจะกลายเป็น:



เลือก * จาก พนักงาน;

แทรก เข้าไปข้างใน พนักงาน ( รหัส , ชื่อ บริษัท , ชื่อผู้ติดต่อ )
เลือก 1 , 'อเมริกัน' , 'เฮนเรียต'
ที่ไหน ไม่ มีอยู่ ( เลือก * จาก พนักงาน ที่ไหน รหัส = 1 ) ;

ผลลัพธ์จะแสดงแถวใหม่ที่ไม่ได้แทรกเป็นแถวที่มีเครื่องหมาย “ รหัส ' เท่ากับ ' 1 “มีอยู่แล้ว.

แทรกแถวใหม่เฉพาะในกรณีที่ไม่มีข้อมูลโดยใช้คำสั่ง “ON DUPLICATE KEY UPDATE”

อีกวิธีหนึ่งคือการใช้ ' ในการอัปเดตคีย์ซ้ำ ” คำสั่งใน MySQL เนื่องจากประโยคนี้จะใช้กับข้อความค้นหา 'INSERT INTO' ที่สร้างการดำเนินการ 'if-else' ดังนั้นหมายความว่าข้อมูลภายในตารางจะได้รับการอัปเดตก็ต่อเมื่อข้อมูลนั้นไม่ซ้ำกัน มิฉะนั้นจะไม่มีการเปลี่ยนแปลงเกิดขึ้น ไวยากรณ์ทั่วไปสำหรับสิ่งนี้มีดังนี้:

แทรก เข้าไปข้างใน [ โต๊ะ - ชื่อ ] ( [ คอลัมน์1 - ชื่อ ] , [ คอลัมน์ 2 - ชื่อ ] , [ คอลัมน์ 3 - ชื่อ ] ) ค่านิยม ( [ มูลค่า1 ] , [ ค่า2 ] , [ มูลค่า3 ] )
บน ทำซ้ำ สำคัญ อัปเดต [ คอลัมน์1 - ชื่อ ] = [ คอลัมน์1 - ชื่อ ] ;

มาดูตัวอย่างการใส่ค่าใน “ 2 ”, “ ปาสคาล ”, “ นิกสัน ”, “ ลอนดอน ”, “ สหราชอาณาจักร ' และ “(171) 555-7788 ” ในตาราง “ ลูกค้า ” สำหรับคอลัมน์ “ รหัส ”, “ ชื่อจริง ”, “ นามสกุล ”, “ เมือง ”, “ ประเทศ ' และ ' โทรศัพท์ ” ตามลำดับ หากแถวนั้นไม่มีอยู่แถวนั้นจะถูกแทรก มิฉะนั้นจะอัปเดตค่าโดยที่ “ รหัส=รหัส ” ตรงตามเงื่อนไข เรียกใช้แบบสอบถามนี้:

เลือก * จาก ลูกค้า ;
แทรก เข้าไปข้างใน ลูกค้า ( รหัส , ชื่อจริง , นามสกุล , เมือง , ประเทศ , โทรศัพท์ )
ค่านิยม ( 2 , 'ปาสคาล' , 'นิกสัน' , 'ลอนดอน' , 'สหราชอาณาจักร' , '(171) 555-7788' )
บน ทำซ้ำ สำคัญ อัปเดต รหัส = รหัส;

นี่คือตารางก่อนเรียกใช้แบบสอบถาม คุณจะเห็น “ รหัส ' เท่ากับ ' 2 ' ไม่ได้อยู่:

หลังจากเรียกใช้แบบสอบถาม แบบสอบถามนี้จะแทรกแถวใหม่ในตาราง:

คุณแทรกแถวใหม่สำเร็จแล้ว เนื่องจากไม่มีข้อมูลก่อนที่จะเรียกใช้คิวรี

บทสรุป

ใน MySQL ให้แทรกแถวใหม่ก็ต่อเมื่อไม่มีข้อมูลอยู่แล้วโดยใช้ปุ่ม “ แทรก ละเว้น ” คำสั่ง หรือ “ ไม่มีที่ไหน ” ข้อใน “ ใส่ลงใน ' คำแถลง. อีกวิธีในการทำเช่นนี้คือการใช้ “ ในการอัปเดตคีย์ซ้ำ ” ข้อใน “ ใส่ลงใน ” คำสั่งที่จะอัปเดตหากมีแถวอยู่แล้ว มิฉะนั้น ให้เพิ่มแถวใหม่ โพสต์กล่าวถึงวิธีการแทรกแถวใหม่เฉพาะในกรณีที่ไม่มีข้อมูล