logo

Atšķirība starp dzēšanas un saīsināšanas komandu

Atšķirība starp komandu DELETE un TRUNCATE ir visizplatītākā intervijas jautājuma daļa. Tos galvenokārt izmanto datu dzēšanai no datu bāzes. Galvenā atšķirība starp tām ir tāda, ka dzēšanas priekšraksts izdzēš datus, neatiestatot tabulas identitāti, savukārt komanda truncate atiestata noteiktas tabulas identitāti. . Šajā rakstā ir izskaidrots pilns pārskats par komandām DELETE un TRUNCATE un to atšķirībām, kuras galvenokārt tiek lietotas savstarpēji aizstājamas, bet ir pilnīgi atšķirīgas.

Dzēst vs saīsināt komandu

Kas ir DELETE komanda?

Tas ir DML vai datu manipulācijas komanda izmanto, lai dzēstu ierakstus no tabulas, kas nav nepieciešami datu bāzē. Tas noņem visu rindu no tabulas un rada izdzēsto rindu skaitu. Lai izpildītu šo komandu, mērķa tabulā ir nepieciešama dzēšanas atļauja. Tas arī ļauj mums filtrēt un dzēst konkrētus ierakstus, izmantojot KUR klauzula no tabulas.

Tas precizē, ka pirms šīs komandas izpildes mums ir mūsu datu bāzes dublējums, jo mēs nevaram atgūt izdzēstos ierakstus, izmantojot šo vaicājumu. Tāpēc, datu bāzes dublējumkopijas ļauj mums atjaunot datus, kad vien mums tie būs nepieciešami nākotnē.

Šī sintakse izskaidro komandu DELETE, lai noņemtu datus no tabulas:

 DELETE FROM table_name WHERE condition; 

Kas ir komanda TRUNCATE?

Saīsinātais paziņojums ir a DDL vai datu definīcijas valodas komanda izmanto, lai no tabulas noņemtu pilnīgus datus, nenoņemot tabulas struktūru. Mēs nevaram izmantot KUR klauzulu ar šo komandu, lai ierakstu filtrēšana nebūtu iespējama. Pēc šīs komandas izpildīšanas mēs nevar atsaukt dzēstos datus jo, veicot šo darbību, žurnāls netiek uzturēts.

Komanda saīsināt atbrīvo vietu lapas, nevis rindas un veic ierakstu atdalīšanas lapām, nevis rindu darījumu žurnālos. Šī komanda bloķē lapas, nevis rindas; tādējādi tas prasa mazāk slēdzeņu un resursu. Ņemiet vērā, ka mēs nevaram izmantot saīsināto paziņojumu, ja uz tabulu ir atsauce ar ārējās atslēgas palīdzību vai ja tā ir iekļauta indeksētā skatā.

noņemšana no masīvu saraksta

Šī sintakse izskaidro komandu TRUNCATE, lai noņemtu datus no tabulas:

 TRUNCATE TABLE table_name; 

Galvenās atšķirības starp DELETE un TRUNCATE

Šie punkti izskaidro atšķirības starp dzēšanas un apcirpšanas komandu:

  1. DELETE priekšraksts tiek izmantots, ja vēlamies noņemt dažus vai visus ierakstus no tabulas, savukārt priekšraksts TRUNCATE no tabulas izdzēsīs veselas rindas.
  2. DELETE ir DML komanda, jo tā maina tikai tabulas datus, savukārt TRUNCATE ir DDL komanda.
  3. Komanda DELETE var filtrēt ierakstu/korpusus, izmantojot WHERE klauzulu. Tomēr komanda TRUNCATE neļauj izmantot KUR klauzulu, tāpēc mēs nevaram filtrēt rindas saīsināšanas laikā.
  4. DELETE aktivizē visu dzēst trigerus uz galda, lai šautu. Tomēr saīsināšanas darbībai netiek aktivizēti aktivizētāji, jo tā nedarbojas atsevišķās rindās.
  5. DELETE veic dzēšanu pa rindiņām pa vienai no tabulas tādā secībā, kādā tie tika apstrādāti. Tomēr TRUNCATE darbojas datu lapās, nevis rindās, jo tā vienlaikus izdzēsa visus tabulas datus.
  6. Paziņojums DELETE izdzēš tikai ierakstus un neatiestata tabulas identitāte , savukārt TRUNCATE atiestata noteiktas tabulas identitāti.
  7. Komandai DELETE ir nepieciešams vairāk slēdzeņu un datu bāzes resursu, jo tā iegūst bloķēšanu katrā izdzēstajā rindā. Turpretim TRUNCATE iegūst datu lapas bloķēšanu pirms datu lapas dzēšanas; tādējādi tas prasa mazāk slēdzeņu un maz resursu.
  8. DELETE paziņojums veic ierakstu darījumu žurnāls katrai dzēstajai rindai, savukārt TRUNCATE ieraksta darījumu žurnālu katrai datu lapai.
  9. TRUNCATE komanda ir ātrāk nekā komanda DELETE, jo tā atdala datu lapas rindu vietā un ieraksta datu lapas, nevis rindas darījumu žurnālos.
  10. Kad ieraksts ir izdzēsts, izmantojot komandu TRUNCATE, mēs nevaram to atgūt. Turpretim mēs varam atgūt izdzēstos datus, kurus noņēmām no DELETE darbības.

