MYSQL – MUUTA, PUDOTA, NIMEÄ UUDELLEEN, MUOKKAA

⚡ Älykäs yhteenveto

ALTER, DROP, RENAME ja MODIFY ovat MySQL komentoja, jotka muokkaavat tietokantaa sen jo käytön jälkeen. Ne lisäävät, poistavat, nimeävät uudelleen ja määrittelevät uudelleen objekteja, kuten taulukoita ja sarakkeita, hylkäämättä jo tallennettuja rivejä.

  • 🛠️ ALTER-komento: ALTER TABLE määrittelee uudelleen jo olemassa olevan objektin, joten live-skeema ottaa vastaan ​​uudet vaatimukset ilman uudelleenrakennusta.
  • LISÄÄ SARAKE: ALTER TABLE ADD COLUMN lisää kentän, ja olemassa olevat rivit säilyttävät kaikki niillä jo olevat arvot.
  • 🗑️ DROP-komento: DROP poistaa pysyvästi: tietokannan, taulukon tai yksittäisen sarakkeen ALTER TABLE DROP COLUMN -komennolla.
  • 🔁 RENAME-komento: RENAME TABLE muuttaa vain taulukon nimen, eikä sen sisällä olevia tietoja menetetä.
  • ✏️ MUUTOS Avainsana: CHANGE nimeää sarakkeen uudelleen ja määrittelee sen tyypin ja rajoitteet uudelleen yhdellä lausekkeella, joten molempien sarakenimien nimet ovat pakollisia.
  • 🧩 MUOKKAA avainsanaa: MODIFY muuttaa tyyppiä ja rajoitteita samalla kun keepping nimi, turvallisempi vaihtoehto pelkkään tyyppiin muokkaamiseen.
  • 📍 JÄLKEEN Avainsana: AFTER sijoittaa lisätyn sarakkeen valittuun kohtaan taulukon lopun sijaan.

MySQL MUUTA, PUDOTA, NIMEÄ UUDELLEEN ja MODIFY

Mikä on ALTER-komento MySQL?

MUUTTAA Komento muokkaa olemassa olevaa tietokantaa, taulukkoa, näkymää tai muuta tietokantaobjektia, jonka on muututtava tietokannan elinkaaren aikana. Se on komento, joka antaa skeeman kehittyä sen luomisen ja tiedoilla täytettyä.

Liiketoimintavaatimukset harvoin pysyvät paikoillaan, ja tietokannan suunnittelun on muututtava niiden mukana. Oletetaan, että Myflix-tietokannan suunnittelu on toteutettu ja käyttäjät työskentelevät sen parissa, ja vasta silloin tiimi tajuaa, että tärkeitä tietoja on jätetty pois. Kukaan ei halua menettää olemassa olevia rivejä; he haluavat vain tallentaa uudet tiedot niiden rinnalle.

ALTER kattaa juuri tämän tilanteen. Se voi muuttaa kentän tietotyypin merkkijonosta numeroksi, nimetä kentän uudelleen tai lisätä taulukkoon kokonaan uuden sarakkeen, samalla kun taulukkoon jo tallennetut tiedot pysyvät ennallaan.

Kun komennon tarkoitus on määritetty, seuraava vaihe on sen suorittavan syntaksin luominen.

MySQL ALTER-syntaksi

Sarakkeen lisäämiseen jo olemassa olevaan taulukkoon käytetty perussyntaksi on esitetty alla.

ALTER TABLE `table_name` ADD COLUMN `column_name` `data_type`;

TÄÄLTÄ

  • "ALTER TABLE `table_name"" on komento, joka kertoo MySQL palvelin muuttaa taulukkoa nimeltä "taulukon_nimi".
  • "LISÄÄ SARAKE "sarakkeen_nimi" "data_tyyppi"" on komento, joka kertoo MySQL palvelimelle uuden sarakkeen nimeltä `sarakkeen_nimi`, jonka tietotyyppi on `tietotyyppi`.

Oletetaan, että Myflix on ottanut käyttöön verkkolaskutuksen ja -maksut. Tämän tueksi jäsentaulukkoon on lisättävä kenttä luottokortin numerolle. Ennen muutosten tekemistä kannattaa tarkastella taulukon nykyistä rakennetta. Alla oleva skripti tekee tämän.

SHOW COLUMNS FROM `members`;
Kenttä Tyyppi Null avain oletusarvo Lisää
jäsennumero int (11) EI PRI NULL automaattinen_lisäys
full_names varchar (350) EI NULL
sukupuoli varchar (6) KYLLÄ NULL
syntymäaika data KYLLÄ NULL
fyysinen osoite varchar (255) KYLLÄ NULL
postiosoite varchar (255) KYLLÄ NULL
yhteyshenkilön_numero varchar (75) KYLLÄ NULL
email varchar (255) KYLLÄ NULL

