meidän ei pitäisi lopettaa tässä, DELETEn ja TRUNCATEn välillä on monia muita eroja. Keskustelkaa niistä alla olevan vertailukaavion avulla.
Vertailukaavio
Vertailun peruste | POISTAA | KATKAISTA |
---|---|---|
perustiedot | Voit määrittää poistettavan sarakkeen. | Se poistaa kaikki sarakkeet suhteessa. |
Kieli | DELETE on Data Manipulation Language -komento. | TRUNCATE on Data Definition Language -komento. |
MISSÄ | DELETE-komennolla voi olla WHERE-lauseke. | TRUNCATE-komennolla ei ole WHERE-lauseketta. |
Laukaista | DELETE-komento aktivoi pöydälle asetetun liipaisimen ja aiheuttaa niiden tulipalon. | TRUNCATE-komento ei aktivoi laukaisimia. |
poisto | DELETE-komento poistaa sekvenssit yksitellen. | TRUNCATE poistaa koko tietosivun, joka sisältää numerot. |
Lukko | DELETE-komento lukitsee rivin / numeron ennen sen poistamista. | TRUNCATE-komennon lukitustietosivu ennen taulukon tietojen poistamista. |
Nopeus | DELETE-komento toimii hitaammin kuin TRUNCATE. | TRUNCATE on nopeampi kuin DELETE. |
liiketoimi | DELETE tallentaa tapahtumalokin kustakin poistetusta numerosta. | TRUNCATE tallentaa tapahtumalokin kustakin poistetusta tietosivusta. |
Palauttaa | DELETE-komentoa voi seurata joko COMMIT tai ROLLBACK. | TRUNCATE-komento ei voi olla ROLLBACK. |
Määritelmä DELETE
DELETE on DML ( Data Manipulation Language ) -komento. DELETE-komennon tehtävänä on poistaa tai poistaa sarakkeet taulukosta tai suhteesta. DELETE: n avulla pystymme poistamaan koko tuplen, jolloin kaikki sen attribuuttiarvot ovat suhteessa. DELETE ei poista tietyn attribuutin arvoa.
Voit suodattaa poistettavat sarakkeet taulukosta WHERE- lausekkeen avulla. Jos määrität WHERE-lausekkeen DELETE-lausunnossa, se poistaa vain WHERE-lausekkeen ehtoja täyttävät sekvenssit. Mutta jos et määritä WHERE-lauseketta DELETE-lauseessa, se oletusarvoisesti poistaa tai poistaa kaikki suhdeluvut. WHERE-lauseessa DELETE-lauseessa voi olla sisäkkäisiä SELECT-FROM-WHERE- lauseita.
DELETE-komennon syntaksi on seuraava:
DELETE FROM table_name WHERE [ conditon ];
DELETE-komento toimii vain yhdessä suhteessa tai taulukossa kerrallaan. Jos haluat poistaa tuple eri suhteista, sinun on asetettava jokaiselle eri DELETE-komento. Mutta tuplen poistaminen yhdestä suhteesta voi rikkoa tietokannan viitteellistä eheyttä, joka voidaan ratkaista liipaisimien avulla. Jos DELETE-komento rikkoo viitteellistä eheyttä, kaikki referenssikäynnistimet (jos ne on määritetty) aktivoituvat, jotka etenevät poistotoiminnon eri suhdeluvuille, jotka viittaavat poistettuihin tupleihin.
DELETE-komento lukitsee ensin poistettavan rivin tai sekvenssin ja poistaa sen jälkeen kerroksen yksi kerrallaan . Siksi se vaatii enemmän lukkoja ja resursseja, jotka tekevät siitä hitaamman . Voit tehdä DELETE-lauseen tekemät muutokset pysyviksi käyttämällä COMMIT-toimintoa, tai voit nollata tietokannan ROLLBACK-toiminnolla .
Määritelmä TRUNCATE
TRUNCATE on samanlainen kuin DELETE-komento, koska se myös poistaa sarakkeet suhteessa. Ero on siinä, että se poistaa kokonaiset sarjat suhteesta. Kun TRUNCATE-komento suoritetaan, koko taulukon tiedot poistetaan, jokainen sekvenssi yhdessä kaikkien sen määritteiden arvojen kanssa poistuu taulukosta. Taulukon rakenne on kuitenkin edelleen tietokannassa. Voit siis syöttää uudestaan tupleja taulukkoon. TRUNCATE on Data Definition Language -komento.
TRUNCATE-käskyn syntaksi on seuraava:
TRUNCATE TABLE table_name ;
Kuten DELETE, TRUNCATE ei toimi rivikohtaisesti taulukon tiedoissa. Sen sijaan se toimii tietosivuilla, jotka tallentavat taulukon tiedot. Nyt kun TRUNCATE poistaa tietosivuja, sen on hankittava tietosivujen lukko tupleiden sijaan. Näin ollen se johtaa vähemmän vaatimuksiin lukkoista ja resurssista, joka tekee TRUNCATEn nopeammaksi kuin DELETE.
TRUNCATE-komennon suorittaminen ei aktivoi mitään laukaisimia, koska se ei käytä dataa riviltä. TRUNCATEa ei voi suorittaa, jos taulukkoa viittaa jokin vieras avain . Kun TRUNCATE-komento poistaa taulukon tiedot, sitä ei voi koskaan palauttaa takaisin.
Tärkeimmät erot DELETE: n ja TRUNCATE: n välillä SQL: ssä
- Tärkein ero DELETE: n ja TRUNCATE: n välillä on, että DELETE-toiminnon avulla voit poistaa määritetyn tuple-arvon. Mutta TRUNCATE: n käyttö poistaa kokonaiset sarjat suhteesta.
- DELETE on DML-komento, kun taas TRUNCATE on DDL-komento.
- DELETE käyttää WHERE-lauseketta suodattaa poistettavat tietueet / sarjat. TRUNCATE ei kuitenkaan vaadi WHERE-lauseketta, koska se poistaa kaikki numerot, joten tupleja ei tarvitse suodattaa.
- DELETE aktivoi taulukkoihin sovellettavat viittaukset. Mutta TRUNCATE ei sytytä mitään laukaisimia pöydälle.
- DELETE-komento poistaa sarakkeet yksi kerrallaan taulukosta, ne käsitellään. TRUNCATE ei kuitenkaan toimi tupleissa yksi kerrallaan. Sen sijaan TRUNCATE toimii tietosivulla, joka tallentaa taulukon tiedot.
- DELETE hankkii salvan lukkoon ennen sen poistamista, kun taas TRUNCATE hankkii lukituksen tietosivulle ennen datasivun poistamista.
- TRUNCATE on nopeampi kuin DELETE-komento.
- DELETE tallentaa tapahtumalokin jokaiselle sekvenssille, kun taas TRUNCATE tallentaa tapahtumalokin jokaiselle tietosivulle.
- Kun poistat tiedot TRUNCATE-ohjelmalla, sitä ei voi palauttaa takaisin, kun taas voit palauttaa tiedot, jotka olet poistanut DELETE-komennolla.
johtopäätös:
Jos haluat muokata tietueiden poistamista taulukosta, voit käyttää DELETE-komentoa. Jos haluat tyhjentää taulukon eli et halua jättää tietoja taulukosta, käytä TRUNCATE-komentoa.