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