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

Anonim

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

คำสั่ง Truncate คืออะไร?

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

ไวยากรณ์ของ Truncate:

TRUNCATE TABLE ชื่อตาราง ;

ที่นี่คุณควรระบุชื่อของตารางที่ควรจะลบออกทั้งหมด เพื่อให้แน่ใจว่าจะมีโต๊ะนั่งอยู่ในพื้นที่หน่วยความจำ นี่คือตัวอย่างของการใช้ Truncate

ด้านล่างนี้เป็นตาราง 'พนักงาน' และดูที่แถวข้อมูลที่อยู่ด้านล่าง

EMP-ID EMP-ชื่อ แต่งตั้ง
1011 แจ็ค เสมียน
1012 กุหลาบ ผู้ดูแลระบบ
1014 แนนซี่ > การเงิน
ตอนนี้ให้เราออกคำสั่งด้านล่างลงในตารางพนักงาน

พนักงานตัดตาราง

; นี่คือผลลัพธ์ของไวยากรณ์ข้างต้นและไม่มีข้อมูลอยู่ในนั้น

emp-id

ชื่อ emp-name การกำหนด คำสั่งลบคืออะไร?

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

ลบจาก

พนักงาน; ไวยากรณ์ข้างต้นจะลบแถวทั้งหมดออกจากตาราง 'employee' ดังนั้นตารางผลลัพธ์จะไม่มีข้อมูล

ลบจาก

พนักงาน ที่ emp-id = 1011; คำสั่งนี้เพียงแค่ลบแถวเดียวที่มี emp-id คือ 1011 ดังนั้นตารางผลลัพธ์จะเป็นดังนี้

emp-id

emp-name การกำหนด 1012
Rosy ผู้ดูแลระบบ 1014
แนนซี ความแตกต่างทางการเงิน

DDL; ลบคือ DML:

  • เราได้กล่าวถึงวิธีการที่ DDL และ DML ทำงานในการสนทนาข้างต้นของเราคำสั่ง Truncate คือ DDL และทำงานในระดับโครงสร้างข้อมูล แต่ลบเป็นคำสั่ง DML และทำงานกับข้อมูลตาราง ตัวอย่างอื่น ๆ สำหรับ DDL คือ CREATE และ ALTER ในลักษณะเดียวกันเราอาจพูดได้ว่าคำสั่งเช่น SELECT, UPDATE และ REPLACE เป็นตัวอย่างที่สมบูรณ์แบบสำหรับ DML การตัดทอนและลบทำงานอย่างไร:
  • ทันทีที่เราออกคำสั่ง Truncate เพียงแค่มองหาตารางที่ระบุ จากนั้นจะลบข้อมูลทั้งหมดออกจากหน่วยความจำ แต่ขั้นตอนการทำงานจะแตกต่างกันเล็กน้อยในกรณีของ Delete ที่นี่ข้อมูลตารางต้นฉบับถูกคัดลอกไปยังพื้นที่ที่เรียกว่าพื้นที่ 'ย้อนกลับ' ก่อนที่จะทำการจัดการข้อมูลจริง จากนั้นการปรับเปลี่ยนจะทำในพื้นที่ข้อมูลตารางจริง ดังนั้นทั้งสองต่างกันในวิธีที่พวกเขาทำงาน ตัดทอน

-> ลบข้อมูลทั้งหมดออกจากตาราง -> พื้นที่ตารางว่างตอนนี้ ลบ

