MYSQL – PROMIJENI, ISPUSTI, PREIMENI, MIJENI

⚡ Pametni sažetak

PROMIJENI, ISPUSTI, PREIMENI i MODIFICIRAJ su MySQL naredbe koje preoblikuju bazu podataka nakon što je već u upotrebi. Dodaju, uklanjaju, preimenuju i redefiniraju objekte poput tablica i stupaca bez odbacivanja već pohranjenih redaka.

  • 🛠️ Naredba ALTER: ALTER TABLE redefinira objekt koji već postoji, tako da aktivna shema apsorbira nove zahtjeve bez ponovne izgradnje.
  • DODAJ STUPAC: Naredba ALTER TABLE ADD COLUMN dodaje polje, a postojeći retci zadržavaju svaku vrijednost koju su već sadržavali.
  • 🗑️ DROP naredba: DROP trajno briše: bazu podataka, tablicu ili jedan stupac pomoću naredbe ALTER TABLE DROP COLUMN.
  • 🔁 Naredba PREIMENUJ: NAREDBA PREIMENUJ TABLICE mijenja samo naziv tablice i ne gube se nikakvi podaci unutar nje.
  • ✏️ PROMIJENI ključnu riječ: Naredba CHANGE preimenuje stupac i redefinira njegov tip i ograničenja u jednoj naredbi, tako da su oba imena stupaca obavezna.
  • 🧩 IZMIJENI ključnu riječ: MODIFY mijenja tip i ograničenja dok zadržavaping ime, sigurniji izbor za uređivanje samo tipa.
  • ???? NAKON ključne riječi: NAKON što novododani stupac smješta na odabranu poziciju umjesto na kraj tablice.

MySQL PROMIJENI, ISPUSTI, PREIMENI i MODIFICIRAJ

Što je naredba ALTER u MySQL?

The IZMIJENI Naredba mijenja postojeću bazu podataka, tablicu, prikaz ili drugi objekt baze podataka koji se treba promijeniti tijekom životnog ciklusa baze podataka. To je naredba koja omogućuje shemi da se razvija nakon što je već stvorena i ispunjena podacima.

Poslovni zahtjevi rijetko stoje na mjestu, a dizajn baze podataka mora se prilagođavati njima. Pretpostavimo da je dizajn Myflix baze podataka implementiran i da korisnici rade s njim, i tek tada tim shvaća da su ključne informacije izostavljene. Nitko ne želi izgubiti postojeće retke; jednostavno žele zabilježiti nove informacije uz njih.

Naredba ALTER pokriva upravo tu situaciju. Može promijeniti tip podataka polja iz niza u broj, preimenovati polje ili dodati potpuno novi stupac u tablicu, a sve to dok podaci koji su već pohranjeni u tablici ostaju netaknuti.

Nakon što je utvrđena svrha naredbe, sljedeći korak je sintaksa koja je izvršava.

MySQL ALTER sintaksa

Osnovna sintaksa koja se koristi za dodavanje stupca u tablicu koja već postoji prikazana je u nastavku.

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

OVDJE

  • “ALTER TABLE `table_name`” je naredba koja govori MySQL poslužitelj za izmjenu tablice pod nazivom `table_name`.
  • “DODAJ KOLONCU `naziv_stupca` `tip_podataka`” je naredba koja govori MySQL poslužitelj za dodavanje novog stupca pod nazivom `column_name` s tipom podataka `data_type`.

Pretpostavimo da je Myflix uveo online naplatu i plaćanja. Kako bi to podržao, u tablicu članova potrebno je dodati polje za broj kreditne kartice. Prije bilo kakve izmjene, vrijedi pogledati strukturu tablice kakva jest. Skript prikazan u nastavku to radi.

