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 sammenlikning | SLETT | avkorte |
---|---|---|
grunn~~POS=TRUNC | Du kan angi tupelen du vil slette. | Det sletter alle tuplene fra et forhold. |
Språk | DELETE er en kommando for data manipulasjonsspråk. | TRUNCATE er en kommando for Data Definisjon Språk. |
HVOR | DELETE kommandoen kan ha WHERE-setningen. | TRUNCATE-kommandoen har ikke WHERE-bestemmelse. |
Avtrekker | DELETE-kommandoen aktiverer avtrekkeren som er påført bordet og får dem til å brann. | TRUNCATE-kommandoen aktiverer ikke utløserne til brann. |
sletting | DELETE-kommandoen eliminerer tuplene en-for-en. | TRUNCATE slette hele datasiden som inneholder tuplene. |
Låse | DELETE kommandoen lås rad / tuple før du sletter den. | TRUNCATE kommandolinjens dataside før du sletter tabelldata. |
Hastighet | DELETE-kommandoen virker langsommere i forhold til TRUNCATE. | TRUNCATE er raskere i forhold til DELETE. |
Transaksjon | DELETE registrerer transaksjonslogg for hver slettet tuple. | TRUNCATE rekordtransaksjonslogg for hver slettet dataside. |
Restaurere | DELETE 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
- 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.
- DELETE er DML-kommando mens TRUNCATE er DDL-kommando.
- 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.
- DELETE aktiverer referanseutløsere som brukes på tabellene. Men TRUNCATE brann ikke noen utløsere på bordet.
- 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.
- DELETE hent låsen på tupelen før du sletter den, mens TRUNCATE overta låsen på datasiden før du sletter datasiden.
- TRUNCATE er raskere i forhold til DELETE-kommandoen.
- DELETE rekordtransaksjonslogg for hver tuple mens TRUNCATE rekordtransaksjonslogg for hver dataside.
- 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.