Preporučeno, 2024

Izbor Urednika

Razlika između DELETE i TRUNCATE u SQL-u

DELETE i TRUNCATE su naredbe koje koriste za uklanjanje tuples iz odnosa, ali se razlikuju u mnogim kontekstima. U SQL-u, naredba DELETE je naredba Language Manipulation Language, dok je naredba TRUNCATE naredba Language Definition Language . Međutim, točka koja nam omogućuje razlikovanje između DELETE i TRUNCATE je da DELETE može ukloniti određene zadatke iz relacije, dok, naredba TRUNCATE uklanja cijele torke iz odnosa.

ne smijemo stati ovdje, postoje mnoge druge razlike između DELETE i TRUNCATE. Porazgovarajmo o njima uz pomoć usporednog dijagrama prikazanog u nastavku.

Tablica usporedbe

Osnova za ComparsionIZBRISATISKRATITI
Osnovni, temeljniMožete odrediti tuple koju želite izbrisati.Briše sve torke iz odnosa.
JezikDELETE je naredba Language Manipulation Language.TRUNCATE je naredba Language Definition Language.
GDJENaredba DELETE može imati WHERE klauzulu.Naredba TRUNCATE nema stavku WHERE.
OkidačNaredba DELETE aktivira okidač koji se primjenjuje na stolu i uzrokuje njihovo pucanje.Naredba TRUNCATE ne aktivira okidače za ispaljivanje.
BrisanjeDELETE naredba eliminira tuples jedan po jedan.TRUNCATE briše cijelu podatkovnu stranicu koja sadrži torke.
zaključatiDELETE naredba zaključava redak / tuple prije brisanja.Naredba TRUNCATE zaključava stranicu s podacima prije brisanja podataka tablice.
UbrzatiNaredba DELETE djeluje sporije u usporedbi s TRUNCATE.TRUNCATE je brži u usporedbi s DELETE.
TransakcijaDELETE bilježi dnevnik transakcija za svaku izbrisanu naplatku.TRUNCATE bilježi dnevnik transakcija za svaku stranicu izbrisanih podataka.
VratitiNaredbu DELETE može slijediti COMMIT ili ROLLBACK.Naredba TRUNCATE ne može biti ROLLBACK.

Definicija DELETE

DELETE je naredba jezika za upravljanje podacima (DML). Zadatak naredbe DELETE je izbrisati ili ukloniti torke iz tablice ili odnosa. Koristeći DELETE, u mogućnosti smo eliminirati cijelu torku, sa svim njegovim vrijednostima atributa iz relacije. DELETE ne uklanja vrijednost određenog atributa, tuple iz relacije.

Možete filtrirati tuples koje želite izbrisati iz tablice, koristeći WHERE klauzulu. Ako navedete WHERE klauzulu u DELETE izrazu, tada će samo obrisati zadatke koji zadovoljavaju uvjet WHERE klauzule. Ali ako ne navedete WHERE klauzulu u DELETE izjavi, tada ona po defaultu briše ili uklanja sve tuple iz relacije. WHERE klauzula u DELETE izrazu može sadržavati ugniježđene SELECT-FROM-WHERE izraze.

Sintaksa naredbe DELETE je sljedeća:

DELETE FROM table_name WHERE [ uvjet ];

DELETE naredba radi samo na jednom odnosu ili tablici u isto vrijeme. U slučaju da želite izbrisati tuple iz različitih odnosa morate staviti različite naredbe DELETE za svaku od njih. Ali brisanje tuple iz jednog odnosa može narušiti referentni integritet baze podataka, što se može riješiti uz pomoć okidača. Ako naredba DELETE krši referentni integritet, tada se aktiviraju svi referentni okidači (ako su specificirani) koji propagiraju radnje brisanja na torkama različitih relacija koje se odnose na izbrisane tuple.

Naredba DELETE prvo blokira redak ili tupku koju želite izbrisati, a zatim obrišite tuple jedan po jedan . Dakle, to zahtijeva više brava i resursa koji ga čine sporijim . Promjene možete izvršiti pomoću naredbe DELETE pomoću COMMIT ili možete resetirati bazu podataka koristeći ROLLBACK .

Definicija TRUNCATE-a

TRUNCATE je sličan DELETE naredbi jer briše i tuples iz relacije. Razlika je u tome što briše cijele torke iz odnosa. Kako se izvršava naredba TRUNCATE, brišu se cjelokupni podaci iz tablice, a svaka tuple zajedno sa svim vrijednostima atributa se eliminira iz tablice. Ali struktura tablice i dalje postoji u bazi podataka. Dakle, možete ponovo unijeti torke u tablicu. TRUNCATE je naredba Language Definition Language.

Sintaksa naredbe TRUNCATE je sljedeća:

TRUNCATE TABLE ime_tablice ;

Kao i DELETE, TRUNCATE ne djeluje na podatke tablice red po red. Umjesto toga, on djeluje na stranicama s podacima koje pohranjuju podatke tablice. Sada, kada TRUNCATE izbriše stranice s podacima, potrebno je dobiti zaključavanje na stranicama s podacima umjesto na torke. Dakle, to rezultira manjom potrebom za bravama i resursom koji čini TRUNCATE bržim u odnosu na DELETE.

Izvršenje naredbe TRUNCATE ne aktivira nikakve okidače jer ne upravlja podacima red po red. TRUNCATE se ne može izvršiti u slučaju da na tablicu upućuje bilo koji strani ključ . Nakon što naredba TRUNCATE izbriše podatke tablice, nikada se ne može vratiti.

Ključne razlike između DELETE i TRUNCATE u SQL-u

  1. Glavna razlika između DELETE-a i TRUNCATE-a je u tome što pomoću DELETE možete izbrisati zadane tuple iz relacije. No, upotreba TRUNCATE će izbrisati cijele torke iz odnosa.
  2. DELETE je DML naredba, dok je TRUNCATE DDL naredba.
  3. DELETE upotrebljava stavku WHERE za filtriranje zapisa / torkova koje treba izbrisati. Međutim, TRUNCATE ne zahtijeva WHERE klauzulu jer briše sve tuple, tako da nema potrebe filtrirati torke.
  4. DELETE aktivira referentne okidače primijenjene na tablice. Ali TRUNCATE ne ispaljuje nikakve okidače na stolu.
  5. Naredba DELETE uklanja tuples jedan po jedan iz tablice, u redoslijedu, oni su obrađeni. Međutim, TRUNCATE ne radi na torkama jedan po jedan. Umjesto toga, TRUNCATE djeluje na podatkovnoj stranici koja pohranjuje podatke tablice.
  6. DELETE dobiva zaključavanje na torku prije brisanja, dok TRUNCATE dobiva zaključavanje na stranici s podacima prije brisanja podatkovne stranice.
  7. TRUNCATE je brži u usporedbi s naredbom DELETE.
  8. DELETE zapisnik transakcija za svaku točku, a TRUNCATE bilježi dnevnik transakcija za svaku stranicu s podacima.
  9. Nakon što izbrišete podatke pomoću TRUNCATE-a, oni se nikada ne mogu vratiti natrag, dok možete vratiti podatke natrag koje ste izbrisali pomoću naredbe DELETE.

Zaključak:

Ako želite prilagoditi brisanje zapisa iz tablice, možete koristiti naredbu DELETE. Ako želite isprazniti tablicu, tj. Ne želite ostaviti podatke u tablici, upotrijebite naredbu TRUNCATE.

Top