Úvod
MySQL uchovává data, která spravuje, v tabulkách a databázích. Tabulky ukládají data v rámci předdefinovaných schémat sloupců a datových typů. Databáze jsou strukturou, která může obsahovat více tabulek, indexů, procedur a pomáhá definovat rozsah oprávnění, přizpůsobení a další.
V této příručce vám ukážeme, jak vytvářet tabulky a databáze v MySQL. Ukážeme vám, jak spravovat některé funkce obou struktur, a poté probereme, jak je odstranit a vyčistit, pokud je již nepotřebujete.
Předpoklady
Abyste mohli postupovat podle této příručky, budete se muset přihlásit k serveru MySQL pomocí uživatele s oprávněními správce pomocí mysql
klient příkazového řádku.
Pokud se nechcete přihlašovat pomocí root
Administrativní účet MySQL, váš uživatel bude potřebovat alespoň CREATE
oprávnění provádět akce popsané v této příručce.
Dostupná oprávnění vašeho uživatele můžete zkontrolovat zadáním:
SHOW GRANTS\G
Jak vytvoříte novou databázi?
První věc, kterou si ukážeme, je vytvoření nové databáze. V MySQL databáze obsahují tabulky, indexy, procedury a další zdroje, které se obvykle týkají jednoho projektu. Každý z těchto zdrojů musí být vytvořen v databázi, takže naučit se, jak vytvořit novou databázi, je dobrý první krok.
Základní syntaxe použitá k vytvoření nové databáze vypadá takto:
CREATE DATABASE <db_name>;
Nahraďte
s názvem, který chcete dát databázi před provedením příkazu. Tento příkaz vytvoří databázi s daným jménem a nastaví aktuálního uživatele jako vlastníka nové databáze.
Databáze bude používat celosystémová výchozí nastavení pro vlastnosti znakové sady, řazení a šifrování:
- SADA ZNAKŮ: nastaví znakovou sadu pro novou databázi. Toto je možnost lokalizace, která ovlivňuje, jaké znaky jsou považovány za velká, malá písmena a číslice.
- COLLATE: nastaví třídění nebo pořadí řazení databáze. Toto je možnost lokalizace, která určuje, jak jsou položky organizovány, když jsou objednávány.
- ŠIFROVÁNÍ: nastaví šifrování pro novou databázi. Toto je logická možnost, která může být buď „Y“ pro ano, nebo „N“ pro ne.
Znakové sady dostupné pro vaši instalaci najdete zadáním:
SHOW CHARACTER SET;
Stejně tak můžete najít dostupné porovnávání zadáním:
SHOW COLLATION;
Pokud chcete zadat jinou než výchozí hodnotu pro jeden z těchto parametrů, můžete to udělat tak, že je přidáte za hlavní příkaz vytvoření, jako je tento:
CREATE DATABASE <db_name> CHARACTER SET = 'utf8mb4' COLLATE = 'utf8mb4_0900_ai_ci' ENCRYPTION = 'Y';
Chcete-li pokračovat podle příkladů v této příručce, vytvořte databázi s názvem school
pomocí výchozího nastavení národního prostředí vaší instance a znakové sady UTF8:
CREATE DATABASE school CHARACTER SET = 'utf8mb4';
Tím se vytvoří vaše nová databáze pomocí specifikací, které jste poskytli.
Seznam existujících databází
Chcete-li zobrazit databáze, které jsou dostupné na vašem serveru, zadejte:
SHOW DATABASES;
Zobrazí se seznam všech databází aktuálně definovaných v prostředí:
+--------------------+ Database |+--------------------+ information_schema | mysql | performance_schema | school | sys | testing |+--------------------+6 rows in set (0.00 sec)
Můžete ověřit, že vámi zadaná nastavení byla použita pro novou školu
databázi pomocí SHOW CREATE DATABASE
příkaz:
SHOW CREATE DATABASE school;
Výstup zobrazí příkaz a možnosti použité k vytvoření databáze, přičemž možnosti budou doplněny jakýmikoli použitými výchozími hodnotami:
+----------+----------------------------------------------------------------------------------------------------------------------------------+ Database | Create Database |+----------+----------------------------------------------------------------------------------------------------------------------------------+ school | CREATE DATABASE `school` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |+----------+----------------------------------------------------------------------------------------------------------------------------------+1 row in set (0.00 sec)
Jak přejít na jinou databázi v MySQL
Jakmile je databáze vytvořena, můžete s ní pracovat několika různými způsoby.
První možností je zadat databázi jako argument v každém příkazu, který použijete. Chcete-li ušetřit čas, pokud spouštíte více příkazů souvisejících s objekty databáze, můžete také „přepnout“ nebo „použít“ databázi k nastavení vaší nové databáze jako výchozího kontextu pro jakékoli příkazy související s databází, které budete spouštět. .
Chcete-li přejít na jinou databázi, zadejte:
USE <db_name>;
V našem případě můžeme přejít na školu
databázi jsme vytvořili zadáním:
USE school;
Vytváření tabulek v databázích
Jakmile vytvoříte databázi, můžete uvnitř definovat tabulky a další objekty pro ukládání a správu vašich dat. V MySQL se tabulky skládají z názvu tabulky, definic sloupců (ty zase mimo jiné zahrnují názvy, datové typy a omezení) a možností tabulky.
Jaká je syntaxe CREATE TABLE
MySQL příkaz?
Základní syntaxe pro vytváření tabulek pomocí CREATE TABLE
MySQL příkaz vypadá takto:
CREATE TABLE <table_name> ( <column_name> <data_type> [<column_constraint>], [<table_constraint>,]);
Výše uvedenou šablonu příkazu můžeme rozdělit na následující součásti:
VYTVOŘIT TABULKU
:Základní prohlášení o stvoření.
zástupný symbol by měl být nahrazen názvem tabulky, kterou chcete použít.
:Definuje základní sloupec v tabulce.
zástupný symbol by měl být nahrazen názvem, který chcete pro svůj sloupec použít.
určuje datový typ MySQL sloupce. Aby byla data uložená v tabulce přijata, musí odpovídat struktuře sloupců a datovým typům sloupců.
:Omezení sloupců jsou volitelná omezení přidávají další požadavky na data. Můžete například požadovat, aby položky nebyly nulové, jedinečné ani kladná celá čísla.
:Omezení tabulky jsou podobná omezením sloupců, ale zahrnují interakci více sloupců. Můžete například mít omezení tabulky, které kontroluje, zdaDATE_OF_BIRTH
je předDATE_OF_DEATH
v tabulce.
Jak vytvoříte tabulky, pouze pokud ještě neexistují?
Výchozí chování MySQL je vyvolat chybu, pokud se pokusíte vytvořit tabulku, která již existuje. Nicméně nepovinné IF NOT EXISTS
Do příkazu vytvoření lze přidat klauzuli, která toto chování přepíše.
Můžete použít IF NOT EXISTS
klauzuli tak, že ji vložíte do příkazu za CREATE TABLE
fráze, ale před názvem tabulky:
CREATE TABLE IF NOT EXISTS table_name ( column_name TYPE [column_constraint], [table_constraint,]);
To změní chování příkazu následovně:Pokud zadaný název tabulky již existuje, MySQL vyvolá varování místo chyby. Zbytek chování příkazu zůstává stejný.
Vytváření tabulek v databázích MySQL
K vytvoření základních tabulek stačí výše uvedená šablona příkazu. Jako další příklad vytvoříme v naší škole
dvě tabulky databáze. Jedna tabulka se bude jmenovat supplies
a druhý se bude jmenovat učitelé
:
V dodávky
tabulky, zahrneme následující pole:
- id: Jedinečné ID pro každý typ školních potřeb.
- jméno: Název konkrétní školní položky.
- popis: Krátký popis položky.
- výrobce: Název výrobce položky.
- barva: Barva položky.
- inventář: Počet položek, které máme pro určitý typ školních potřeb. Ta by nikdy neměla být menší než 0.
Můžeme vytvořit dodávky
tabulky s výše uvedenými vlastnostmi pomocí následujícího SQL:
CREATE TABLE supplies ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), description VARCHAR(255), manufacturer VARCHAR(255), color VARCHAR(255), inventory INT CHECK (inventory >= 0));
Tím vytvoříte zásoby
tabulky v rámci školy
databáze. PRIMÁRNÍ KLÍČ
sloupcové omezení je speciální omezení používané k označení sloupců, které mohou jednoznačně identifikovat záznamy v tabulce. Omezení jako takové určuje, že sloupec nemůže mít hodnotu null a musí být jedinečný. MySQL vytváří indexy pro sloupce primárního klíče pro zvýšení rychlosti dotazování.
Ověřte přítomnost nové tabulky zadáním:
SHOW TABLES;
+------------------+ Tables_in_school |+------------------+ supplies |+------------------+1 row in set (0.01 sec)
Můžete ověřit, že schéma odpovídá vaší definici, zadáním:
SHOW CREATE TABLE supplies\G
*************************** 1. row *************************** Table: suppliesCreate Table: CREATE TABLE `supplies` ( `id` int NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `description` varchar(255) DEFAULT NULL, `manufacturer` varchar(255) DEFAULT NULL, `color` varchar(255) DEFAULT NULL, `inventory` int DEFAULT NULL, PRIMARY KEY (`id`), CONSTRAINT `supplies_chk_1` CHECK ((`inventory` >= 0))) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci1 row in set (0.00 sec
Sloupce, datové typy a omezení, která jsme zadali, jsou ve výstupu přítomny, i když pořadí a zobrazení se mohou lišit.
Dále vytvořte učitele
stůl. V této tabulce by měly být přítomny následující sloupce:
- id :Jedinečné identifikační číslo zaměstnance.
- křestní_jméno :Křestní jméno učitele.
- příjmení :Příjmení učitele.
- předmět :Předmět, který má učitel vyučovat.
- úroveň_úrovně :Stupeň studentů, pro které je učitel najat.
Vytvořte učitele
tabulka s výše uvedeným schématem s následujícím SQL:
CREATE TABLE teachers ( id INT AUTO_INCREMENT PRIMARY KEY, first_name VARCHAR(255), last_name VARCHAR(255), subject VARCHAR(255), grade_level INT);
Jak vytvořit tabulky s primárními klíči a cizími klíči
Informace o vytváření tabulek s primárními a cizími klíči naleznete v některých našich dalších příručkách MySQL. Primární klíče a cizí klíče jsou oba typy omezení databáze v rámci MySQL.
Primární klíč je speciální sloupec nebo sloupec, u kterého je zaručeno, že bude jedinečný napříč řádky ve stejné tabulce. Všechny primární klíče lze použít k jednoznačné identifikaci konkrétního řádku. Primární klíče nejen zajišťují, že každý řádek má jedinečnou hodnotu pro sloupce primárního klíče, ale také zajišťují, že žádné řádky neobsahují NULL
hodnoty pro daný sloupec. Primární klíč v MySQL často používá k určení automaticky přiřazeného inkrementačního primárního klíče následující formát:id INT AUTO_INCREMENT PRIMARY KEY
.
Cizí klíče představují způsob, jak zajistit, aby sloupec nebo sloupce v jedné tabulce odpovídaly hodnotám obsaženým v jiné tabulce. To pomáhá zajistit referenční integritu mezi tabulkami.
Jak zobrazit tabulky v MySQL
V MySQL můžete vypisovat tabulky několika různými způsoby v závislosti na tom, jaké informace hledáte.
Pokud chcete vidět, jaké tabulky jsou ve vaší databázi k dispozici, zadejte:
SHOW TABLES;
+------------------+ Tables_in_school |+------------------+ supplies | teachers |+------------------+2 rows in set (0.00 sec)
Můžete také zkontrolovat, zda schéma tabulky odpovídá vašim specifikacím:
DESCRIBE teachers;
+--------------+--------------+------+-----+---------+----------------+ Field | Type | Null | Key | Default | Extra |+--------------+--------------+------+-----+---------+----------------+ id | int | NO | PRI | NULL | auto_increment | name | varchar(255) | YES | | NULL | | description | varchar(255) | YES | | NULL | | manufacturer | varchar(255) | YES | | NULL | | color | varchar(255) | YES | | NULL | | inventory | int | YES | | NULL | |+--------------+--------------+------+-----+---------+----------------+6 rows in set (0.00 sec)
učitelé
Zdá se, že tabulka odpovídá naší definici.
Jak změnit tabulky pomocí ALTER TABLE
příkaz
Pokud potřebujete změnit schéma existující tabulky v MySQL, můžete použít ALTER TABLE
příkaz. ALTER TABLE
příkaz je velmi podobný příkazu CREATE TABLE
příkaz, ale pracuje na existující tabulce.
Změnit syntaxi tabulky
Základní syntaxe pro úpravu tabulek v MySQL vypadá takto:
ALTER TABLE <table_name> <change_command> <change_parameters>;
označuje přesný typ změny, kterou byste chtěli provést, ať už jde o nastavení různých možností v tabulce, přidání nebo odebrání sloupců nebo změnu typů nebo omezení.
část příkazu obsahuje další informace, které MySQL potřebuje k dokončení změny.
Přidávání sloupců do tabulek
Sloupec do tabulky MySQL můžete přidat pomocí ADD
změnit příkaz. Parametry změny budou zahrnovat název sloupce, typ a možnosti, stejně jako byste je zadali v CREATE TABLE
příkaz.
Chcete-li například přidat sloupec s názvem missing_column
textu
zadejte do tabulky s názvem nejaká_tabulka
, napsali byste:
ALTER TABLE some_table ADD missing_column text;
Odebrání sloupců z tabulek
Pokud místo toho chcete odstranit existující sloupec, můžete použít DROP COLUMN
místo toho příkaz. Jako parametr změny musíte zadat název sloupce, který chcete vypustit:
ALTER TABLE some_table DROP COLUMN useless_column;
Změna datového typu sloupce
Chcete-li změnit typ dat sloupce, můžete použít ALTER COLUMN
změnit příkaz pomocí MODIFY COLUMN
sloupcový příkaz. Mezi parametry v tomto kontextu patří název sloupce a jeho nový typ:
ALTER TABLE resident MODIFY COLUMN id INT;
Další změny v tabulce
Mnoho dalších typů změn lze dosáhnout pomocí ALTER TABLE
příkaz. Další informace o dostupných možnostech naleznete v oficiální dokumentaci MySQL pro ALTER TABLE
.
Zrušit tabulky
Pokud chcete smazat tabulku, můžete použít DROP TABLE
SQL příkaz. Tím smažete tabulku i všechna data v ní uložená.
Základní syntaxe vypadá takto:
DROP TABLE <table_name>;
Toto smaže tabulku, pokud existuje, a vyvolá chybu, pokud název tabulky neexistuje.
Pokud si přejete smazat tabulku, pokud existuje, a nedělat nic, pokud neexistuje, můžete zahrnout IF EXISTS
kvalifikátor v rámci příkazu:
DROP TABLE IF EXISTS <table_name>;
Tabulky, které jsou závislé na jiných tabulkách nebo objektech, nelze ve výchozím nastavení odstranit, dokud tyto závislosti existují.
Smažte dodávky
tabulku, kterou jsme vytvořili dříve zadáním:
DROP TABLE supplies;
učitele
si ponecháme databáze, abyste demonstrovali, že příkaz k odstranění databází také odstraní všechny podřízené objekty, jako jsou tabulky.
Zrušit databáze
DROP DATABASE
příkaz říká MySQL, aby smazala zadanou databázi. Základní syntaxe vypadá takto:
DROP DATABASE <database_name>;
Nahraďte
zástupný symbol s názvem databáze, kterou chcete odstranit. To smaže databázi, pokud je nalezena. Pokud databázi nelze najít, dojde k chybě:
DROP DATABASE some_database;
ERROR 1008 (HY000): Can't drop database 'some_database'; database doesn't exist
Pokud si přejete smazat databázi, pokud existuje, a jinak nedělat nic, zahrňte volitelný IF EXISTS
možnost:
DROP DATABASE IF EXISTS some_database;
Query OK, 0 rows affected, 1 warning (0.00 sec)
To odstraní databázi nebo neudělá nic, pokud ji nelze najít.
Chcete-li odebrat školu
databáze, kterou jsme použili v této příručce, uveďte seznam existujících databází ve vašem systému:
SHOW DATABASES;
+--------------------+ Database |+--------------------+ information_schema | mysql | performance_schema | school | sys | testing |+--------------------+6 rows in set (0.00 sec)
Smažte školu
databázi pomocí následujícího příkazu:
DROP DATABASE school;
Tím se odstraní škola
databáze spolu s učiteli
tabulka definovaná v.
Závěr
Tento článek se zabývá základy vytváření a odstraňování databází a tabulek pomocí MySQL. Toto jsou některé z nejzákladnějších příkazů potřebných k nastavení databázového systému a definování struktury vašich dat.
Jak již bylo zmíněno dříve, příkazy SQL popsané v tomto tutoriálu MySQL, zejména CREATE TABLE
prohlášení, mají mnoho dalších parametrů lze použít ke změně chování systému. Můžete se o nich dozvědět více v oficiální dokumentaci MySQL.