წაშლა vs Truncate
ორივე SQL (Structure Query Language) ბრძანება, Delete და Truncate გამოიყენება მონაცემთა ბაზის ცხრილებში შენახული მონაცემების მოსაშორებლად. Delete არის DML (მონაცემთა მანიპულირების ენა) განცხადება და ის შლის ცხრილის ზოგიერთ ან ყველა სტრიქონს. „Where პუნქტი“გამოიყენება რიგების დასადგენად, რომელთა წაშლაა საჭირო, ხოლო თუ სად პუნქტი არ გამოიყენება Delete განცხადებასთან ერთად, ის წაშლის ცხრილის ყველა მონაცემს. Truncate არის DDL (მონაცემთა განმარტების ენა) განცხადება და ის წაშლის მთელ მონაცემებს ცხრილიდან. ორივე ეს ბრძანება არ ანადგურებს ცხრილის სტრუქტურას და ცხრილის მითითებებს და მხოლოდ მონაცემები წაიშლება საჭიროებისამებრ.
განცხადების წაშლა
წაშლა განცხადება მომხმარებელს საშუალებას აძლევს ამოიღოს მონაცემები მონაცემთა ბაზის არსებული ცხრილიდან მითითებული პირობის საფუძველზე და ამ მდგომარეობის დასადგენად გამოიყენება "Where პუნქტი". Delete ბრძანება მოიხსენიება, როგორც შესული შესრულება, რადგან ის შლის მხოლოდ ერთ რიგს ერთდროულად და ინახავს ჩანაწერს თითოეული მწკრივის წაშლისთვის ტრანზაქციის ჟურნალში. ასე რომ, ეს იწვევს ოპერაციის შენელებას. Delete არის DML განცხადება, და ამიტომ ის ავტომატურად არ არის ჩადენილი ბრძანების შესრულებისას. ამიტომ, საჭიროების შემთხვევაში, წაშლის ოპერაცია შეიძლება გადაბრუნდეს მონაცემების ხელახლა წვდომისთვის. Delete ბრძანების შესრულების შემდეგ, ის უნდა იყოს ჩადენილი ან უკან დაბრუნება, რათა ცვლილებები მუდმივად შეინახოს. წაშლის განცხადება არ აშორებს ცხრილის სტრუქტურას მონაცემთა ბაზიდან. ასევე ის არ ანაწილებს ცხრილის მიერ გამოყენებულ მეხსიერების ადგილს.
ტიპიური სინტაქსი Delete ბრძანებისთვის მოცემულია ქვემოთ.
წაშლა -დან
ან
წაშლა საიდან
შეკვეცა განცხადება
Truncate განცხადება შლის ყველა მონაცემს მონაცემთა ბაზაში არსებული ცხრილიდან, მაგრამ ინარჩუნებს ცხრილის იგივე სტრუქტურას, ასევე მთლიანობის შეზღუდვებს, წვდომის პრივილეგიებს და სხვა ცხრილებთან კავშირებს. ასე რომ, არ არის საჭირო ცხრილის ხელახლა განსაზღვრა და შეიძლება გამოყენებულ იქნას ძველი ცხრილის სტრუქტურა, თუ მომხმარებელს სურს ცხრილის ხელახლა გამოყენება. Truncate შლის მთელ მონაცემებს მონაცემთა შესანახად გამოყენებული მონაცემთა გვერდების გადანაწილებით და მხოლოდ ეს გვერდის განაწილებები ინახება ტრანზაქციის ჟურნალში. აქედან გამომდინარე, truncate ბრძანება იყენებს მხოლოდ ნაკლებ სისტემას და ტრანზაქციის ჟურნალის რესურსებს ოპერაციისთვის, ამიტომ ის უფრო სწრაფია, ვიდრე სხვა დაკავშირებული ბრძანებები. Truncate არის DDL ბრძანება, ამიტომ ის იყენებს ავტომატურ ვალდებულებებს განცხადების შესრულებამდე და მის შემდეგ. აქედან გამომდინარე, truncate ვერ შეძლებს მონაცემების ხელახლა დაბრუნებას არანაირად. იგი ათავისუფლებს მეხსიერების ადგილს, რომელიც გამოიყენება ცხრილის მიერ შესრულების შემდეგ. მაგრამ Truncate განცხადება არ შეიძლება გამოყენებულ იქნას იმ ცხრილებზე, რომლებიც მითითებულია უცხოური გასაღების შეზღუდვებით.
შემდეგ არის საერთო სინტაქსი Truncate განაცხადისთვის.
TRUNCATE TABLE
რა განსხვავებაა Delete-სა და Truncate-ს შორის?
1. Delete and Truncate ბრძანებები აშორებს მონაცემებს მონაცემთა ბაზაში არსებული ცხრილებიდან, ცხრილის სტრუქტურის ან ცხრილის სხვა მითითებების დაზიანების გარეშე.
2. თუმცა, Delete ბრძანება შეიძლება გამოყენებულ იქნას ცალკეული რიგების წასაშლელად მხოლოდ ცხრილში შესაბამისი პირობის გამოყენებით, ან ყველა მწკრივის წასაშლელად ყოველგვარი პირობის გარეშე, ხოლო Truncate ბრძანება შეიძლება გამოყენებულ იქნას მხოლოდ ცხრილის მთლიანი მონაცემების წასაშლელად.
3. Delete არის DML ბრძანება და საჭიროების შემთხვევაში მას შეუძლია დააბრუნოს ოპერაცია, მაგრამ Truncate არის DDL ბრძანება, ასე რომ, ეს არის ავტომატური ბრძანება და არანაირად არ შეიძლება უკან დაბრუნდეს. ამიტომ მნიშვნელოვანია ამ ბრძანების ფრთხილად გამოყენება მონაცემთა ბაზის მართვაში.
4. Truncate ოპერაცია მოიხმარს ნაკლებ სისტემურ რესურსებს და ტრანზაქციის ჟურნალის რესურსებს, ვიდრე Delete ოპერაცია, შესაბამისად, Truncate ითვლება უფრო სწრაფად ვიდრე Delete.
5. ასევე, Delete არ ანაწილებს ცხრილის მიერ გამოყენებულ სივრცეს, ხოლო Truncate ათავისუფლებს შესრულების შემდეგ გამოყენებულ სივრცეს, ამიტომ Delete არ არის ეფექტური მონაცემთა ბაზის ცხრილიდან მთლიანი მონაცემების წაშლის შემთხვევაში.
6. თუმცა, Truncate-ის გამოყენება არ არის დაშვებული, როდესაც ცხრილზე მითითებულია უცხო გასაღების შეზღუდვა და ამ შემთხვევაში, ბრძანება Delete შეიძლება გამოყენებულ იქნას Truncate-ის ნაცვლად.
7. და ბოლოს, ორივე ამ ბრძანებას აქვს უპირატესობები და ასევე უარყოფითი მხარეები მონაცემთა ბაზის მართვის სისტემებში მათი გამოყენებისას და მომხმარებელმა უნდა იცოდეს ამ ბრძანებების სათანადოდ გამოყენება კარგი შედეგების მისაღწევად.