Ero DELETE- ja TRUNCATE-komentojen välillä on haastattelukysymyksen yleisin osa. Niitä käytetään pääasiassa tietojen poistamiseen tietokannasta. Suurin ero niiden välillä on, että delete-käsky poistaa tiedot nollaamatta taulukon identiteettiä, kun taas tronate-komento nollaa tietyn taulukon identiteetin . Tämä artikkeli selittää täydellisen yleiskatsauksen DELETE- ja TRUNCATE-komennoista ja niiden eroista, joita käytetään pääasiassa keskenään, mutta jotka ovat täysin erilaisia.
Mikä on DELETE-komento?
Se on a DML tai tietojen käsittelykomento käytetään tietueiden poistamiseen taulukosta, jota ei vaadita tietokannassa. Se poistaa koko rivin taulukosta ja tuottaa poistettujen rivien määrän. Tarvitsemme kohdetaulukon poistooikeuden suorittaaksemme tämän komennon. Sen avulla voimme myös suodattaa ja poistaa tiettyjä tietueita käyttämällä MISSÄ lauseke taulukosta.
Se selventää, että meillä on varmuuskopio tietokannastamme ennen tämän komennon suorittamista, koska emme voi palauttaa poistettuja tietueita tällä kyselyllä. Siksi tietokannan varmuuskopiot antaa meille mahdollisuuden palauttaa tiedot aina, kun tarvitsemme niitä tulevaisuudessa.
Seuraava syntaksi selittää DELETE-komennon tietojen poistamiseksi taulukosta:
DELETE FROM table_name WHERE condition;
Mikä on TRUNCATE-komento?
Katkaistu lause on a DDL tai datamäärittelykielen komento käytetään poistamaan täydelliset tiedot taulukosta poistamatta taulukkorakennetta. Emme voi käyttää MISSÄ lauseke tällä komennolla, jotta tietueiden suodatus ei ole mahdollista. Tämän komennon suorittamisen jälkeen me ei voi palauttaa poistettuja tietoja koska lokia ei ylläpidetä tätä toimintoa suoritettaessa.
Katkaise-komento purkaa paikan sivuja rivien sijaan ja tekee merkinnän luovutussivuille tapahtumalokien rivien sijaan. Tämä komento lukitsee sivut rivien sijaan; siksi se vaatii vähemmän lukkoja ja resursseja. Huomaa, että emme voi käyttää katkaisulauseketta, kun taulukkoon viitataan vieraalla avaimella tai kun se osallistuu indeksoituun näkymään.
java sekoitetaan int
Seuraava syntaksi selittää TRUNCATE-komennon tietojen poistamiseksi taulukosta:
TRUNCATE TABLE table_name;
Tärkeimmät erot DELETE:n ja TRUNCATE:n välillä
Seuraavat kohdat selittävät erot delete- ja trumpate-komennon välillä:
- DELETE-käskyä käytetään, kun haluamme poistaa taulukosta osan tai kaikki tietueet, kun taas TRUNCATE-käsky poistaa kokonaisia rivejä taulukosta.
- DELETE on DML-komento, koska se muuttaa vain taulukon tietoja, kun taas TRUNCATE on DDL-komento.
- DELETE-komento voi suodattaa tietueet/tuplet WHERE-lauseen avulla. TRUNCATE-komento ei kuitenkaan salli käyttöä MISSÄ lauseke, joten emme voi suodattaa rivejä lyhennyksen aikana.
- DELETE aktivoi kaikki poistaa laukaisimia pöydälle tuleen. Katkaisutoiminnolle ei kuitenkaan käynnistetä laukaisimia, koska se ei toimi yksittäisillä riveillä.
- DELETE poistaa rivi riviltä yksi kerrallaan taulukosta siinä järjestyksessä, jossa ne käsiteltiin. TRUNCATE toimii kuitenkin tietosivuilla rivien sijaan, koska se poisti koko taulukon tiedot kerralla.
- DELETE-käsky vain poistaa tietueet, ei nollaa taulukon identiteetti , kun taas TRUNCATE nollaa tietyn taulukon identiteetin.
- DELETE-komento vaatii enemmän lukkoja ja tietokantaresursseja, koska se hankkii lukon jokaiselta poistetulta riviltä. Sitä vastoin TRUNCATE hankkii tietosivun lukon ennen tietosivun poistamista; siksi se vaatii vähemmän lukkoja ja vähän resursseja.
- DELETE-käsky tekee merkinnän tapahtumaloki jokaiselle poistetulle riville, kun taas TRUNCATE tallentaa tapahtumalokin jokaiselle tietosivulle.
- TRUNCATE-komento on nopeammin kuin DELETE-komento, koska se purkaa tietosivut rivien sijasta ja tallentaa datasivuja tapahtumalokien rivien sijaan.
- Kun tietue on poistettu TRUNCATE-komennolla, emme voi palauttaa sitä takaisin. Sitä vastoin voimme palauttaa poistetut tiedot, jotka poistimme DELETE-toiminnosta.
POISTA vs. TRUNCATE -vertailukaavio
Seuraava vertailukaavio selittää niiden tärkeimmät erot nopeasti:
Vertailuperuste | POISTAA | KATKAISTA |
---|---|---|
Määritelmä | Poista-käskyä käytetään yksittäisten tai useiden tietueiden poistamiseen olemassa olevasta taulukosta määritetystä ehdosta riippuen. | Katkaise-komento poistaa täydelliset tiedot olemassa olevasta taulukosta, mutta ei itse taulukkoa. Se säilyttää taulukon rakenteen tai skeeman. |
Kieli | Se on DML-komento (Data Manipulation Language). | Se on DDL (Data Definition Language) -komento. |
MISSÄ | Se voi käyttää WHERE-lausetta suodattamaan minkä tahansa tietyn rivin tai tiedot taulukosta. | Se ei käytä WHERE-lausetta tietueiden suodattamiseen taulukosta. |
Lupa | Meillä on oltava DELETE-oikeus käyttääksemme tätä komentoa. | Meillä on oltava ALTER-oikeus käyttääksemme tätä komentoa. |
Työskentely | Tämä komento poistaa tietueet yksitellen. | Tämä komento poistaa koko tietueet sisältävän tietosivun. |
Lukko | Se lukitsee rivin ennen poistamista. | Se lukitsee tietosivun ennen poistamista. |
Taulukon identiteetti | Tämä komento ei nollaa taulukon identiteettiä, koska se vain poistaa tiedot. | Se nollaa aina taulukon identiteetin. |
Tapahtuma | Se ylläpitää tapahtumalokia jokaisesta poistetusta tietueesta. | Se ei ylläpidä tapahtumalokeja jokaisesta poistetusta datasivusta. |
Nopeus | Sen nopeus on hidas, koska se säilytti lokin. | Sen suoritus on nopeaa, koska se poisti kokonaisia tietoja kerralla ilman tapahtumalokeja. |
Laukaista | Tämä komento voi myös aktivoida taulukossa käytetyn liipaisimen ja saada ne käynnistymään. | Tämä komento ei aktivoi taulukossa käytettyjä laukaisimia. |
Palauttaa | Sen avulla voimme palauttaa poistetut tiedot käyttämällä COMMIT- tai ROLLBACK-käskyä. | Emme voi palauttaa poistettuja tietoja tämän komennon suorittamisen jälkeen. |
Indeksoitu näkymä | Sitä voidaan käyttää indeksoitujen näkymien kanssa. | Sitä ei voi käyttää indeksoiduissa näkymissä. |
Avaruus | DELETE-käsky vie enemmän tapahtumatilaa kuin katkaisu, koska se ylläpitää lokia jokaisesta poistetusta rivistä. | TRUNCATE-käsky vie vähemmän tapahtumatilaa, koska se ylläpitää tapahtumalokia koko tietosivulle jokaisen rivin sijaan. |
Johtopäätös
Tässä artikkelissa olemme tehneet vertailun delete- ja trumpate-lauseiden välillä. Olemme tulleet siihen tulokseen, että DELETE-komentoa käytetään, kun haluamme mukauttaa tietueiden poistamista taulukosta. Ja TRUNCATE-komentoa käytetään, kun emme halua jättää taulukkoon tietueita tai tietoja, eli haluamme tyhjentää taulukon.