SHOW COLUMNS FROM `members`;
Polje Tip nula Ključ Zadano dodatni
članski broj int (11) NE PRI NULL automatsko_povećanje
puna_imena varchar(350) NE NULL
rod varchar(6) DA NULL
datum_rođenja podaci DA NULL
fizička adresa varchar(255) DA NULL
poštanska_adresa varchar(255) DA NULL
broj_kontakta varchar(75) DA NULL
e-mail varchar(255) DA NULL

💡 Napomena o int(11): Broj u zagradama predstavlja samo širinu prikaza. MySQL Verzija 8.0.17 ga je ukinula za cjelobrojne tipove, pa moderni poslužitelj ovaj stupac prikazuje jednostavno kao intVeličina pohrane ostaje nepromijenjena.

Skript prikazan u nastavku dodaje novo polje u tablicu članova.

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

Izvršavanje ovog skripta na myflixdb dodaje stupac pod nazivom credit_card_number u tablicu članova s ​​tipom podataka VARCHAR. Ponovno pokretanje skripte SHOW COLUMNS daje sljedeći rezultat.

Polje Tip nula Ključ Zadano dodatni
članski broj int (11) NE PRI NULL automatsko_povećanje
puna_imena varchar(350) NE NULL
rod varchar(6) DA NULL
datum_rođenja podaci DA NULL
fizička adresa varchar(255) DA NULL
poštanska_adresa varchar(255) DA NULL
broj_kontakta varchar(75) DA NULL
e-mail varchar(255) DA NULL
broj_kreditne_kartice varchar(25) DA NULL

Označeni redak potvrđuje da je broj_kreditne_kartice dodan u tablicu članova, a podaci koji se već nalaze u ostalim stupcima nisu dotaknuti dodavanjem.

Dodavanje stupca je samo pola priče. Shema također mora ukloniti objekte koji joj više nisu potrebni, što je zadatak naredbe DROP.

Što je naredba DROP u MySQL?

Naredba DROP trajno briše objekt. Koristi se za

  1. Izbrišite bazu podataka iz MySQL server.
  2. Izbrisati objekt kao što je tablica ili stupac iz baze podataka.

⚠️ Upozorenje: DROP nije poništiv. Ni objekt ni retci unutar njega ne mogu se oporaviti bez sigurnosne kopije, stoga pokrenite SELECT na cilju i prvo potvrdite sigurnosnu kopiju.

Ispustitiping stupac

U gornjem primjeru ALTER-a, stupac pod nazivom broj_kreditne_kartice dodan je u tablicu članova. Pretpostavimo da je značajka online naplate odgođena i da taj stupac treba ponovno ukloniti. Sljedeći skript to radi.

ALTER TABLE `members` DROP COLUMN `credit_card_number`;

Izvršavanje skripte briše stupac credit_card_number iz tablice članova. Ponovni popis stupaca potvrđuje rezultat.

SHOW COLUMNS FROM `members`;
Polje Tip nula Ključ Zadano dodatni
članski broj int (11) NE PRI NULL automatsko_povećanje
puna_imena varchar(350) NE NULL
rod varchar(6) DA NULL
datum_rođenja podaci DA NULL
fizička adresa varchar(255) DA NULL
poštanska_adresa varchar(255) DA NULL
broj_kontakta varchar(75) DA NULL
e-mail varchar(255) DA NULL

Broj kreditne kartice je nestao s popisa polja.

ISPUSTI STOL

Sintaksa za brisanje cijele tablice iz baze podataka je sljedeća.

DROP TABLE `sample_table`;

Primijenjeno na stvarni objekt, izjava izgleda ovako.

DROP TABLE `categories_archive`;

Izvršavanjem se iz baze podataka briše tablica pod nazivom `categories_archive` i svaki redak unutar nje.

ISPUSTI BAZU PODATAKA

Ista ključna riječ uklanja cijelu shemu. Dodavanje IF EXISTS potiskuje grešku koja MySQL podiže kada je meta već nestala, što je korisno unutar skripti koje se izvršavaju više puta.

DROP DATABASE IF EXISTS `myflixdb_backup`;

