me ei tohiks siin peatuda, on palju muid erinevusi DELETE ja TRUNCATE vahel. Arutagem neid allpool toodud võrdluskaardi abil.
Võrdluskaart
Võrdluse alus | DELETE | TRUNCATE |
---|---|---|
Põhiline | Saate määrata kustutatava tuple. | See kustutab kõik suhted. |
Keel | DELETE on käsk Data Manipulation Language. | TRUNCATE on käsk Data Definition Language. |
KUS | Käsklusega DELETE võib olla WHERE klausel. | Käsk TRUNCATE ei sisalda WHERE klauslit. |
Käivita | Käsklus DELETE aktiveerib lauale rakendatud päästiku ja põhjustab nende tulekahju. | Käsk TRUNCATE ei käivita tulekahju käivitajaid. |
Kustutamine | Käsklus DELETE kõrvaldab ühikud ükshaaval. | TRUNCATE kustutab kogu tuple sisaldava andmelehe. |
Lukusta | Käsk DELETE lukustab rida / numbri enne selle kustutamist. | Enne tabeliandmete kustutamist TRUNCATE käskluku andmed. |
Kiirus | DELETE käsk toimib aeglasemalt võrreldes TRUNCATE-ga. | TRUNCATE on kiirem kui DELETE. |
Tehing | DELETE salvestab iga kustutatud numbri tehingute registri. | TRUNCATE salvestab iga kustutatud andmelehe tehingute registri. |
Taastama | Käsklust DELETE saab järgida kas COMMIT või ROLLBACK. | TRUNCATE käsk ei saa olla ROLLBACK. |
DELETE mõiste
DELETE on käsk DML ( Data Manipulation Language ). Käsu DELETE ülesanne on kustutada või eemaldada tabelist või suhetest pärinevad numbrid. Kasutades DELETE-d, oleme võimelised kõrvaldama kogu tuple, kusjuures kõik selle atribuudi väärtused on seotud suhtega. DELETE ei eemalda konkreetse atribuudi väärtust, mis on suhetest.
WHERE-i sätte abil saate tabelist kustutada eemaldatavaid tuppe filtreerida. Kui määrate DELETE avalduses WHERE klausli, siis kustutab see ainult WHERE klausli tingimustele vastavad numbrid. Aga kui te ei määra DELETE-avalduses WHERE-klauslit, kustutab see vaikimisi või kõrvaldab kõik suhted. Kus DELETE avalduses sisalduv klausel võib sisaldada sisestatud SELECT-FROM-WHERE avaldusi.
DELETE käsu süntaks on järgmine:
DELETE FROM table_name WHERE [ conditon ];
Käsklus DELETE toimib korraga ainult ühel suhtel või tabelil. Juhul, kui soovite kustutada erinevatest suhetest koosneva numbri, peate iga jaoks sisestama erineva DELETE käsu. Samas võib ühest suust välja jätta rikkuda andmebaasi viite terviklikkust, mida saab lahenduste abil lahendada. Kui DELETE käsk rikub viite terviklikkust, siis aktiveeritakse kõik referentslülitid (kui on määratud), mis levitab kustutamismeetmeid erinevates suhetes, mis viitavad kustutatud numbritele.
Käsklus DELETE lukustab kõigepealt kustutatava rea või ruudu ning kustutage seejärel ükshaaval . Seega nõuab see rohkem lukke ja ressursse, mis muudavad selle aeglasemaks . DELETE-avaldusega tehtavad muudatused saab muuta püsivaks kasutades COMMIT-i, või saate andmebaasi lähtestada ROLLBACK-i abil .
TRUNCATE määratlus
TRUNCATE on sarnane DELETE käsuga, kuna see kustutab ka seoseid. Erinevus seisneb selles, et see kustutab suhtedest kogu tuple. Kui TRUNCATE käsk täidetakse, kustutatakse tabelist kõik andmed, iga tabel koos kõigi selle atribuutide väärtustega kustutatakse tabelist. Kuid tabeli struktuur on andmebaasis endiselt olemas. Niisiis, saate jälle tabelisse sisestada. TRUNCATE on käsk Data Definition Language.
Käsu TRUNCATE süntaks on järgmine:
TRUNCATE TABLE table_name ;
Nagu DELETE, ei tööta TRUNCATE tabeli andmetel rida-rida. Selle asemel töötab see andmelehtedel, mis salvestavad tabeli andmeid. Nüüd, kui TRUNCATE kustutab andmeleheküljed, peab see lukkude asemel hankima andmelehekülgede. Sellest tulenevalt on tulemuseks väiksem nõue lukkude ja ressursside järele, mis muudab TRUNCATE kiiremini kui DELETE.
Käsu TRUNCATE täitmine ei aktiveeri ühtegi käivitusprotsessi, kuna see ei käivita andmeid järjestikku. TRUNCATEi ei saa täita juhul, kui tabelit viitab ükskõik milline võõrvõti . Kui TRUNCATE käsk kustutab tabeli andmed, ei saa seda kunagi tagasi saada.
Peamised erinevused DELETE ja TRUNCATE vahel SQLis
- Peamine erinevus DELETE ja TRUNCATE vahel on see, et kasutades DELETE-d, saate kustutada määratud tuple suhtest. Kuid TRUNCATE kasutamine kustutab terve numbri suhetest.
- DELETE on DML-käsk, TRUNCATE on DDL-käsk.
- DELETE kasutab kustutatavate kirjete / numbritega filtreerimiseks WHERE-i sätet. Siiski ei nõua TRUNCATE WHERE klauslit, kuna see kustutab kõik numbrid, seega ei ole vaja tuppe filtreerida.
- DELETE aktiveerib tabelitele rakendatavad viiteindikaatorid. Kuid TRUNCATE ei tule laual mingeid vallandajaid.
- Käsklus DELETE kõrvaldab tabelilt ükshaaval teisendid, neid töödeldakse järjekorras. TRUNCATE ei tööta aga ükshaaval ühekordselt. Selle asemel töötab TRUNCATE andmelehtel, mis salvestab tabeli andmeid.
- Enne kustutamist kustutab DELETE numbri lukustuse, kuid TRUNCATE omandab enne lehekülje kustutamist andmete lehel lukku.
- TRUNCATE on kiirem kui DELETE käsk.
- DELETE salvestab iga rekordi tehingute registri, samas kui TRUNCATE salvestab iga andmelehe tehingute registri.
- Pärast andmete kustutamist TRUNCATE abil ei saa seda kunagi tagasi saada, samas saate taastada oma andmed, mida kustutasite käsuga DELETE.
Järeldus:
Kui soovite kohandada tabeli kustutamist, saate kasutada käsku DELETE. Kui soovite tabelit tühjendada, st te ei soovi tabelis mingeid andmeid jätta, siis kasutage käsku TRUNCATE.