Razlika između naredbi DELETE i TRUNCATE je najčešći dio pitanja na intervjuu. Uglavnom se koriste za brisanje podataka iz baze podataka. Glavna razlika između njih je u tome što naredba delete briše podatke bez poništavanja identiteta tablice, dok naredba truncate poništava identitet određene tablice . Ovaj članak objašnjava potpuni pregled naredbi DELETE i TRUNCATE i njihove razlike koje se prvenstveno koriste naizmjenično, ali su potpuno različite.
Što je naredba DELETE?
To je DML ili naredba za manipulaciju podacima koristi se za brisanje zapisa iz tablice koji nisu potrebni u bazi podataka. Uklanja cijeli redak iz tablice i proizvodi broj izbrisanih redaka. Za izvršenje ove naredbe potrebna nam je dozvola za brisanje ciljne tablice. Također nam omogućuje filtriranje i brisanje bilo kojih specifičnih zapisa pomoću GDJE klauzula iz tablice.
Pojašnjava da imamo sigurnosnu kopiju naše baze podataka prije izvršavanja ove naredbe jer ne možemo oporaviti izbrisane zapise pomoću ovog upita. Stoga, sigurnosne kopije baze podataka omogućuju nam vraćanje podataka kad god nam zatrebaju u budućnosti.
Sljedeća sintaksa objašnjava naredbu DELETE za uklanjanje podataka iz tablice:
DELETE FROM table_name WHERE condition;
Što je naredba TRUNCATE?
Skraćeni iskaz je a DDL ili naredba jezika za definiciju podataka koristi se za uklanjanje kompletnih podataka iz tablice bez uklanjanja strukture tablice. Ne možemo koristiti GDJE s ovom naredbom, tako da filtriranje zapisa nije moguće. Nakon izvršenja ove naredbe, mi ne može vratiti izbrisane podatke jer se dnevnik ne održava tijekom izvođenja ove operacije.
Naredba truncate delocira stranice umjesto redova i pravi unos za dealocirajuće stranice umjesto redaka u zapisnicima transakcija. Ova naredba zaključava stranice umjesto redaka; stoga zahtijeva manje zaključavanja i resursa. Imajte na umu da ne možemo koristiti naredbu truncate kada je tablica referencirana stranim ključem ili sudjeluje u indeksiranom prikazu.
razlika između leda i snijega
Sljedeća sintaksa objašnjava naredbu TRUNCATE za uklanjanje podataka iz tablice:
TRUNCATE TABLE table_name;
Ključne razlike između DELETE i TRUNCATE
Sljedeće točke objašnjavaju razlike između naredbi delete i truncate:
- Naredba DELETE koristi se kada želimo ukloniti neke ili sve zapise iz tablice, dok će naredba TRUNCATE izbrisati cijele retke iz tablice.
- DELETE je DML naredba jer samo mijenja podatke tablice, dok je TRUNCATE DDL naredba.
- Naredba DELETE može filtrirati zapis/torke pomoću klauzule WHERE. Međutim, naredba TRUNCATE ne dopušta korištenje GDJE klauzula, tako da ne možemo filtrirati retke tijekom skraćivanja.
- DELETE aktivira sve brisanje okidača na stolu paliti. Međutim, nikakvi okidači se ne aktiviraju na operaciji skraćivanja jer ona ne djeluje na pojedinačnim recima.
- DELETE izvodi brisanje red po red iz tablice, redoslijedom kojim su obrađeni. Međutim, TRUNCATE radi na podatkovnim stranicama umjesto na redovima jer je odjednom izbrisao cijele podatke tablice.
- Izjava DELETE samo briše zapise, a ne poništava identitet stola , dok TRUNCATE resetira identitet određene tablice.
- Naredba DELETE zahtijeva više zaključavanja i resursa baze podataka jer stječe zaključavanje svakog izbrisanog retka. Nasuprot tome, TRUNCATE stječe zaključavanje podatkovne stranice prije brisanja podatkovne stranice; dakle, zahtijeva manje zaključavanja i malo resursa.
- Izjava DELETE čini unos u dnevnik transakcija za svaki izbrisani red dok TRUNCATE bilježi dnevnik transakcija za svaku podatkovnu stranicu.
- TRUNCATE naredba je brže nego naredba DELETE jer oslobađa podatkovne stranice umjesto redaka i bilježi podatkovne stranice umjesto redaka u zapisnike transakcija.
- Nakon što se zapis izbriše pomoću naredbe TRUNCATE, ne možemo ga vratiti. Nasuprot tome, možemo vratiti izbrisane podatke natrag koje smo uklonili operacijom DELETE.
Tablica usporedbe DELETE nasuprot TRUNCATE
Sljedeća usporedna tablica na brz način objašnjava njihove glavne razlike:
Osnova usporedbe | IZBRISATI | SKRATITI |
---|---|---|
Definicija | Izjava brisanja koristi se za uklanjanje jednog ili više zapisa iz postojeće tablice, ovisno o navedenom stanju. | Naredba truncate uklanja sve podatke iz postojeće tablice, ali ne i samu tablicu. Čuva strukturu tablice ili shemu. |
Jezik | To je DML (Data Manipulation Language) naredba. | To je DDL (Data Definition Language) naredba. |
GDJE | Može koristiti klauzulu WHERE za filtriranje bilo kojeg određenog retka ili podataka iz tablice. | Ne koristi klauzulu WHERE za filtriranje zapisa iz tablice. |
Dopuštenje | Moramo imati DELETE dozvolu za korištenje ove naredbe. | Moramo imati ALTER dozvolu za korištenje ove naredbe. |
radim | Ova naredba uklanja zapise jedan po jedan. | Ova naredba briše cijelu podatkovnu stranicu koja sadrži zapise. |
brava | Zaključat će red prije brisanja. | Zaključat će stranicu s podacima prije brisanja. |
Identitet tablice | Ova naredba ne poništava identitet tablice jer samo briše podatke. | Uvijek poništava identitet tablice. |
Transakcija | Održava zapisnike transakcija za svaki izbrisani zapis. | Ne održava zapisnike transakcija za svaku izbrisanu podatkovnu stranicu. |
Ubrzati | Njegova brzina je spora jer je održavao trupac. | Njegovo je izvršenje brzo jer briše sve podatke odjednom bez održavanja zapisa transakcija. |
Okidač | Ova naredba također može aktivirati okidač primijenjen na stolu i izazvati njihovo aktiviranje. | Ova naredba ne aktivira aktiviranje okidača primijenjenih na tablici. |
Vratiti | Omogućuje nam vraćanje obrisanih podataka korištenjem naredbe COMMIT ili ROLLBACK. | Ne možemo vratiti izbrisane podatke nakon korištenja ove naredbe. |
Indeksirani prikaz | Može se koristiti s indeksiranim prikazima. | Ne može se koristiti s indeksiranim prikazima. |
Prostor | Naredba DELETE zauzima više transakcijskog prostora od naredbe truncate jer održava dnevnik za svaki izbrisani redak. | Izjava TRUNCATE zauzima manje transakcijskog prostora jer održava dnevnik transakcija za cijelu podatkovnu stranicu umjesto za svaki redak. |
Zaključak
U ovom smo članku napravili usporedbu između naredbi delete i truncate. Zaključili smo da se naredba DELETE koristi kada želimo prilagoditi brisanje zapisa iz tablice. A naredba TRUNCATE se koristi kada ne želimo ostaviti nijedan zapis ili podatak u tablici, tj. želimo isprazniti tablicu.