Uklanjanje objekta je konačno. Kada sam objekt treba preživjeti, a samo mu je ime pogrešno, naredba RENAME je ispravan alat.

Što je naredba RENAME u MySQL?

Naredba RENAME mijenja naziv postojećeg objekta baze podataka, kao što je tablica ili stupac, u novi naziv. Preimenovanje tablice ne uzrokuje gubitak podataka koji se u njoj nalaze.

Naredba ima sljedeću osnovnu sintaksu.

RENAME TABLE `current_table_name` TO `new_table_name`;

Za preimenovanje tablice movierentals u movie_rentals koristi se donji skript.

RENAME TABLE `movierentals` TO `movie_rentals`;

Izvršavanjem se tablica `movierentals` preimenuje u `movie_rentals`. Budući da je preimenovanje samo promjena oznake, ista naredba obrnuto vraća izvorni naziv.

RENAME TABLE `movie_rentals` TO `movierentals`;

RENAME TABLE obrađuje naziv tablice. Preimenovanje kolona, a promjena onoga što sadrži, djelo je ključne riječi CHANGE.

PROMIJENI ključnu riječ

Ključna riječ CHANGE vam omogućuje da

  1. Promjena naziva stupca
  2. Promijenite tip podataka stupca
  3. Promijenite ograničenja stupaca

Razmotrimo primjer. Polje full_names u tablici članova je tipa podataka varchar širine 350, što potvrđuje skript u nastavku.

SHOW COLUMNS FROM `members`;
Polje Tip nula Ključ Zadano dodatni
članski broj int (11) NE PRI NULL automatsko_povećanje
puna_imena varchar(350) NE NULL
rod varchar(6) DA NULL
datum_rođenja podaci DA NULL
fizička adresa varchar(255) DA NULL
poštanska_adresa varchar(255) DA NULL
broj_kontakta varchar(75) DA NULL
e-mail varchar(255) DA NULL

Pretpostavimo da je zahtjev

  1. Promijenite naziv polja iz "puna_imena" u "puno_ime"
  2. Promijenite ga u tip podataka char širine 250.
  3. Dodajte NOT NULL ograničenje

Sve tri izmjene se provode jednom naredbom CHANGE.

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

Izvršavanje na myflixdb, a zatim pokretanje skripte SHOW COLUMNS daje sljedeći rezultat.

Polje Tip nula Ključ Zadano dodatni
članski broj int (11) NE PRI NULL automatsko_povećanje
puno ime karakter(250) NE NULL
rod varchar(6) DA NULL
datum_rođenja podaci DA NULL
fizička adresa varchar(255) DA NULL
poštanska_adresa varchar(255) DA NULL
broj_kontakta varchar(75) DA NULL
e-mail varchar(255) DA NULL

Stupac se sada zove puno ime, sadrži char(250) i odbacuje NULL vrijednosti.

IZMIJENI ključnu riječ

Ključna riječ MODIFY vam omogućuje da

  1. Izmijenite tip podataka stupca
  2. Izmijenite ograničenja stupaca

U gornjem primjeru CHANGE, naziv polja morao se navesti dva puta, iako je preimenovanje bilo samo dio cilja. Izostavljanje naziva polja iz naredbe CHANGE generira grešku. Kada je potrebno prilagoditi samo tip podataka i ograničenja, a naziv treba ostati kakav jest, MODIFY obavlja posao s jednim spominjanjem stupca.

Skripta u nastavku mijenja širinu polja „puno ime“ s 250 na 50.

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

Izvršavanje na myflixdb, a zatim pokretanje skripte SHOW COLUMNS daje rezultat prikazan dolje.

Polje Tip nula Ključ Zadano dodatni
članski broj int (11) NE PRI NULL automatsko_povećanje
puno ime karakter(50) NE NULL
rod varchar(6) DA NULL
datum_rođenja podaci DA NULL
fizička adresa varchar(255) DA NULL
poštanska_adresa varchar(255) DA NULL
broj_kontakta varchar(75) DA NULL
e-mail varchar(255) DA NULL