-> คัดลอกข้อมูลตารางต้นฉบับไปยังพื้นที่ Roll Back -> ลบข้อมูลที่ระบุ / ตารางทั้งหมด -> พื้นที่ตารางว่าง แต่เต็มพื้นที่ Roll Back ย้อนกลับ:

  • ย้อนกลับเป็นเหมือนคำสั่งเลิกทำในอุปกรณ์เสริม Microsoft ของเรา ใช้เพื่อยกเลิกการเปลี่ยนแปลงที่เราได้ทำเมื่อเร็ว ๆ นี้ i. อี จากจุดที่บันทึกไว้ล่าสุด เพื่อทำดำเนินการข้อมูลควรจะคัดลอกไปยังพื้นที่ Roll Back ก่อนที่จะทำการแก้ไข แม้ว่าโรลแบ็คเหล่านี้จะต้องมีหน่วยความจำเพิ่มเติม แต่ก็มีประโยชน์อย่างมากในการกลับไปใช้ต้นฉบับ โดยเฉพาะอย่างยิ่งเมื่อคุณแก้ไขโดยไม่ได้ตั้งใจ! ให้เรามาตัดทอนและลบด้วยความเคารพต่อการย้อนกลับตอนนี้ ดังที่เราได้กล่าวไว้ข้างต้น Truncate ไม่เคยใช้พื้นที่สำหรับย้อนกลับและเราไม่สามารถกลับไปที่ข้อมูลเดิมได้ แต่คำสั่ง Delete ใช้พื้นที่ถอยหลังและเราสามารถใช้ 'Commit' หรือ 'Rollback' เพื่อยอมรับหรือยกเลิกการเปลี่ยนแปลงตามลำดับ Triggers:
  • สำหรับผู้ที่ต้องการคำอธิบายเกี่ยวกับทริกเกอร์นี่เป็นข้อสังเกตเล็กน้อย ทริกเกอร์คือชุดปฏิบัติการ / การดำเนินการที่กำหนดไว้ล่วงหน้าที่ควรจะเปิดใช้งานเมื่อตารางพบเงื่อนไขเฉพาะ ตัวอย่างเช่นเราอาจทำให้เกิดการเปลี่ยนแปลงจำนวนเงินเดือนเมื่อพนักงานมีประสบการณ์กับ บริษัท มากกว่าหนึ่งปี ทริกเกอร์เหล่านี้สามารถใช้กับตารางอื่นได้เช่นกัน ตัวอย่างเช่นเราสามารถอัปเดตตารางทางการเงินได้ทันทีที่มีการปรับขึ้นเงินเดือนสำหรับพนักงาน Truncate เป็นคำสั่ง DDL ไม่อนุญาตให้ทริกเกอร์ทำงานที่นี่ แต่ลบเป็นคำสั่ง DML คุณสามารถเรียกใช้ทริกเกอร์ได้ที่นี่

ซึ่งเร็วกว่านี้?

  • ตามที่คุณคาดเดาคำสั่ง Truncate จะเร็วกว่าคำสั่ง Delete ก่อนหน้านี้อาจลบข้อมูลทั้งหมดออกและไม่จำเป็นต้องตรวจสอบเงื่อนไขการจับคู่ใด ๆ นอกจากนี้ข้อมูลต้นฉบับจะไม่ถูกคัดลอกไปยังพื้นที่ rollback และจะช่วยประหยัดเวลาได้มาก ทั้งสองปัจจัยทำให้ Truncate ทำงานได้เร็วกว่า Delete เราสามารถใช้คำสั่ง WHERE ได้หรือไม่?
  • ประโยค 'Where' ถูกใช้เพื่อระบุเงื่อนไขการจับคู่บางอย่างและไม่มีอะไรให้กับ Truncate เนื่องจาก Truncate ไม่เคยมองหาเงื่อนไขการจับคู่ใด ๆ และลบแถวทั้งหมดออกไปเราไม่สามารถใช้คำสั่ง 'Where' ที่นี่ได้แต่เราสามารถระบุเงื่อนไขได้เสมอด้วยความช่วยเหลือของคำว่า 'where' ในคำสั่ง Delete ซึ่งใช้พื้นที่มากขึ้น?
  • การตัดทอนจะไม่ใช้พื้นที่การย้อนกลับและจะช่วยประหยัดหน่วยความจำนั้น แต่ลบต้องมีการสำรองข้อมูลในรูปแบบของพื้นที่การกู้คืนและด้วยเหตุนี้จึงต้องใช้พื้นที่หน่วยความจำมากกว่าการตัดทอน นี่คือความแตกต่างและให้เราดูในรูปแบบตาราง

S ไม่

