ความแตกต่างระหว่างลบและตัดทอน

Anonim

ลบหรือตัดทอน

ทั้งคำสั่ง SQL (Structured Query Language) จะมีการใช้คำสั่ง Delete and Truncate เพื่อกำจัดข้อมูลที่เก็บอยู่ในตารางในฐานข้อมูล. ลบคือ DML (Data Manipulation Language) และจะลบแถวบางส่วนหรือทั้งหมดออกจากตาราง 'Where clause' ใช้เพื่อระบุแถวที่ต้องการลบออกและถ้าไม่ใช้คำสั่ง Where กับคำสั่ง Delete จะลบข้อมูลทั้งหมดในตารางออก Truncate เป็นคำสั่ง DDL (Data Definition Language) และจะลบข้อมูลทั้งหมดออกจากตาราง ทั้งสองคำสั่งไม่ทำลายโครงสร้างตารางและการอ้างอิงไปยังตารางและมีเพียงข้อมูลที่ถูกลบตามต้องการ

คำสั่งลบคำสั่ง

ลบคำสั่ง

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

ไวยากรณ์ทั่วไปสำหรับคำสั่ง Delete มีดังต่อไปนี้

DELETE FROM WHERE

Truncate Statement

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

ต่อไปนี้เป็นไวยากรณ์ทั่วไปสำหรับคำสั่ง Truncate

TRUNCATE TABLE

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

1 คำสั่ง Delete and Truncate ลบข้อมูลจากตารางที่มีอยู่ในฐานข้อมูลโดยไม่ทำอันตรายต่อโครงสร้างตารางหรือข้อมูลอ้างอิงอื่น ๆ ในตาราง

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

3 ลบเป็นคำสั่ง DML และสามารถย้อนกลับการทำงานได้หากจำเป็น แต่ Truncate เป็นคำสั่ง DDL ดังนั้นจึงเป็นคำสั่ง commit อัตโนมัติและไม่สามารถย้อนกลับได้ในทางใด ๆ ดังนั้นจึงเป็นเรื่องสำคัญที่ต้องใช้คำสั่งนี้อย่างระมัดระวังในการจัดการฐานข้อมูล

4 การดำเนินการตัดทอนจะใช้ทรัพยากรระบบและทรัพยากรการบันทึกรายการน้อยกว่าการดำเนินการลบดังนั้นการตัดทอนจะถือว่าเร็วกว่าการลบ

5 นอกจากนี้ลบไม่ได้จัดสรรพื้นที่ว่างที่ใช้โดยตารางในขณะที่ Truncate จะปลดปล่อยพื้นที่ที่ใช้หลังจากการดำเนินการดังนั้น Delete ไม่ได้มีประสิทธิภาพในกรณีที่ลบข้อมูลทั้งหมดออกจากตารางฐานข้อมูล

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

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