MySQL on maailman suosituin avoimen lähdekoodin tietokanta, joka tunnetaan nopeudestaan ja luotettavuudestaan. Tässä artikkelissa tarkastellaan, miten poistaa kaikki tiedot MySQL-tietokantataulukosta ja miten se vaikuttaa auto incremental kentät.
Poista ja katkaise
on kaksi tapaa poistaa kaikki tiedot MySQL-tietokantataulukosta.
TRUNCATE TABLE tablename;
Tämä poistaa kaikki tiedot taulukosta hyvin nopeasti. MySQL: ssä taulukko todella pudotetaan ja luodaan uudelleen, joten kyselyn nopeus. Palautettujen MyISAM-taulukoiden poistettujen rivien määrä on nolla; INNODB: lle se palauttaa poistetun todellisen määrän.
DELETE FROM tablename;
tämäkin poistaa kaikki taulukon tiedot, mutta ei ole yhtä nopea kuin ”TYPISTETAULUKON” menetelmä. MySQL: ssä = 4.0 poistettujen rivien määrä palautetaan; MySQL 3.23: ssa palautettujen rivien määrä on aina nolla.
MyISAM-taulukoiden automaattiset Lisäyssarakkeet
Jos sinulla on MyISAM-taulukossasi automaattinen perusavainsarake, tulos on hieman erilainen riippuen käyttämästäsi poistotavasta. Kun käytetään ”TYPISTYSTAULUKKOA” – menetelmää, automaattinen inkrement-siemenarvo nollataan takaisin arvoon 1. Kun käytetään” DELETE FROM ” – menetelmää, automaattisen lisäyksen siemen jätetään entiselleen (esim.jos viimeisen lisätyn tietueen automaattinen kasvatuskenttä oli 123, seuraava lisätyn tietueen arvo on 124).
huomaa, että tämä pätee MySQL: n = 4.0; lukemastani MySQL 3.23: n TYPISTYSSIVULTA toimii aivan kuten DELETE, mikä tarkoittaisi, että automaattinen inkrementti ei Nollaa. Minulla ei ole tällä hetkellä 3.23-tietokantaa, joka on perustettu testaamaan sitä, joten en voi vahvistaa tätä.
InnoDB-taulukoiden automaattiset Korotussarakkeet
INNODB-taulukoiden osalta automaattista lisäyksikenttää ei nollata riippumatta siitä, käytetäänkö ”TYPISTYSTAULUKKOA” vai ”poisteta” – menetelmiä. Jos olet lisännyt 5 tietuetta uuteen taulukkoon, sitten poistanut kaikki tietueet ja lisännyt toisen tietueen, kentän arvo olisi 6 riippumatta siitä, mitä menetelmää käytit.
päivitys 17.2.2009: kirjoitin alun perin tämän postauksen, kun MySQL 4.0 oli nykyinen versio. Olen juuri testannut edellä nyt INNODB-taulukossa käyttäen MySQL 5.0 ja käyttämällä katkaistu ei Nollaa automaattinen lisäys kentän takaisin oletuksena. Joten joko käytös muuttui jossain vaiheessa tai olin väärässä tehdessäni yllä olevan lausunnon.
Haluatko varmasti poistaa kaikki tiedot?
ennen kuin poistat kaikki tiedot tietokannasta, sinun tulee varmistaa, että todella aiot poistaa kaikki tiedot. Se usein maksaa ensin ” valitse * alkaen tablename ”tai” valitse COUNT(*) alkaen tablename ” ennen kuin teet niin tarkistaa, että se todella on turvallista poistaa kaikki tiedot. Ehkä todella haluat tehdä jotain ”DELETE from tablename WHERE foo =’ bar ’” sijaan.