ความแตกต่างใน ตัด ลบ 1.
DDL หรือ DML? เป็น DDL และทำงานในระดับโครงสร้างข้อมูล ตัวอย่างอื่น ๆ สำหรับ DDL คือ CREATE และ ALTER เป็นคำสั่ง DML และทำงานบนข้อมูลตาราง DML ย่อมาจาก Data Manipulation Language คำสั่งเช่น SELECT, UPDATE และ REPLACE เป็นตัวอย่างที่สมบูรณ์แบบสำหรับ DML DML ย่อมาจาก Data Manipulation Language

2

มันทำงานอย่างไร? ทันทีที่เราออกคำสั่ง Truncate เพียงแค่มองหาตารางที่ระบุ จากนั้นจะลบข้อมูลทั้งหมดออกจากหน่วยความจำ ที่นี่ข้อมูลตารางต้นฉบับจะถูกคัดลอกไปยังพื้นที่ที่เรียกว่าพื้นที่ 'ย้อนกลับ' ก่อนทำการจัดการข้อมูลจริง จากนั้นการปรับเปลี่ยนจะทำในพื้นที่ข้อมูลตารางจริง 3
ย้อนกลับ คำสั่ง Truncate ไม่เคยใช้พื้นที่สำหรับย้อนกลับและเราไม่สามารถกลับไปที่ข้อมูลเดิมได้ พื้นที่การถอยกลับเป็นพื้นที่พิเศษและถูกครอบครองเมื่อมีการออกคำสั่ง DML คำสั่ง Delete ใช้พื้นที่ถอยหลังและเราสามารถใช้ 'Commit' หรือ 'Rollback' เพื่อยอมรับหรือยกเลิกการเปลี่ยนแปลงตามลำดับ 4

Triggers Truncate เป็นคำสั่ง DDL ไม่อนุญาตให้ทริกเกอร์ ลบเป็นคำสั่ง DML อนุญาตให้ใช้ทริกเกอร์ได้ที่นี่ 5

ซึ่งเร็วกว่านี้? อาจลบข้อมูลทั้งหมดและไม่จำเป็นต้องตรวจสอบเงื่อนไขการจับคู่ใด ๆ นอกจากนี้ข้อมูลต้นฉบับจะไม่ถูกคัดลอกไปยังพื้นที่ rollback และจะช่วยประหยัดเวลาได้มาก ทั้งสองปัจจัยทำให้ Truncate ทำงานได้เร็วกว่า Delete ใช้พื้นที่ว่างในการย้อนกลับและต้องเก็บรักษาข้อมูลเดิมไว้เสมอ นี่เป็นภาระพิเศษและในทางกลับกันต้องใช้เวลามากกว่า Truncate มาก

6
เราสามารถใช้คำสั่ง WHERE ได้หรือไม่? เนื่องจาก Truncate ไม่เคยมองหาเงื่อนไขการจับคู่ใด ๆ และจะลบแถวทั้งหมดออกไปเราไม่สามารถใช้คำสั่ง 'Where' ที่นี่ได้ แต่เราสามารถระบุเงื่อนไขได้เสมอด้วยความช่วยเหลือของ 'where' ในคำสั่ง Delete 7
ซึ่งใช้พื้นที่มากขึ้น? การตัดทอนจะไม่ใช้พื้นที่การย้อนกลับและจะช่วยประหยัดหน่วยความจำนั้น ต้องมีการสำรองข้อมูลในรูปแบบของพื้นที่ Rollback และด้วยเหตุนี้จึงต้องใช้พื้นที่หน่วยความจำมากกว่าการตัดทอน การรู้ความแตกต่างระหว่างหน่วยงานทั้งสองจะขยายความรู้ทั้งสองอย่าง! คุณได้เข้าสู่เส้นทางที่ถูกต้อง i. อี หน้าเว็บเพื่อทำความเข้าใจความแตกต่างโดยเฉพาะอย่างยิ่งระหว่างคำสั่งตัดและลบ หวังว่าคุณจะมีความแตกต่างและแจ้งให้เราทราบหากเราช่วยให้คุณเข้าใจ นอกจากนี้คุณยังสามารถช่วยให้เราชี้ออกที่เหลือ!