Avkortet vs. Slett SQL

Avkortet vs. Slett SQL
Det er to hovedmetoder for å fjerne data i en SQL -database: avkort og slette. Selv om prosessen kan virke nært beslektet, kan det å forstå forskjellen mellom disse kommandoene være gunstig når det gjelder å bestemme hvordan man håndterer data.

La oss bryte ned forskjellen mellom avkortet og slette kommandoer i SQL.

SQL TRUNCATE COMMAND

Den avkortede kommandoen i SQL er kjent som et datadfinisjonsspråk. De avkortede kommandoene fjerner dataene fra en tabell mens du bevarer tabellstrukturen. I motsetning til Delete -kommandoen, kan du ikke filtrere for spesifikke poster ved å bruke WHERE -leddet.

Tilsvarende kan vi ikke utføre tilbakevending etter å ha kjørt de avkortede kommandoene, siden ingen logger er bevart for denne kommandoen.

Merk: Noen databasemotorer støtter tilbakeføring for avkortede kommandoer, men dette er ikke universelt.

Hvis en tabell er en del av et indeksert syn eller referert av en fremmed nøkkel, vil ikke avkortet kommando fungere på den tabellen.

Kommandosyntaks er som vist:

Avkort tabell tabell_navn;

Den avkortede kommandoen er raskere enn å slette, da den ikke utfører en skanning for postene før fjerning. Det sikrer også at hele tabellen er låst før de fjerner dataene, og reduserer dermed transaksjonsplassen.

Avhengig av databasemotoren, trenger du eksplisitte tillatelser for å utføre en avkortet operasjon på et bord. For eksempel i SQL Server trenger du ALTER TABLE -tillatelsen. MySQL krever dråpe tillatelse, PostgreSQL krever avkortet tillatelse, og Oracle krever fall eventuelle tabelltillatelser.

SQL slett kommando

Delete -kommandoen er en datamanipulasjonskommando. Den lar deg fjerne poster fra en databasetabell og returnerer antall slettede poster. Slett -kommandoene fjerner radene fra en tabell og ikke hele tabellen fra databasen.

I motsetning til den avkortede kommandoen, lar Delete -kommandoen deg filtrere målpostene ved å bruke WHERE -leddet.

Kommandosyntaks er vist nedenfor:

Slett fra tabell_navn;

For å filtrere for spesifikke poster, kan du bruke syntaks som vist nedenfor:

Slett fra tabell_navn hvor tilstanden;

Merk: Hvis du ikke spesifiserer målkolonnene, vil kommandoen fjerne alle postene fra den gitte tabellen.

I motsetning til den avkortede kommandoen, som låser hele tabellen, låser Delete -kommandoen individuelle rader som fører til et høyere transaksjonsrom, spesielt på et stort bord.

For å kjøre en slettekommando på en tabell, trenger du slettingstillatelse.

Sammendragstabell

Følgende tabell oppsummerer forskjellene mellom SQL -sletting og avkortede kommandoer.

SQL avkortet SQL slett
Type Datadefinisjonsspråk Datamanipulasjonsspråk
Lock-type Bord Rad
Rollback Noen databasemotorer Ja
Transaksjonslogger Hele bordet Per rad
Transaksjonsromsbruk Mindre Høyere
Utløser støtte Nei Ja
Hastighet Veldig fort Langsom
Fjerningstype Alle rader Alle eller spesifikke rader (som spesifisert)
Fungerer med et indeksert syn? Nei Ja
Tilbakestilling av identitetskolonne Noen databasemotorer Nei
Returer fjernet poster? Nei Ja

I de fleste tilfeller vil valg av den beste operasjonstypen avhenge av dine spesifikke behov. Tenk imidlertid på følgende punkter:

  1. For spesifikke rader, velg slett.
  2. Avkortet er raskere enn sletting; Bruk derfor avkortet hvis du vil fjerne alle rader i et bord.
  3. Hvis du ikke bryr deg om tabellstrukturen, bruk andre kommandoer, for eksempel slipp.

Konklusjon

Denne artikkelen diskuterer to grunnleggende kommandoer for å fjerne data i en SQL -database. Ved hjelp av denne guiden kan du eksplisitt spesifisere hva den avkortede kommandoen eller Delete -kommandoen gjør i en relasjonsdatabase. Vi håper du fant denne artikkelen nyttig. Sjekk de andre Linux -hint -artiklene for flere tips og opplæringsprogrammer.