💡 Huomautus int(11):stä: Suluissa oleva luku on vain näytön leveys. MySQL Versiossa 8.0.17 se vanhentui kokonaislukutyypeille, joten nykyaikainen palvelin raportoi tämän sarakkeen yksinkertaisesti muodossa intTallennustilan koko ei muutu.

Alla oleva skripti lisää uuden kentän jäsenet-taulukkoon.

ALTER TABLE `members` ADD COLUMN `credit_card_number` VARCHAR(25);

Tämän komentosarjan suorittaminen myflixdb-tiedostoa vastaan ​​lisää members-taulukkoon credit_card_number-nimisen sarakkeen, jonka tietotyyppi on VARCHAR. SHOW COLUMNS -komentosarjan suorittaminen uudelleen antaa seuraavan tuloksen.

Kenttä Tyyppi Null avain oletusarvo Lisää
jäsennumero int (11) EI PRI NULL automaattinen_lisäys
full_names varchar (350) EI NULL
sukupuoli varchar (6) KYLLÄ NULL
syntymäaika data KYLLÄ NULL
fyysinen osoite varchar (255) KYLLÄ NULL
postiosoite varchar (255) KYLLÄ NULL
yhteyshenkilön_numero varchar (75) KYLLÄ NULL
email varchar (255) KYLLÄ NULL
luottokortin numero varchar (25) KYLLÄ NULL

Korostettu rivi vahvistaa, että luottokortin_numero on lisätty jäsenet-taulukkoon, eikä lisäys koske muissa sarakkeissa jo olevia tietoja.

Sarakkeen lisääminen on vasta puolet tarinasta. Skeeman on myös poistettava objekteja, joita se ei enää tarvitse, mikä on DROP-komennon tehtävä.

Mikä on DROP-komento? MySQL?

DROP-komento poistaa objektin pysyvästi. Sitä käytetään

  1. Poista tietokanta MySQL palvelin.
  2. Poista tietokannasta objekti, kuten taulukko tai sarake.

⚠️ Varoitus: DROP-operaatiota ei voi peruuttaa. Objektia tai sen sisällä olevia rivejä ei voida palauttaa ilman varmuuskopiointia, joten suorita SELECT-komento kohdetta vastaan ​​ja vahvista varmuuskopiointi ensin.

Pudotaping sarake

Yllä olevassa ALTER-esimerkissä jäsentaulukkoon lisättiin sarake nimeltä credit_card_number. Oletetaan, että verkkolaskutustoiminto on lykätty ja kyseinen sarake tulisi poistaa. Seuraava komentosarja tekee sen.

ALTER TABLE `members` DROP COLUMN `credit_card_number`;

Skriptin suorittaminen poistaa credit_card_number-sarakkeen jäsentaulukosta. Sarakkeiden uudelleenlistaaminen vahvistaa tuloksen.

SHOW COLUMNS FROM `members`;
Kenttä Tyyppi Null avain oletusarvo Lisää
jäsennumero int (11) EI PRI NULL automaattinen_lisäys
full_names varchar (350) EI NULL
sukupuoli varchar (6) KYLLÄ NULL
syntymäaika data KYLLÄ NULL
fyysinen osoite varchar (255) KYLLÄ NULL
postiosoite varchar (255) KYLLÄ NULL
yhteyshenkilön_numero varchar (75) KYLLÄ NULL
email varchar (255) KYLLÄ NULL

Luottokortin numero on poistettu kenttäluettelosta.

PUDOTA PÖYTÄ

Koko taulukon poistaminen tietokannasta tapahtuu seuraavasti.

DROP TABLE `sample_table`;

Todelliseen objektiin sovellettuna lause näyttää tältä.

DROP TABLE `categories_archive`;

Sen suorittaminen poistaa `categories_archive`-nimisen taulukon ja kaikki sen sisällä olevat rivit tietokannasta.

PUDOTA TIETOKANTA

Sama avainsana poistaa koko skeeman. IF EXISTS -merkin lisääminen poistaa virheen, joka MySQL nostaa arvoa, kun kohde on jo poissa, mikä on hyödyllistä useammin kuin kerran suoritettavien skriptien sisällä.

DROP DATABASE IF EXISTS `myflixdb_backup`;

Objektin poistaminen on lopullista. Kun objektin itsensä on tarkoitus säilyä ja vain sen nimi on väärin, RENAME-komento on oikea työkalu.

Mikä on RENAME-komento? MySQL?

RENAME-komento muuttaa olemassa olevan tietokantaobjektin, kuten taulukon tai sarakkeen, nimen uuteen nimeen. Taulukon uudelleennimeäminen ei aiheuta sen sisältämien tietojen menetystä.

