Anbefalet, 2024

Redaktørens Valg

Forskel mellem DELETE og TRUNCATE i SQL

DELETE og TRUNCATE bruges kommandoer til at fjerne tuples fra en relation, men de adskiller sig i mange sammenhænge. I SQL er DELETE-kommandoen en kommando for data manipulationssprog, mens TRUNCATE-kommandoen er en kommando for dataopklaringssprog. Men det punkt, der gør det muligt for os at skelne mellem DELETE og TRUNCATE, er, at DELETE er i stand til at fjerne specificerede tuples fra en relation, mens TRUNCATE-kommandoen fjerner hele tuples fra en relation.

vi bør ikke stoppe her, der er mange andre forskelle mellem DELETE og TRUNCATE. Lad os diskutere dem ved hjælp af sammenligningstabel vist nedenfor.

Sammenligningstabel

Grundlag for sammenligningSLETafkorte
GrundlæggendeDu kan angive den tuple, du vil slette.Det sletter alle tuplerne fra en relation.
SprogDELETE er en kommando til manipulering af data.TRUNCATE er en kommando for dataopklaringssprog.
HVORDELETE kommandoen kan have WHERE-klausul.TRUNCATE-kommandoen har ikke WHERE-bestemmelse.
UdløserDELETE-kommandoen aktiverer den udløser, der påføres bordet, og får dem til at slukke.TRUNCATE-kommandoen aktiverer ikke triggerne til brand.
SletningDELETE-kommandoen eliminerer tuplerne en-for-en.TRUNCATE slette hele datasiden, der indeholder tuplerne.
LåseDELETE kommandoen lås rækken / tuplen før du sletter den.TRUNCATE kommando lås data side før sletning af tabel data.
HastighedDELETE-kommandoen virker langsommere i forhold til TRUNCATE.TRUNCATE er hurtigere i forhold til DELETE.
TransaktionDELETE registrerer transaktionslog for hver slettet tuple.TRUNCATE rekordtransaktionslog for hver slettet dataside.
GendanDELETE kommandoen kan følges enten ved COMMIT eller ROLLBACK.TRUNCATE-kommandoen kan ikke være ROLLBACK.

Definition af DELETE

DELETE er en DML-kommando ( Data Manipulation Language ). Opgaven med DELETE-kommandoen er at slette eller fjerne tuplerne fra et bord eller en relation. Ved hjælp af DELETE kan vi fjerne hele tuplen med alle dens attributværdier fra en relation. DELETE fjerner ikke værdien af ​​en bestemt attribut, en tuple fra forholdet.

Du kan filtrere de tupler, du vil slette fra et bord, ved hjælp af WHERE- klausulen. Hvis du angiver WHERE-klausul i DELETE-sætningen, vil den kun slette tupler, der opfylder WHERE-betingelsen. Men hvis du ikke angiver WHERE-klausulen i DELETE-sætningen, sletter eller eliminerer du alle tuplerne fra en relation som standard. HVOR bestemmelse i DELETE-sætningen kan indeholde indlejrede SELECT-FROM-WHERE udsagn.

Syntaks af DELETE kommandoen er som følger:

DELETE FROM table_name WHERE [ conditon ];

DELETE-kommandoen fungerer kun på en enkelt relation eller tabel ad gangen. Hvis du vil slette tuple fra forskellige relationer, skal du placere forskellige DELETE kommandoer for hver. Men at slette tuple fra et forhold kan krænke databasenes referencemæssige integritet, som kan løses ved hjælp af triggere. Hvis DELETE-kommandoen overtræder referentiel integritet, bliver alle referencetrykere (hvis angivet) aktiveret, der udbreder sletningshandlingen på tuplerne af forskellige forhold, der refererer til de slettede tupler.

DELETE kommandoen lås først rækken eller tuplen, der skal slettes, og fjern derefter tuplen én for én . Derfor kræver det flere låse og ressourcer, der gør det langsommere . Du kan foretage de ændringer, der foretages med DELETE-udsagn permanent ved hjælp af COMMIT, eller du kan nulstille databasen ved hjælp af ROLLBACK .

Definition af TRUNCATE

TRUNCATE svarer til DELETE-kommandoen, da den også sletter tuples fra en relation. Forskellen er, at den sletter hele tupler fra en relation. Når TRUNCATE-kommandoen udføres, slettes hele data fra tabellen, hver tuple sammen med alle dens attributværdier fjernes fra tabellen. Men bordets struktur eksisterer stadig i databasen. Så kan du igen komme ind i tuplerne i bordet. TRUNCATE er en kommando for dataopklaringssprog.

Synkroniseringen af ​​TRUNCATE kommandoen er som følger:

TRUNCATE TABLE table_name ;

Ligesom DELETE fungerer TRUNCATE ikke på borddata række for række. I stedet fungerer den på de datasider, der lagrer borddataene. Nu, når TRUNCATE sletter datasider, skal den erhverve lås på datasider i stedet for tuples. Derfor resulterer det i mindre krav til låse og ressource, der gør TRUNCATE hurtigere i forhold til DELETE.

Udførelse af TRUNCATE-kommandoen aktiverer ikke triggere, da den ikke bruger data rad for række. TRUNCATE kan ikke udføres, hvis tabellen refereres af en udenlandsk nøgle . Når først TRUNCATE-kommandoen sletter tabeldata, kan den aldrig blive genoprettet .

Nøgleforskelle mellem DELETE og TRUNCATE i SQL

  1. Hovedforskellen mellem DELETE og TRUNCATE er at ved at bruge DELETE kan du slette specificeret tuple fra en relation. Men brugen af ​​TRUNCATE vil slette hele tuples fra en relation.
  2. DELETE er DML-kommando, mens TRUNCATE er DDL-kommando.
  3. DELETE bruger WHERE klausul til at filtrere det rekord / tuples, der skal slettes. TRUNCATE kræver dog ikke WHERE-bestemmelse, da det sletter alle tupler, så det er ikke nødvendigt at filtrere tuplerne.
  4. DELETE aktiverer referentielle triggere, der er anvendt på tabellerne. Men TRUNCATE brænder ikke nogen udløsere på bordet.
  5. DELETE-kommandoen fjerner tuplerne en-for-en fra bordet, i ordren behandles de. TRUNCATE virker imidlertid ikke på tuples one-by-one. I stedet fungerer TRUNCATE på dataside, der lagrer tabeldata.
  6. DELETE erhverver låsen på tuplen, før du sletter den, mens TRUNCATE erhverver låsen på datasiden, før du sletter datasiden.
  7. TRUNCATE er hurtigere i forhold til DELETE kommandoen.
  8. DELETE rekordtransaktionslog for hver tuple, mens TRUNCATE rekordtransaktionslog for hver dataside.
  9. Når du sletter data ved hjælp af TRUNCATE, kan den aldrig blive genoprettet, mens du kan gendanne dine data tilbage, som du har slettet ved hjælp af DELETE-kommandoen.

Konklusion:

Hvis du vil tilpasse sletningen af ​​poster fra tabellen, kan du bruge DELETE-kommandoen. Hvis du vil tømme bordet, dvs. du ikke vil have efterladt nogen data i et bord, skal du bruge TRUNCATE kommando.

Top