Anbefalt, 2024

Redaksjonens

Forskjellen mellom DELETE og TRUNCATE i SQL

DELETE og TRUNCATE er kommandoer som brukes til å fjerne tuples fra en relasjon, men de er forskjellige i mange sammenhenger. I SQL er DELETE-kommandoen en kommando for data manipulasjonsspråk, mens TRUNCATE-kommandoen er en kommando for datadefinisjonsspråk. Men poenget som gjør at vi kan skille mellom DELETE og TRUNCATE er at DELETE er i stand til å fjerne spesifiserte tuples fra et forhold, mens TRUNCATE-kommandoen fjerner hele tuples fra en relasjon.

vi burde ikke stoppe her, det er mange andre forskjeller mellom DELETE og TRUNCATE. La oss diskutere dem ved hjelp av sammenligningstabell vist nedenfor.

Sammenligningstabel

Grunnlag for sammenlikningSLETTavkorte
grunn~~POS=TRUNCDu kan angi tupelen du vil slette.Det sletter alle tuplene fra et forhold.
SpråkDELETE er en kommando for data manipulasjonsspråk.TRUNCATE er en kommando for Data Definisjon Språk.
HVORDELETE kommandoen kan ha WHERE-setningen.TRUNCATE-kommandoen har ikke WHERE-bestemmelse.
AvtrekkerDELETE-kommandoen aktiverer avtrekkeren som er påført bordet og får dem til å brann.TRUNCATE-kommandoen aktiverer ikke utløserne til brann.
slettingDELETE-kommandoen eliminerer tuplene en-for-en.TRUNCATE slette hele datasiden som inneholder tuplene.
LåseDELETE kommandoen lås rad / tuple før du sletter den.TRUNCATE kommandolinjens dataside før du sletter tabelldata.
HastighetDELETE-kommandoen virker langsommere i forhold til TRUNCATE.TRUNCATE er raskere i forhold til DELETE.
TransaksjonDELETE registrerer transaksjonslogg for hver slettet tuple.TRUNCATE rekordtransaksjonslogg for hver slettet dataside.
RestaurereDELETE kommandoen kan følges enten ved COMMIT eller ROLLBACK.TRUNCATE-kommandoen kan ikke være ROLLBACK.

Definisjon av DELETE

DELETE er en DML-kommando for manipulering av data . Oppgaven med DELETE-kommandoen er å slette eller fjerne tuplene fra et bord eller en relasjon. Ved å bruke DELETE, kan vi eliminere hele tupelen, med alle dens attributtverdier fra et forhold. DELETE fjerner ikke verdien av et bestemt attributt, en tuple fra forholdet.

Du kan filtrere tuplene du vil slette fra et bord, ved hjelp av WHERE- setningen. Hvis du angir WHERE-setningen i DELETE-setningen, vil den bare slette tuplene som tilfredsstiller WHERE-betingelsen. Men hvis du ikke angir WHERE-klausulen i DELETE-setningen, blir den som standard sletter eller eliminerer alle tuplene fra et forhold. Hvor setning i DELETE-setningen kan inneholde nestede SELECT-FROM-WHERE- setninger.

Syntaksen for DELETE-kommandoen er som følger:

SLETT FRA tabellnavn WHERE [ conditon ];

DELETE-kommandoen fungerer bare på et enkelt forhold eller tabell om gangen. Hvis du vil slette tuple fra forskjellige relasjoner, må du legge annerledes DELETE-kommando for hver. Men å slette tuple fra ett forhold kan være i strid med databasenes referanseintegritet, som kan løses ved hjelp av utløsere. Hvis DELETE-kommandoen bryter med referanseintegritet, blir alle referanse- utløsere (hvis spesifisert) aktivert som forplater slettingsvirkningen på tuplene av forskjellig forhold som refererer til de slettede tuplene.

DELETE kommandoen først lås rad eller tuple for å bli slettet, og slett deretter tuple one-by-one . Derfor krever det flere låser og ressurser som gjør det langsommere . Du kan gjøre endringene gjort med DELETE-setningen permanent ved å bruke COMMIT, eller du kan tilbakestille databasen ved hjelp av ROLLBACK .

Definisjon av TRUNCATE

TRUNCATE ligner på DELETE-kommandoen, da den også sletter tuples fra et forhold. Forskjellen er at den sletter hele tuples fra et forhold. Når TRUNCATE-kommandoen blir utført, slettes hele data fra tabellen, hver tuple sammen med alle dens attributtverdier blir eliminert fra tabellen. Men bordets struktur eksisterer fortsatt i databasen. Så kan du igjen gå inn i tuplene i bordet. TRUNCATE er en kommando for Data Definisjon Språk.

Syntaxen til TRUNCATE-kommandoen er som følger:

TRUNCATE TABLE table_name ;

Som DELETE, fungerer TRUNCATE ikke på tabelldata rad for rad. I stedet opererer den på datasidene som lagrer tabelldataene. Nå, når TRUNCATE sletter datasider, må den få lås på datasider i stedet for tuples. Derfor resulterer det i mindre krav til låser og ressurs som gjør TRUNCATE raskere sammenlignet med SLETT.

Utførelse av TRUNCATE-kommandoen aktiverer ikke noen utløsere siden den ikke bruker data rad for rad. TRUNCATE kan ikke utføres hvis tabellen er referert av en utenlandsk nøkkel . Når TRUNCATE-kommandoen sletter tabelldataene, kan den aldri bli gjenopprettet .

Nøkkelforskjeller mellom DELETE og TRUNCATE i SQL

  1. Hovedforskjellen mellom DELETE og TRUNCATE er at ved å bruke DELETE kan du slette spesifisert tuple fra et forhold. Men bruken av TRUNCATE vil slette hele tuples fra et forhold.
  2. DELETE er DML-kommando mens TRUNCATE er DDL-kommando.
  3. DELETE bruker WHERE-setningen til å filtrere posten / tuplene som skal slettes. Imidlertid krever TRUNCATE ikke WHERE-setningen da den sletter alle tupler, så det er ikke nødvendig å filtrere tuplene.
  4. DELETE aktiverer referanseutløsere som brukes på tabellene. Men TRUNCATE brann ikke noen utløsere på bordet.
  5. DELETE-kommandoen eliminerer tuplene en-for-en fra bordet, i rekkefølgen blir de behandlet. TRUNCATE virker imidlertid ikke på tuples one-by-one. I stedet opererer TRUNCATE på dataside som lagrer tabelldata.
  6. DELETE hent låsen på tupelen før du sletter den, mens TRUNCATE overta låsen på datasiden før du sletter datasiden.
  7. TRUNCATE er raskere i forhold til DELETE-kommandoen.
  8. DELETE rekordtransaksjonslogg for hver tuple mens TRUNCATE rekordtransaksjonslogg for hver dataside.
  9. Når du har slettet data ved hjelp av TRUNCATE, kan den aldri bli gjenopprettet, mens du kan gjenopprette dataene dine som du slettet ved hjelp av DELETE-kommandoen.

Konklusjon:

Hvis du vil tilpasse slettingen av poster fra tabellen, kan du bruke DELETE-kommandoen. Hvis du vil tømme tabellen, dvs. at du ikke vil legge igjen noen data i et bord, bruk deretter TRUNCATE-kommandoen.

Top