Komennon perussyntaksi on seuraava.

RENAME TABLE `current_table_name` TO `new_table_name`;

Movierentals-taulukon nimeämiseksi uudelleen muotoon movie_rentals käytetään alla olevaa komentosarjaa.

RENAME TABLE `movierentals` TO `movie_rentals`;

Sen suorittaminen nimeää `movierentals`-taulukon uudelleen muotoon `movie_rentals`. Koska uudelleennimeäminen on vain taulukon tunnisteen muutos, sama lause käänteisesti palauttaa alkuperäisen nimen.

RENAME TABLE `movie_rentals` TO `movierentals`;

RENAME TABLE käsittelee taulukon nimen. Taulukon uudelleennimeäminen sarakeja sen sisällön muuttaminen on CHANGE-avainsanan työtä.

MUUTA avainsanaa

CHANGE-avainsanan avulla voit

  1. Muuta sarakkeen nimeä
  2. Muuta sarakkeen tietotyyppiä
  3. Muuta sarakkeen rajoituksia

Tarkastellaan esimerkkiä. Members-taulukon full_names-kenttä on varchar-tietotyyppiä ja leveydeltään 350, kuten alla oleva skripti vahvistaa.

SHOW COLUMNS FROM `members`;
Kenttä Tyyppi Null avain oletusarvo Lisää
jäsennumero int (11) EI PRI NULL automaattinen_lisäys
full_names varchar (350) EI NULL
sukupuoli varchar (6) KYLLÄ NULL
syntymäaika data KYLLÄ NULL
fyysinen osoite varchar (255) KYLLÄ NULL
postiosoite varchar (255) KYLLÄ NULL
yhteyshenkilön_numero varchar (75) KYLLÄ NULL
email varchar (255) KYLLÄ NULL

Oletetaan, että vaatimus on

  1. Muuta kentän nimi muodosta ”full_names” muotoon ”fullname”
  2. Muuta se char-tietotyypiksi, jonka leveys on 250
  3. Lisää NOT NULL -rajoitus

Kaikki kolme muokkausta suoritetaan yhdellä CHANGE-komennolla.

ALTER TABLE `members` CHANGE COLUMN `full_names` `fullname` char(250) NOT NULL;

Sen suorittaminen myflixdb-tiedostoa vastaan ​​ja sitten SHOW COLUMNS -komentosarjan suorittaminen antaa seuraavan tuloksen.

Kenttä Tyyppi Null avain oletusarvo Lisää
jäsennumero int (11) EI PRI NULL automaattinen_lisäys
kokonimi merkki (250) EI NULL
sukupuoli varchar (6) KYLLÄ NULL
syntymäaika data KYLLÄ NULL
fyysinen osoite varchar (255) KYLLÄ NULL
postiosoite varchar (255) KYLLÄ NULL
yhteyshenkilön_numero varchar (75) KYLLÄ NULL
email varchar (255) KYLLÄ NULL

Sarakkeen nimi on nyt fullname, se sisältää char(250)-merkinnän ja hylkää NULL-arvot.

MUOKKAA avainsanaa

MODIFY-avainsanan avulla voit

  1. Muokkaa sarakkeen tietotyyppiä
  2. Muokkaa sarakkeen rajoitteita

Yllä olevassa CHANGE-esimerkissä kentän nimi piti antaa kahdesti, vaikka uudelleennimeäminen oli vain osa tavoitetta. Kentän nimen poisjättäminen CHANGE-lausekkeesta aiheuttaa virheen. Kun vain tietotyyppiä ja rajoitteita tarvitsee muuttaa ja nimen halutaan pysyvän ennallaan, MODIFY hoitaa homman mainitsemalla sarake kerran.

Alla oleva skripti muuttaa ”kokonimi”-kentän leveyden 250:stä 50:een.

ALTER TABLE `members` MODIFY `fullname` char(50) NOT NULL;

Sen suorittaminen myflixdb-tiedostoa vastaan ​​ja sitten SHOW COLUMNS -skriptin suorittaminen antaa alla olevan tuloksen.

Kenttä Tyyppi Null avain oletusarvo Lisää
jäsennumero int (11) EI PRI NULL automaattinen_lisäys
kokonimi merkki (50) EI NULL
sukupuoli varchar (6) KYLLÄ NULL
syntymäaika data KYLLÄ NULL
fyysinen osoite varchar (255) KYLLÄ NULL
postiosoite varchar (255) KYLLÄ NULL
yhteyshenkilön_numero varchar (75) KYLLÄ NULL
email varchar (255) KYLLÄ NULL