⚠️ Upozorenje: Sužavanje stupca skraćuje podatke koji više ne stanu. Bilo koji naziv dulji od 50 znakova skraćuje se ovom naredbom, stoga provjerite najdužu postojeću vrijednost s SELECT upit prije smanjivanja polja.

PROMIJENI vs. IZMJENI vs. PREIMENI STUPAC

Tri ključne riječi se preklapaju, a odabir pogrešne je najčešći izvor pogrešaka u ovom području. Tablica u nastavku ih prikazuje jednu pored druge.

Riječ Preimenuje stupac Mijenja vrstu i ograničenja Potrebno je staro ime Tipična upotreba
PROMJENA Da Da Da, plus novo ime Preimenuj i redefiniraj u jednoj izjavi
IZMJENITI Ne Da Ime dano jednom Proširivanje, sužavanje ili ponovno tipkanje stupca
PREIMENUJ STUPAC Da Ne Da, plus novo ime Samo preimenuj, iz MySQL 8.0 nadalje

MySQL Verzija 8.0 dodala je četvrtu opciju za najjednostavniji slučaj, preimenovanje bez ikakve redefinicije.

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

Tip i naziv su određeni. Preostalo je pitanje gdje se novi stupac nalazi u tablici, što kontrolira ključna riječ AFTER.

NAKON ključne riječi

Prema zadanim postavkama, stupac dodan naredbom ALTER TABLE završava na kraju tablice. Da biste ga umjesto toga postavili na određenu poziciju, naredba ALTER kombinira se s ključnom riječi AFTER.

Skripta u nastavku dodaje "date_of_registration" odmah nakon date_of_birth u tablici članova.

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

Izvršavanje na myflixdb, a zatim pokretanje skripte SHOW COLUMNS daje rezultat prikazan dolje.

Polje Tip nula Ključ Zadano dodatni
članski broj int (11) NE PRI NULL automatsko_povećanje
puno ime karakter(50) NE NULL
rod varchar(6) DA NULL
datum_rođenja podaci DA NULL
datum_registracije podaci DA NULL
fizička adresa varchar(255) DA NULL
poštanska_adresa varchar(255) DA NULL
broj_kontakta varchar(75) DA NULL
e-mail varchar(255) DA NULL

Istaknuti redak je stupac dodan nakon datuma_rođenja. Ključna riječ FIRST funkcionira na isti način i pomiče novi stupac na sam početak tablice.

Pitanja i odgovori

Ne. DDL naredbe poput ALTER, DROP i RENAME implicitno se potvrđuju u MySQL, tako da ih otvorena transakcija ne može poništiti. Vraćanje iz sigurnosne kopije jedini je put natrag.

Ovisi o promjeni. Mnoge InnoDB izmjene izvode se online i dopuštaju istovremeno čitanje i pisanje, dok druge kopiraju cijelu tablicu i blokiraju pisanje. Dodajte klauzule ALGORITHM i LOCK kako biste naveli što ćete prihvatiti.

DROP uklanja sam objekt. TRUNCATE prazni tablicu, ali zadržava njezinu strukturu. DELETE uklanja odabrane retke i može se filtrirati pomoću klauzule WHERE.

Obično da. AI asistenti ugrađeni u klijente kao što su MySQL Radna tezga pretvorite zahtjev poput "dodaj stupac s datumom koji može imati vrijednost null nakon datuma_rođenja" u valjanu sintaksu. RevPregledajte generiranu naredbu u odnosu na aktivnu shemu prije pokretanja.

Samo djelomično. Alati za pregled umjetne inteligencije označavaju očite rizike, poput izostavljenog stupca koji je i dalje imenovan u upitu ili suženog tipa koji skraćuje podatke. Ne mogu vidjeti svakog pozivatelja, pa je pripremno pokretanje i dalje potrebno.

Sažmite ovu objavu uz: