mums nevajadzētu apstāties šeit, pastāv daudzas citas atšķirības starp DELETE un TRUNCATE. Apspriedīsim tos ar salīdzinājuma diagrammas palīdzību, kas parādīta zemāk.
Salīdzinājuma diagramma
Salīdzinājuma pamats | DELETE | TRUNCATE |
---|---|---|
Pamata | Varat norādīt dzēšamo vienību, kuru vēlaties dzēst. | Tā izdzēš visas kopas no attiecības. |
Valoda | DELETE ir Data Manipulation Language komanda. | TRUNCATE ir komanda Data Definition Language. |
KUR | Komandai DELETE var būt WHERE klauzula. | Komandai TRUNCATE nav WHERE klauzulas. |
Trigger | Komanda DELETE aktivizē uz galda pielietoto sprūdu un izraisa to aizdegšanos. | TRUNCATE komanda neaktivizē ugunsgrēka ierosinātājus. |
Dzēšana | DELETE komanda likvidē vienības pa vienam. | TRUNCATE dzēš visu datu lapu, kurā ir ieraksti. |
Bloķēt | Komanda DELETE bloķē rindu / numuru pirms tā dzēšanas. | TRUNCATE komandu bloķēšanas datu lapa pirms tabulas datu dzēšanas. |
Ātrums | DELETE komanda darbojas lēnāk, salīdzinot ar TRUNCATE. | TRUNCATE ir ātrāka, salīdzinot ar DELETE. |
Darījums | DELETE ieraksta darījumu žurnālu katrai dzēstajai vienībai. | TRUNCATE ieraksta darījumu žurnālu katrai izdzēstajai datu lapai. |
Atjaunot | Komandu DELETE var sekot vai nu COMMIT, vai ROLLBACK. | TRUNCATE komanda nevar būt ROLLBACK. |
DELETE definīcija
DELETE ir DML manipulācijas valodas (DML) komanda. Komandas DELETE uzdevums ir dzēst vai noņemt kopas no tabulas vai attiecības. Izmantojot DELETE, mēs varam novērst visu vienību ar visām tā atribūtu vērtībām no attiecības. DELETE nenoņem konkrēta atribūta vērtību, kas attiecas uz attiecību.
Varat filtrēt tabulas dzēstās kopas, izmantojot WHERE klauzulu. Ja DELETE paziņojumā norādāt WHERE klauzulu, tad tā dzēsīs tikai WHERE klauzulas nosacījumus. Bet, ja jūs nenorādīsiet WHERE klauzulu DELETE paziņojumā, pēc noklusējuma tas dzēš vai novērš visas attiecības no attiecībām. WHERE klauzula DELETE paziņojumā var saturēt ligzdotus SELECT-FROM-WHERE paziņojumus.
Komandas DELETE sintakse ir šāda:
DELETE NO table_name WHERE [ conditon ];
Komanda DELETE vienlaicīgi darbojas tikai uz vienas attiecības vai tabulas. Gadījumā, ja vēlaties dzēst vienādojumu no dažādām attiecībām, katrai no tām ir jāievieto cita DELETE komanda. Bet dzēšanas dzēšana no vienas attiecības var būt pretrunā ar datubāzes atsauces integritāti, kuru var atrisināt, izmantojot trigerus. Ja komanda DELETE pārkāpj atsauces integritāti, tad tiek aktivizēti visi atsauces trigeri (ja tādi ir norādīti), kas izspiež dzēšanas darbību dažādās attiecībās, kas attiecas uz izdzēstajām vienībām.
Komanda DELETE vispirms bloķē dzēšamo rindu vai vienību un pēc tam izdzēš vienreiz pēc kārtas . Tādējādi tas prasa vairāk slēdzenes un resursus, kas padara to lēnāku . DELETE paziņojuma izmaiņas var izdarīt pastāvīgi, izmantojot COMMIT, vai arī varat atjaunot datubāzi, izmantojot ROLLBACK .
TRUNCATE definīcija
TRUNCATE ir līdzīga DELETE komandai, jo tā arī dzēš vienumus no attiecības. Atšķirība ir tā, ka tā dzēš visas kopas no attiecības. Tā kā komanda TRUNCATE tiek izpildīta, visi tabulas dati tiek izdzēsti, katra tabula kopā ar visām tā atribūtu vērtībām tiek izslēgta. Bet tabulas struktūra joprojām pastāv datu bāzē. Tātad, jūs varat atkārtoti ievadīt tabulas tabulas. TRUNCATE ir komanda Data Definition Language.
Komandas TRUNCATE sintakse ir šāda:
TRUNCATE TABLE table_name ;
Tāpat kā DELETE, TRUNCATE nedarbojas pēc tabulas datiem pēc kārtas. Tā vietā tā darbojas datu lapās, kurās tiek glabāti tabulas dati. Tagad, kad TRUNCATE dzēš datu lapas, tā ir jāiegādājas datu lapu vietā bloķēšana, nevis. Līdz ar to tas rada mazāk prasību par slēdzenēm un resursiem, kas padara TRUNCATE ātrāku, salīdzinot ar DELETE.
Komandas TRUNCATE izpilde neieslēdz nekādus trigerus, jo tā nedarbina datus pēc kārtas. TRUNCATE nevar izpildīt, ja tabulai ir atsauce uz kādu svešu atslēgu . Kad komanda TRUNCATE izdzēš tabulas datus, to nevar atgūt atpakaļ.
Galvenās atšķirības starp DELETE un TRUNCATE SQL
- Galvenā atšķirība starp DELETE un TRUNCATE ir tā, ka, izmantojot DELETE, jūs varat izdzēst norādīto ierakstu no attiecības. Taču TRUNCATE izmantošana dzēsīs visas kopas no attiecībām.
- DELETE ir DML komanda, bet TRUNCATE ir DDL komanda.
- DELETE izmanto WHERE klauzulu, lai filtrētu dzēšamo ierakstu / vienības. Tomēr TRUNCATE nav nepieciešama WHERE klauzula, jo tā izdzēš visas vienības, tāpēc nav nepieciešams filtrēt.
- DELETE aktivizē tabulām piemērotos atsauces trigerus. Bet TRUNCATE neuzliek nekādus sprūdus uz galda.
- Komanda DELETE noņem tabulas vienu reizi pēc kārtas, rīkojumā tos apstrādā. Tomēr TRUNCATE nedarbojas ar vienībām pa vienam. Tā vietā TRUNCATE darbojas datu lapā, kurā tiek glabāti tabulas dati.
- Pirms izdzēšanas, DELETE iegūst ieraksta atslēgu, bet TRUNCATE iegūst datu lapu, pirms izdzēšat datu lapu.
- TRUNCATE ir ātrāka, salīdzinot ar DELETE komandu.
- DELETE ieraksta darījumu žurnālu katrai kārtai, bet TRUNCATE ieraksta darījumu žurnālu katrai datu lapai.
- Kad izdzēsīsiet datus, izmantojot TRUNCATE, to nekad nevar atgūt atpakaļ, bet jūs varat atgūt savus datus, kurus izdzēsiet, izmantojot komandu DELETE.
Secinājums:
Ja vēlaties pielāgot ierakstu dzēšanu no tabulas, varat izmantot komandu DELETE. Ja vēlaties iztukšot tabulu, ti, nevēlaties atstāt nevienu datu tabulā, izmantojiet komandu TRUNCATE.