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:
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.