ความแตกต่างระหว่างการดรอปและการตัดทอน
หล่นเทียบกับการตัดทอน
Drop and Truncate เป็นคำสั่ง SQL สองภาษา (Structured Query Language) ที่ใช้ในระบบการจัดการฐานข้อมูลซึ่งเราต้องการลบบันทึกข้อมูลออกจากฐานข้อมูล ทั้งคำสั่ง Drop และ Truncate ลบข้อมูลทั้งหมดในตารางและคำสั่ง SQL ที่เกี่ยวข้อง การดำเนินการลบไม่มีประสิทธิภาพในกรณีนี้เนื่องจากใช้พื้นที่เก็บข้อมูลมากกว่าปล่อยและตัดทอน
ในกรณีที่เราต้องการทิ้งตารางในฐานข้อมูลพร้อมกับข้อมูลทั้งหมด SQL จะช่วยให้เราสามารถดำเนินการนี้ได้อย่างง่ายดายโดยใช้คำสั่ง Drop คำสั่งหล่นคือคำสั่ง DDL (Data Definition Language) และสามารถใช้เพื่อทำลายฐานข้อมูลตารางดัชนีหรือมุมมองที่มีอยู่ มันจะลบข้อมูลทั้งหมดในตารางเช่นเดียวกับโครงสร้างตารางจากฐานข้อมูล นอกจากนี้เราอาจต้องการกำจัดข้อมูลทั้งหมดในตารางเพียง แต่ไม่มีตารางและเราสามารถใช้คำสั่ง Truncate ใน SQL ในสถานการณ์ดังกล่าว Truncate เป็นคำสั่ง DDL และจะกำจัดแถวทั้งหมดในตาราง แต่เก็บรักษาคำจำกัดความของตารางไว้เหมือนกันสำหรับการใช้ในอนาคต
วางคำสั่ง
ดังที่ได้กล่าวไว้ก่อนหน้านี้คำสั่ง Drop จะลบคำจำกัดความของตารางและข้อมูลทั้งหมด, ข้อ จำกัด ด้านความสมบูรณ์, ดัชนี, ทริกเกอร์, และสิทธิ์การเข้าถึงซึ่งถูกสร้างขึ้นบนตารางนั้น ดังนั้นจึงลดลงวัตถุที่มีอยู่จากฐานข้อมูลทั้งหมดและความสัมพันธ์กับตารางอื่น ๆ จะไม่ถูกต้องอีกต่อไปหลังจากดำเนินการคำสั่ง นอกจากนี้ยังลบข้อมูลทั้งหมดเกี่ยวกับตารางออกจาก data dictionary ต่อไปนี้เป็นไวยากรณ์ทั่วไปสำหรับการใช้คำสั่งวางบนตาราง
DROP Table
เราต้องเปลี่ยนชื่อตารางที่เราต้องการลบออกจากฐานข้อมูลในตัวอย่างด้านบนของคำสั่ง Drop
สิ่งสำคัญคือต้องชี้ให้เห็นว่าไม่สามารถใช้คำสั่ง Drop เพื่อลบตารางซึ่งถูกอ้างอิงโดยข้อ จำกัด คีย์ต่างประเทศแล้ว ในกรณีดังกล่าวข้อ จำกัด ของการอ้างอิงคีย์ต่างประเทศหรือตารางนั้นควรจะถูกลบก่อน และคำสั่งดร็อปไม่สามารถใช้กับตารางระบบในฐานข้อมูล
เนื่องจากคำสั่งหล่นเป็นคำสั่งการส่งอัตโนมัติการดำเนินการเมื่อการยิงไม่สามารถย้อนกลับได้และจะไม่มีการเรียกใช้ทริกเกอร์ เมื่อตารางถูกดร็อปการอ้างอิงไปยังตารางทั้งหมดจะไม่ถูกต้องดังนั้นหากเราต้องการใช้ตารางอีกครั้งจะต้องสร้างขึ้นใหม่ด้วยข้อ จำกัด ด้านความซื่อสัตย์และสิทธิ์การเข้าถึงทั้งหมด ความสัมพันธ์ทั้งหมดไปยังตารางอื่น ๆ จะต้องอยู่อีกครั้ง
ตัดคำสั่ง
คำสั่ง Truncate เป็นคำสั่ง DDL และจะลบแถวทั้งหมดในตารางโดยไม่มีเงื่อนไขที่ผู้ใช้ระบุและปล่อยพื้นที่ที่ใช้โดยตาราง แต่โครงสร้างตารางที่มีคอลัมน์ดัชนีและข้อ จำกัด ยังคงเหมือนเดิม Truncate กำจัดข้อมูลจากตารางโดยการยกเลิกการจัดสรรหน้าข้อมูลที่ใช้ในการจัดเก็บข้อมูลตารางและเฉพาะการจัดสรรคืนหน้าเหล่านี้เท่านั้นที่จะถูกเก็บไว้ในบันทึกธุรกรรม ดังนั้นจึงใช้ทรัพยากรบันทึกธุรกรรมและทรัพยากรระบบน้อยกว่าเมื่อเปรียบเทียบกับคำสั่ง SQL อื่น ๆ ที่เกี่ยวข้องเช่นลบ ดังนั้น Truncate จึงเป็นข้อความที่เร็วกว่าคนอื่นเล็กน้อย ต่อไปนี้เป็นไวยากรณ์ทั่วไปสำหรับคำสั่ง Truncate
ตัดทอนตาราง
เราควรแทนที่ชื่อตารางซึ่งเราต้องการลบข้อมูลทั้งหมดในไวยากรณ์ข้างต้น
การตัดปลายไม่สามารถใช้บนตารางที่ถูกอ้างอิงโดยข้อ จำกัด foreign key มันใช้การคอมมิทอัตโนมัติก่อนที่มันจะกระทำและคอมมิทอื่น ๆ หลังจากนั้นดังนั้นการย้อนกลับของธุรกรรมเป็นไปไม่ได้และไม่มีการกระตุ้น หากเราต้องการใช้ตารางซ้ำเราจำเป็นต้องเข้าถึงนิยามตารางที่มีอยู่ในฐานข้อมูลเท่านั้น
อะไรคือความแตกต่างระหว่างการดรอปและการตัดทอน
ทั้งคำสั่ง Drop และ Truncate เป็นคำสั่ง DDL และคำสั่ง commit อัตโนมัติดังนั้นธุรกรรมที่ดำเนินการโดยใช้คำสั่งเหล่านี้จะไม่สามารถย้อนกลับได้
ความแตกต่างหลักระหว่าง Drop และ Truncate คือคำสั่ง Drop ลบไม่เพียง แต่ข้อมูลทั้งหมดในตารางเท่านั้น แต่ยังลบโครงสร้างตารางอย่างถาวรจากฐานข้อมูลที่มีการอ้างอิงทั้งหมดในขณะที่คำสั่ง Truncate จะลบแถวทั้งหมดในตารางเท่านั้น และมันจะรักษาโครงสร้างตารางและการอ้างอิง
หากตารางถูกทิ้งความสัมพันธ์กับตารางอื่นจะไม่ถูกต้องอีกต่อไปและข้อ จำกัด ด้านความสมบูรณ์และสิทธิ์การเข้าถึงก็จะถูกลบด้วย ดังนั้นหากจำเป็นต้องใช้ตารางซ้ำจะต้องสร้างขึ้นใหม่ด้วยความสัมพันธ์ข้อ จำกัด ด้านความสมบูรณ์และสิทธิ์การเข้าถึง แต่ถ้าตารางถูกตัดทอนโครงสร้างของตารางและข้อ จำกัด ยังคงมีอยู่สำหรับการใช้งานในอนาคตดังนั้นการทำซ้ำใด ๆ ข้างต้นไม่จำเป็นต้องนำมาใช้ซ้ำ
เมื่อใช้คำสั่งเหล่านี้เราจะต้องใช้ความระมัดระวัง นอกจากนี้เราควรมีความเข้าใจที่ดีขึ้นเกี่ยวกับลักษณะของคำสั่งเหล่านี้วิธีการทำงานและการวางแผนอย่างรอบคอบก่อนใช้เพื่อป้องกันไม่ให้สิ่งจำเป็นขาดหายไป ในที่สุดคำสั่งทั้งสองนี้สามารถใช้ล้างฐานข้อมูลได้อย่างรวดเร็วและง่ายดายโดยใช้ทรัพยากรน้อยลง