Salīdzinājuma diagramma dzēst un saīsināt

Šajā salīdzināšanas tabulā ir ātri izskaidrotas to galvenās atšķirības:

Salīdzināšanas pamats DZĒST TRUCĒT
Definīcija Dzēšanas priekšraksts tiek izmantots, lai noņemtu vienu vai vairākus ierakstus no esošas tabulas atkarībā no norādītā nosacījuma. Komanda truncate noņem visus datus no esošas tabulas, bet ne pašu tabulu. Tas saglabā tabulas struktūru vai shēmu.
Valoda Tā ir DML (datu manipulācijas valodas) komanda. Tā ir DDL (datu definīcijas valoda) komanda.
KUR Tā var izmantot klauzulu WHERE, lai filtrētu jebkuru konkrētu rindu vai datus no tabulas. Tas neizmanto WHERE klauzulu, lai filtrētu ierakstus no tabulas.
Atļauja Lai izmantotu šo komandu, mums ir jābūt DELETE atļaujai. Lai izmantotu šo komandu, mums ir nepieciešama ALTER atļauja.
Darbojas Šī komanda dzēš ierakstus pa vienam. Šī komanda dzēš visu datu lapu, kurā ir ieraksti.
Slēdzene Tas bloķēs rindu pirms dzēšanas. Pirms dzēšanas datu lapa tiks bloķēta.
Tabulas identitāte Šī komanda neatiestata tabulas identitāti, jo tā tikai dzēš datus. Tas vienmēr atiestata tabulas identitāti.
Darījums Tas uztur darījumu žurnālus katram izdzēstajam ierakstam. Tas neuztur darījumu žurnālus katrai dzēsto datu lapai.
Ātrums Tā ātrums ir lēns, jo tas saglabāja žurnālu. Tās izpilde ir ātra, jo tā vienlaikus dzēsa visus datus, neuzturot darījumu žurnālus.
Sprūda Šī komanda var arī aktivizēt uz galda lietoto trigeri un izraisīt to aktivizēšanu. Šī komanda neaktivizē aktivizētājus, kas tiek lietoti tabulā.
Atjaunot Tas ļauj mums atjaunot izdzēstos datus, izmantojot COMMIT vai ROLLBACK paziņojumu. Mēs nevaram atjaunot izdzēstos datus pēc šīs komandas izpildes.
Indeksēts skats To var izmantot ar indeksētiem skatiem. To nevar izmantot ar indeksētiem skatiem.
Kosmoss DELETE priekšraksts aizņem vairāk darījumu vietas nekā saīsināts, jo tas uztur žurnālu par katru dzēsto rindu. TRUNCATE priekšraksts aizņem mazāk darījumu vietas, jo tas uztur darījumu žurnālu visai datu lapai, nevis katrai rindai.

Secinājums

Šajā rakstā mēs esam salīdzinājuši paziņojumu dzēšanu un saīsināšanu. Esam secinājuši, ka komanda DELETE tiek izmantota, ja vēlamies pielāgot ierakstu dzēšanu no tabulas. Un komanda TRUNCATE tiek izmantota, ja mēs nevēlamies atstāt tabulā ierakstus vai datus, t.i., mēs vēlamies iztukšot tabulu.