ความแตกต่างระหว่าง Drop และ Truncate

Anonim

Drop with Truncate

Drop และ Truncate เป็นคำสั่ง SQL (Structured Query Language) สองแบบที่ใช้ในระบบจัดการฐานข้อมูล ที่เราต้องการลบระเบียนข้อมูลออกจากฐานข้อมูล ทั้งสองแบบ Drop และ Truncate จะลบข้อมูลทั้งหมดในตารางและคำสั่ง SQL ที่เกี่ยวข้อง การดำเนินการลบในกรณีนี้ไม่มีผลเนื่องจากใช้พื้นที่เก็บข้อมูลมากกว่า Drop and Truncate

ในกรณีที่ถ้าเราต้องการทิ้งตารางในฐานข้อมูลร่วมกับข้อมูลทั้งหมด SQL ช่วยให้เราสามารถดำเนินการนี้โดยใช้คำสั่ง Drop ได้อย่างง่ายดาย คำสั่ง Drop คือคำสั่ง DDL (Data Definition Language) และสามารถใช้เพื่อทำลายฐานข้อมูลตารางดัชนีหรือมุมมอง จะลบข้อมูลทั้งหมดในตารางรวมทั้งโครงสร้างตารางจากฐานข้อมูล นอกจากนี้เราอาจต้องการกำจัดข้อมูลทั้งหมดในตารางเพียง แต่ไม่มีตารางและเราสามารถใช้คำสั่ง Truncate ใน SQL ในสถานการณ์ดังกล่าวได้ ตัดทอนยังเป็นคำสั่ง DDL และช่วยลดจำนวนแถวทั้งหมดในตาราง แต่จะรักษาคำจำกัดความของตารางให้เหมือนกันสำหรับใช้งานในอนาคต

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

เราต้องเพียงแทนที่ชื่อตารางที่เราต้องการจะลบออกจากฐานข้อมูลในตัวอย่างข้างต้นของคำสั่ง Drop

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

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

คำสั่ง Truncate

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

TRUNCATE TABLE

เราควรแทนที่ชื่อตารางซึ่งเราต้องการลบข้อมูลทั้งหมดในไวยากรณ์ด้านบน

ไม่สามารถใช้ Truncate บนตารางที่ถูกอ้างอิงโดยข้อ จำกัด คีย์ต่างประเทศได้ จะใช้การกระทำโดยอัตโนมัติก่อนที่จะกระทำและอีกกระทำหลังจากนั้นจึงย้อนกลับของการทำธุรกรรมเป็นไปไม่ได้และไม่มีทริกเกอร์จะยิง ถ้าเราต้องการนำมาใช้ซ้ำตารางเราจะต้องเข้าถึงความหมายตารางที่มีอยู่ในฐานข้อมูล

ความแตกต่างระหว่าง Drop and Truncate คืออะไร?

ทั้งสองคำสั่ง Drop and Truncate คือคำสั่ง DDL และคำสั่ง commit อัตโนมัติเพื่อให้การทำรายการดำเนินการโดยใช้คำสั่งเหล่านี้ไม่สามารถย้อนกลับได้

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

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

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