⚠️ Varoitus: Sarakkeen rajaaminen katkaisee tiedot, jotka eivät enää mahdu. Tämä lauseke lyhentää kaikki yli 50 merkkiä pitkät nimet, joten tarkista pisin olemassa oleva arvo käyttämällä VALITSE kysely ennen kentän pienentämistä.

MUUTA vs. MUOKKAA vs. NIMEÄ SARAKKE UUDELLEEN

Nämä kolme avainsanaa ovat päällekkäisiä, ja väärän avainsanan valitseminen on yleisin virheiden lähde tällä alueella. Alla olevassa taulukossa ne on asetettu vierekkäin.

avainsana Nimeää sarakkeen uudelleen Muuttaa tyyppiä ja rajoituksia Vanha nimi vaaditaan Tyypillinen käyttö
MUUTOS Kyllä Kyllä Kyllä, ja uusi nimi Nimeä uudelleen ja määritä uudelleen yhdellä lausekkeella
MUUTTAA Ei Kyllä Kerran annettu nimi Levennä, kavenna tai kirjoita sarake uudelleen
NIMEÄ SARAKKE UUDELLEEN Kyllä Ei Kyllä, ja uusi nimi Vain uudelleennimeäminen, alkaen MySQL 8.0 eteenpäin

MySQL Versiossa 8.0 lisättiin neljäs vaihtoehto yksinkertaisinta tapausta varten, uudelleennimeäminen ilman uudelleenmäärittelyä.

ALTER TABLE `members` RENAME COLUMN `fullname` TO `full_name`;

Tyyppi ja nimi on määritelty. Jäljelle jäävä kysymys on, mihin uusi sarake sijoitetaan taulukossa, mitä AFTER-avainsana ohjaa.

Avainsanan JÄLKEEN

Oletusarvoisesti ALTER TABLE -komennolla lisätty sarake sijoittuu taulukon loppuun. Jos haluat sijoittaa sen tiettyyn kohtaan, ALTER-komento yhdistetään AFTER-avainsanaan.

Alla oleva komentosarja lisää ”date_of_registration”-merkinnän suoraan date_of_birth-merkinnän jälkeen jäsentaulukkoon.

ALTER TABLE `members` ADD `date_of_registration` date NULL AFTER `date_of_birth`;

Sen suorittaminen myflixdb-tiedostoa vastaan ​​ja sitten SHOW COLUMNS -skriptin suorittaminen antaa alla olevan tuloksen.

Kenttä Tyyppi Null avain oletusarvo Lisää
jäsennumero int (11) EI PRI NULL automaattinen_lisäys
kokonimi merkki (50) EI NULL
sukupuoli varchar (6) KYLLÄ NULL
syntymäaika data KYLLÄ NULL
rekisteröintipäivämäärä data KYLLÄ NULL
fyysinen osoite varchar (255) KYLLÄ NULL
postiosoite varchar (255) KYLLÄ NULL
yhteyshenkilön_numero varchar (75) KYLLÄ NULL
email varchar (255) KYLLÄ NULL

Korostettu rivi on syntymäajan (date_of_birth) jälkeen lisätty sarake. Avainsana FIRST toimii samalla tavalla ja siirtää uuden sarakkeen taulukon aivan alkuun.

UKK

Ei. DDL-lausekkeet, kuten ALTER, DROP ja RENAME, committuvat implisiittisesti MySQL, joten avoin tapahtuma ei voi perua niitä. Palaaminen varmuuskopiosta on ainoa tie takaisin.

Se riippuu muutoksesta. Monet InnoDB-muutokset suoritetaan verkossa ja sallivat samanaikaiset lukemiset ja kirjoittamiset, kun taas toiset kopioivat koko taulukon ja estävät kirjoittamisen. Lisää ALGORITHM- ja LOCK-lausekkeet ilmoittaaksesi, mitä hyväksyt.

DROP poistaa itse objektin. TRUNCATE tyhjentää taulukon, mutta säilyttää sen rakenteen. POISTA poistaa valitut rivit ja niitä voidaan suodattaa WHERE-lausekkeella.

Yleensä kyllä. Asiakasohjelmiin sisäänrakennetut tekoälyavustajat, kuten MySQL Työpöytä Muunna pyyntö, kuten ”lisää null-arvoinen päivämääräsarake syntymäajan_jälkeen”, kelvolliseksi syntaksiksi. RevVertaile luotua lauseketta live-skeemaa vasten ennen sen suorittamista.

Vain osittain. Tekoälyn tarkistustyökalut merkitsevät ilmeisiä riskejä, kuten kyselyssä edelleen nimetyn pois jätetyn sarakkeen tai dataa katkaisevan rajatun tyypin. Ne eivät näe kaikkia kutsujia, joten testiajo on edelleen tarpeen.

Tiivistä tämä viesti seuraavasti: