MYSQL – ALTER, DROP, RENAME, MODIFY
Co je příkaz ALTER?
Jak přísloví praví Změna je jediná konstanta
S časem se mění i obchodní požadavky. Jak se mění obchodní požadavky, musí se měnit i návrhy databází.
MySQL poskytuje ALTER funkce, která nám pomáhá začlenit změny do již existujícího návrhu databáze.
Příkaz alter se používá k úpravě existující databáze, tabulky, pohledu nebo jiných databázových objektů, které mohou vyžadovat změnu během životního cyklu databáze.
Předpokládejme, že jsme dokončili návrh naší databáze a byl implementován. Uživatelé naší databáze ji používají a pak si uvědomí, že některé důležité informace byly ve fázi návrhu vynechány. Nechtějí ztratit stávající data, ale chtějí pouze začlenit nové informace. Příkaz alter se v takových situacích hodí. Můžeme použít příkaz alter ke změně datového typu pole z řekněme řetězce na číselný, změnit název pole na nový název nebo dokonce přidat nový sloupec do tabulky.
Alter – syntaxe
Základní syntaxe použitá k přidání sloupce do již existující tabulky je uvedena níže
ALTER TABLE `table_name` ADD COLUMN `column_name` `data_type`;
ZDE
- "ALTER TABLE `název_tabulky`" je příkaz, který říká MySQL serveru upravit tabulku s názvem `název_tabulky`.
- "PŘIDAT SLOUPEC `název_sloupce` `typ_dat`" je příkaz, který říká MySQL serveru přidat nový sloupec s názvem `název_sloupce` s datovým typem `data_type'.
Předpokládejme, že Myflix zavedl online fakturaci a platby. Za tímto účelem jsme byli požádáni, abychom do tabulky členů přidali pole pro číslo kreditní karty. K tomu můžeme použít příkaz ALTER. Nejprve se podívejme na strukturu tabulky členů, než provedeme jakékoli změny. K tomu nám pomáhá níže uvedený skript.
SHOW COLUMNS FROM `members`;
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
full_names | varchar(350) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
K přidání nového pole do tabulky členů můžeme použít skript zobrazený níže.
ALTER TABLE `members` ADD COLUMN `credit_card_number` VARCHAR(25);
Spuštění výše uvedeného skriptu v MySQL oproti Myflixdb přidá do tabulky členů nový sloupec s názvem číslo kreditní karty s datovým typem VARCHAR. Spuštění skriptu show columns nám poskytne následující výsledky.
SHOW COLUMNS FROM `members`;
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
full_names | varchar(350) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL | |||
credit_card_number | varchar(25) | YES |
Jak můžete vidět z vrácených výsledků, do tabulky členů bylo přidáno číslo kreditní karty. Data obsažená v datech členů nejsou přidáním nového sloupce ovlivněna.
CO JE TO PŘÍKAZ DROP?
K tomu se používá příkaz DROP
- Smazat databázi z MySQL Server
- Odstraňte objekt (např. Tabulka , Sloupec) z databáze.
Podívejme se nyní na praktické příklady, které využívají příkaz DROP.
V našem předchozím příkladu na příkazu Alter jsme do tabulky členů přidali sloupec s názvem číslo kreditní karty.
Předpokládejme, že funkce online fakturace bude nějakou dobu trvat a chceme sloupec kreditní karty VYHNAT
Můžeme použít následující skript
ALTER TABLE `members` DROP COLUMN `credit_card_number`;
Spuštěním výše uvedeného skriptu se sloupec číslo_kreditní_karty z tabulky členů odstraní
Podívejme se nyní na sloupce v tabulce členů, abychom potvrdili, zda byl náš sloupec vypuštěn.
SHOW COLUMNS FROM `members`;
Spuštění výše uvedeného skriptu v MySQL workbench proti myflixdb nám dává následující výsledky.
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
full_names | varchar(350) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
Všimněte si, že číslo kreditní karty bylo vypuštěno ze seznamu polí.
SHOP STŮL
Syntaxe pro DROP tabulky z databáze je následující –
DROP TABLE `sample_table`;
Podívejme se na příklad
DROP TABLE `categories_archive`;
Spuštěním výše uvedeného skriptu dojde k odstranění tabulky s názvem ` archive_category ` z naší databáze.
CO JE TO PŘÍKAZ PŘEJMENOVAT?
Používá se příkaz přejmenovat změnit název existujícího databázového objektu (jako je tabulka, sloupec) na nový název.
Přejmenováním tabulky nedojde ke ztrátě jakýchkoli dat, která jsou v ní obsažena.
Syntax:-
Příkaz rename má následující základní syntaxi.
RENAME TABLE `current_table_name` TO `new_table_name`;
Předpokládejme, že chceme přejmenovat tabulku movierentals na movie_rentals, k tomu můžeme použít níže uvedený skript.
RENAME TABLE `movierentals` TO `movie_rentals`;
Spuštěním výše uvedeného skriptu dojde k přejmenování tabulky `movierentals` na `movie_rentals`.
Nyní přejmenujeme tabulku movie_rentals zpět na její původní název.
RENAME TABLE `movie_rentals` TO `movierentals`;
ZMĚNIT KLÍČOVÉ SLOVO
Změna klíčových slov vám to umožní
- Změňte název sloupce
- Změnit typ dat sloupce
- Změnit omezení sloupců
Podívejme se na příklad. Pole úplných jmen v tabulce členů má datový typ varchar a má šířku 150.
SHOW COLUMNS FROM `members`;
Spuštění výše uvedeného skriptu v MySQL workbench proti myflixdb nám dává následující výsledky.
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
full_names | varchar(150) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
Předpokládejme, že chceme
- Změňte název pole z „full_names“ na „fullname
- Změňte jej na datový typ char s šířkou 250
- Přidejte omezení NOT NULL
Toho můžeme dosáhnout pomocí příkazu change následovně –
ALTER TABLE `members` CHANGE COLUMN `full_names` `fullname` char(250) NOT NULL;
Spuštění výše uvedeného skriptu v MySQL workbench proti myflixdb a následné spuštění skriptu show columns uvedeného výše dává následující výsledky.
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
fullnames | char(250) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
UPRAVIT KLÍČOVÉ SLOVO
Klíčové slovo MODIFY vám to umožňuje
- Upravit typ dat sloupce
- Upravit omezení sloupců
Ve výše uvedeném příkladu CHANGE jsme museli změnit název pole a další podrobnosti. Vynechání názvu pole v příkazu CHANGE způsobí chybu. Předpokládejme, že nás zajímá pouze změna datového typu a omezení na poli bez ovlivnění názvu pole, můžeme k tomu použít klíčové slovo MODIFY.
Skript níže změní šířku pole „celé jméno“ z 250 na 50.
ALTER TABLE `members`MODIFY `fullname` char(50) NOT NULL;
Spuštění výše uvedeného skriptu v MySQL workbench proti myflixdb a následným spuštěním výše uvedeného skriptu show columns získáte následující výsledky uvedené níže.
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
fullnames | char(50) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
PO KLÍČOVÉM SLOVA
Předpokládejme, že chceme přidat nový sloupec na konkrétní pozici v tabulce.
Příkaz alter můžeme použít společně s klíčovým slovem AFTER.
Skript níže přidá „date_of_registration“ hned za datum narození v tabulce členů.
ALTER TABLE `members` ADD `date_of_registration` date NULL AFTER `date_of_birth`;
Spuštění výše uvedeného skriptu v MySQL workbench proti myflixdb a následným spuštěním výše uvedeného skriptu show columns získáte následující výsledky uvedené níže.
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
fullnames | char(50) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
date_of_registration | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
Shrnutí
- Příkaz alter se používá, když chceme upravit databázi nebo jakýkoli objekt obsažený v databázi.
- Příkaz drop se používá k odstranění databází z MySQL Server nebo objekty v databázi.
- Příkaz rename se používá ke změně názvu tabulky na nový název tabulky.
- Klíčové slovo Změnit umožňuje změnit název sloupce, datový typ a omezení
- Upravit klíčové slovo umožňuje upravit datový typ sloupce a omezení
- Klíčové slovo After se používá k určení pozice sloupce v tabulce