Forskjell mellom truncate og delete Forskjellen mellom

Anonim

Dataopprettelse og manipulering danner grunnlag for databaser, og vi kaller det som henholdsvis DDL og DML. En DDL er en forkortelse for Data Definition Language. Det kan enten opprette eller endre datastrukturene i databasene, og de kan ikke brukes til å endre dataene som er tilstede på bordene. For eksempel har vi kommandoer som bare lager et bord med de angitte tabellattributtene, men det legger aldri noen rader i tabellen. Men en DML, Data Manipulation Language, er i stand til å legge til, slette eller endre data i tabellene. Generelt sett handler DDL-kommandoene om bordstrukturer, mens DML-kommandoene omhandler de faktiske dataene. La det være, hvorfor avviger vi bare fra emnet "Forskjell mellom trunker og slett"? Det er grunner til at vi snakket om DML og DDL. Du ville forstå det i den forrige kommende diskusjonen.

Hva er en truncate-kommando?

Formålet med en truncate-kommando er å slette hele tabellen. Så når du bruker en Truncate-kommando, mister du all data på bordet, og du bør være forsiktig med å bruke den. Gi oss beskjed om hvordan du bruker den.

Syntetikken av truncate:

TRUNCATE TABLE tabellnavn ;

Her skal du angi navnet på tabellen som skal slettes på det hele. Dette sikrer at det vil være noen bord som sitter i minnet. Her er et eksempel på bruk av Truncate.

Nedenfor er 'medarbeiderbordet' og se bare på rader med data i den.

EMP-id EMP-navn betegnelse
1011 Jack Clerk
1012 Rosy Admin
1014 Nancy > Finans
La oss nå utstede kommandoen nedenfor på medarbeiderbordet.

TRUNCATE TABLE

ansatt; Her er resultatet av ovenstående syntaks og det er ingen data i den.

emp-id

emp-name betegnelse Hva er en slett kommando?

Formålet med en Slett-kommando er å fjerne de angitte radene fra tabellen. Her brukes "Hvor" -klausul her for å spesifisere radene som må slettes. Når vi ikke angir radene, vil kommandoen slette alle rader i tabellen. Bare se på syntaksen av den.

SLETT FRA

ansatt; Ovennevnte syntaks sletter alle rader fra 'medarbeiderbordet'. Så det resulterende tabellen vil ikke inneholde data.

SLETT FRA

ansatt HVOR emp-id = 1011; Denne setningen sletter bare en enkelt rad hvis emp-id er 1011. Så det resulterende tabellen vil være som nedenfor.

emp-id

emp-navn betegnelse 1012
Rosy Admin 1014
Nancy Finans Forskjeller:

Truncate er en DDL; Slett er en DML:

  • Vi har diskutert over hvordan DDL og DML fungerer i vår overgående diskusjon.Kommandoen Truncate er en DDL og den opererer på datastrukturnivået. Men Delete er en DML-kommando, og den fungerer på tabelldata. Andre eksempler for DDL er CREATE og ALTER. På samme måte kan vi si kommandoer som SELECT, UPDATE og REPLACE er perfekte eksempler på en DML. Hvordan fungerer trunkeren og slettingen:
  • Så snart vi utsteder kommandoen Truncate, ser den bare etter det angitte tabellen. Deretter fjerner det hele dataene fra minnet. Men arbeidsprosedyren er litt annerledes når det gjelder en slett. Her kopieres de opprinnelige tabelldataene til plass som kalles 'Rull tilbake' -rom før du gjør den faktiske datamanipuleringen. Deretter gjøres endringene på den faktiske tabelldatarommet. Så, begge deler er forskjellige i måten de jobber på. Avkort

-> fjern hele data fra bordet -> Tabellplassen frigjøres nå. Slett

-> Kopier de opprinnelige tabelldataene til Rull tilbake plass -> Slett den angitte data / hele tabellen -> Tabellplassen er frigjort, men Rollback plass er fylt. Rull tilbake:

  • En rulle tilbake er som en Angre-kommando i vårt Microsoft-tilbehør. Det brukes til å avbryte endringene som vi har gjort nylig i. e. fra det siste lagrede punktet. For å utføre operasjonen, skal dataene kopieres til Roll Back-rommet før det blir redigert. Selv om disse Rollbacks krever ekstra minne, er de ekstremt nyttige for å komme tilbake til originalen. Spesielt når du redigerer ved en feil! La oss komme til Truncate og Delete med hensyn til Roll back nå. Som vi diskuterte ovenfor, bruker Truncate aldri rulleplass, og vi kunne ikke komme tilbake til de opprinnelige dataene. Men Delete-kommandoen bruker rulleplass og vi kan bare enten bruke "Commit" eller "RollBack" for å godta eller avbryte endringene henholdsvis. Utløsere:
  • For de som trenger en forklaring om utløsere, er her et lite notat. Utløsere er et forhåndsspesifisert sett av operasjoner / operasjoner som skal aktiveres når bordet møter en bestemt tilstand. For eksempel kan vi utløse endring av lønnsbeløpet når en ansattes erfaring med selskapet er mer enn et år. Disse utløserne kan også fungere på andre tabeller. For eksempel kan vi oppdatere finanstabellen så snart en lønnsvekst har blitt gjort for en ansatt. Truncate er en DDL-kommando, utløseren er ikke tillatt her. Men en Slett er en DML-kommando, utløsere er tillatt her.

Hvilken er raskere?

  • Som du gjettet, ville kommandoen Truncate være raskere enn Slett-kommandoen. Den førstnevnte kunne fjerne alle dataene, og det er ikke nødvendig å sjekke om noen matchende forhold. Også de opprinnelige dataene kopieres ikke til tilbakestillingsområdet, og dette sparer mye tid. Disse to faktorene gjør Truncate arbeid raskere enn Slett. Kan vi bruke WHERE-setningen?
  • Klausulen "Hvor" brukes til å angi bestemte samsvarsbetingelser og er ikke noe med Truncate. Som Truncate ser aldri etter matchende forhold, og det fjerner bare alle rader, vi kunne ikke bruke en "Hvor" -klausul her.Men vi kunne alltid spesifisere tilstanden ved hjelp av "hvor" -klausulen i kommandoen Slett. Hvilket plasserer mer plass?
  • Trunkeren skal ikke bruke tilbakekallingsrommet og det sparer det minnet. Men slett trenger en sikkerhetskopiering i form av tilbakestillingsplass og dermed krever det mer minneplass enn avkortet. Så det er forskjellene og la oss se på i en tabellform.

S. Ingen

Forskjeller i Avkort Slett 1.
DDL eller DML? Det er en DDL og opererer på datastrukturnivå. Andre eksempler for DDL er CREATE og ALTER. Det er en DML-kommando, og den opererer på borddataene. DML står for Data Manipulation Language. Kommandoene som SELECT, UPDATE og REPLACE er perfekte eksempler for en DML. DML står for Data Manipulation Language.

2.

Hvordan fungerer det? Så snart vi utsteder kommandoen Truncate, ser den bare etter det angitte tabellen. Deretter fjerner det hele dataene fra minnet. Her kopieres de opprinnelige tabelldataene til plass som heter "Roll back" -rom før du gjør den faktiske data manipulasjonen. Deretter gjøres endringene på den faktiske tabelldatarommet. 3.
RollBack Kommandoen Truncate bruker aldri rulleplass og vi kunne ikke komme tilbake til de opprinnelige dataene. En tilbakestillingsplass er en eksklusiv og er opptatt når DML-kommandoene utstedes. Kommandoen Slett bruker rulleplass, og vi kan bare enten bruke "Commit" eller "RollBack" for å godta eller avbryte endringene henholdsvis. 4.

Utløser Truncate er en DDL-kommando, utløsere er ikke tillatt. Slett er en DML-kommando, utløsere er tillatt her. 5.

Hvilken er raskere? Det kan fjerne alle dataene, og det er ikke nødvendig å sjekke om de matchende forholdene. Også de opprinnelige dataene kopieres ikke til tilbakestillingsområdet, og dette sparer mye tid. Disse to faktorene gjør Truncate arbeid raskere enn Slett. Den bruker tilbakestillingsplassen, og alltid må de opprinnelige dataene beholdes på den. Dette er en ekstra byrde, og i sin tur tar det mye tid enn Truncate.

6.
Kan vi bruke WHERE-setningen? Da Truncate aldri ser etter matchende forhold, og det bare fjerner alle rader, kunne vi ikke bruke en "Hvor" -klausul her. Men vi kunne alltid spesifisere tilstanden ved hjelp av "hvor" -klausulen i kommandoen Slett. 7.
Hvilket plasserer mer plass? Trunkeren skal ikke bruke tilbakekallingsrommet og det sparer det minnet. Det krever sikkerhetskopiering i form av tilbakestillingsplass, og dermed krever det mer minneplass enn avkortet. Å vite forskjellene mellom noen to enheter utvider kunnskapen om begge deler! Du har landet på en riktig vei i. e. nettsiden for å forstå forskjellene, spesielt mellom trunkate og delete kommandoer. Håper du er nå klar med forskjellene og fortell oss om vi hadde hjulpet deg med å forstå det. Du kan også hjelpe oss med å peke på hva som har blitt igjen!