mysql create table tutorial with examples
V tomto kurzu prozkoumáme použití příkazu MySQL CREATE TABLE s příklady syntaxe a programování:
Příkaz CREATE TABLE je součástí jazyka DDL (Data Definition Language) jazyka SQL.
Budeme diskutovat o způsobech, kterými můžete VYTVOŘIT tabulku v dané databázi, zmínit názvy sloupců a DB engine při vytváření tabulky, spolu s pravidly týkajícími se konvencí pojmenování pro tabulky SQL.
Co se naučíte:
- Předpoklady
- Příkaz MySQL CREATE TABLE
- Závěr
Předpoklady
Předpokladem pro spuštění některého z příkazů SQL by bylo stažení serveru MySQL. Bezplatnou komunitní edici lze stáhnout tady.
Pro všechny příklady a diskuse v tomto výukovém programu budeme také používat klienta MySQL Workbench SQL. Bezplatnou komunitní edici MySQL Workbench lze stáhnout tady (verzi si můžete vybrat v závislosti na operačním systému, na kterém pracujete).
Pokud nechcete používat MySQL Workbench - můžete také použít klienta příkazového řádku MySQL, který je dodáván s výchozí instalací serveru MySQL.
Příkaz MySQL CREATE TABLE
Příkaz CREATE TABLE je součástí sady příkazů DDL (Data Definition Language) v MySQL a umožňuje uživateli vytvořit novou tabulku pro danou databázi.
Poznámka: Příkaz CREATE TABLE existuje téměř pro všechny relační databáze - jako MySQL, Postgres, SQL Server atd.
MySQL CREATE TABLE Syntaxe
V nejjednodušší podobě můžete použít příkaz CREATE TABLE se základními možnostmi, tj. S názvem tabulky a definicemi sloupců.
CREATE TABLE (IF NOT EXISTS) tableName ( column1 datatype, column2 datatype, .... );
Podívejme se podrobně na argumenty syntaxe:
- název_tabulky: Toto by měl být název tabulky, kterou se pokoušíte vytvořit. Mělo by se jednat o plně kvalifikovaný název (v případě, že nemáte nastavenou výchozí databázi). Například, název_databáze. název_tabulky
Název tabulky lze zadat bez uvozovek nebo se symbolem backticku jako `název_tabulky` a` název_databáze`.` název_tabulky` - Definice sloupce: Tabulka v SQL se musí skládat alespoň z jednoho sloupce. Všechny definice sloupců musí obsahovat název_sloupce a také datový typ sloupce. Můžete také volitelně zahrnout další vlastnosti sloupce, jako je primární klíč, null, ne null atd.
Podívejme se na příklad použití výše uvedené syntaxe k vytvoření tabulky.
Vytvoříme tabulku s názvem EMPLOYEE_DETAILS (v databázi - SAMPLE_DB) se sloupci
- název: varchar (100)
- stáří: int
- adresa: varchar (100)
CREATE TABLE SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100) );
Níže bude uveden výstup vytvoření tabulky:
Poznámka:
# 1) Všimněte si použití (NEBO EXISTUJE) volitelného příkazu ve výše uvedené syntaxi.
Obecně se doporučuje použít tento příkaz, protože by se zabránilo generování chyby, pokud tabulka, kterou se pokoušíme vytvořit, je již v databázi.
Tady je příklad použití s nebo bez IF NOT EXISTS.
- Bez IF NOT EXISTS by došlo k chybě, pokud tabulka již existuje.
- Pokud IF NOT EXISTS nevygeneruje chybu. Zobrazí se však upozornění, že tabulka již existuje.
# 2) „TableName“ při používání příkazu CREATE TABLE by měl být plně kvalifikovaný s názvem databáze, tj. Tak, jak jsme jej použili SAMPLE_DB.employee_details
Dalšími způsoby, jak určit název tabulky, je nastavení aktuální databáze pomocí příkazu „USE“. Např. USE SAMPLE_DB; a poté spustit / používat pouze název tabulky namísto plně kvalifikovaného názvu tabulky.
VYTVOŘIT TABULKU s možnostmi tabulky
Možnosti tabulky se používají k optimalizaci chování tabulek MySQL. Ty lze použít při vytváření tabulky pomocí příkazu MySQL CREATE TABLE (nebo později pomocí příkazu ALTER TABLE).
Syntaxe zůstává stejná s dalšími možnostmi tabulky, které lze zadat.
CREATE TABLE (IF NOT EXISTS) tableName ( column1 datatype, column2 datatype, .... ) (table “” not found /)
;
Níže probereme nejpoužívanější možnosti (Kompletní seznam možností tabulky naleznete tady ).
# 1) MOTOR
Používá se k určení modulu úložiště pro tabulku, tj. Výchozí hodnota je InnoDB. Toto není nutné měnit, pokud neexistují potřeby konkrétního úložiště. Další platné hodnoty pro úložné moduly jsou MEMORY, CSV, HEAP atd.
Syntaxe pro specifikaci ENGINE jako součásti MySQL CREATE TABLE je uvedena níže.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100) )ENGINE='MEMORY';
# 2) AUTO_INCREMENT
Tato možnost se používá k nastavení počáteční hodnoty AUTO_INCREMENT tabulky, tj. Výchozí hodnota je 1, ale můžete ji přepsat na jakoukoli jinou kladnou celočíselnou hodnotu.
Poznámka: AUTO_INCREMENT lze zadat pouze pro jeden sloupec v tabulce a měl by to být primární klíč. Podívejme se na příklad zadání automatického přírůstku jako 10 a vložení záznamu k ověření, zda je automatický přírůstek nastaven správně.
Používáme stejnou tabulku employee_details (před spuštěním tohoto příkazu nezapomeňte zrušit existující tabulku) s dalším ID polem označeným jako primární klíč.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details( id int not null AUTO_INCREMENT primary key, name varchar(100), age int, address varchar(100) )AUTO_INCREMENT=10;
Vložme řádek bez jakékoli hodnoty pro ID a ujistěte se, že se hodnoty vkládají od hodnoty začínající 10.
INSERT INTO SAMPLE_DB.employee_details(name,age,address) values ('aman kumar',20,'mumbai'); select * from SAMPLE_DB.employee_details;
# 3) KONTROLA
To by mělo být nastaveno na 1, pokud chcete mít uložen kontrolní součet pro celou tabulku. Obvykle se používá k zajištění toho, aby nebyly poškozené tabulky.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100) )CHECKSUM=1;
KONTROLNÍ SOUČET udržuje živý kontrolní součet celé tabulky během jakýchkoli vložení nebo aktualizací
VYTVOŘIT TABULKU s podrobnostmi rozdělení disku
Můžeme také zmínit Uživatelem definované rozdělení, pokud je to nutné, pomocí možností rozdělení.
Rozdělení jako koncept se široce používá k distribuci obsahu tabulek v systému souborů, aby se zajistila rychlejší doba přístupu a optimalizované dotazy. Rozdělení rozdělí velkou tabulku na menší tabulky v závislosti na specifikovaných strategiích nebo rozdělovacích klíčích.
Podívejme se, jak můžeme pomocí příkazu MySQL CREATE TABLE určit podrobnosti rozdělení.
Použijeme ukázkovou tabulku employee_details a přidáme nový celočíselný sloupec s názvem department_id, který by byl použit jako hash klíč oddílu pro rovnoměrnou distribuci dat.
Také zadání počtu oddílů by indikovalo, kolik skutečných oddílů by bylo vytvořeno (v tomto případě 4). Pokud není uvedeno, pak by ve výchozím nastavení existoval pouze 1 oddíl.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100), department_id int )PARTITION BY HASH (department_id) PARTITIONS 4;
Poznámka: Klíč, který by se použil k vytvoření oddílů, by obecně závisel na očekávaných vzorcích přístupu, které by byly použity pro tabulku. V tomto případě předpokládejme, že budeme většinu času dotazovat tabulku na základě ID oddělení, pak má smysl mít jako součást hash klíče department_id.
Klonování a kopírování tabulky MySQL
Někdy můžete chtít vytvořit klon existující tabulky nebo zkopírovat obsah z jedné tabulky do jiné tabulky. MySQL podporuje 2 způsoby, jak toho dosáhnout, jak je uvedeno níže.
- Pomocí příkazu LIKE
- Pomocí příkazu SELECT
Klonování tabulky pomocí LIKE COMMAND
Pomocí příkazu LIKE můžete vytvořit novou tabulku s přesně stejnými názvy sloupců a vlastnostmi jako stávající tabulky.
Zde je syntaxe používající příkaz LIKE.
stránky ke stažení videa z youtube
CREATE TABLE tableName1 LIKE tableName2
S výše uvedeným příkazem by byla vytvořena nová tabulka, tj. TableName1 se stejnou strukturou a vlastnostmi tableName2.
Vezměte prosím na vědomí, že s tímto přístupem - klonovány budou pouze názvy sloupců a vlastnosti, nikoli skutečná data tabulky.
Zkusme vytvořit tabulku s názvem employee_details a pomocí této tabulky vytvoříme novou tabulku s názvem student_details pomocí možnosti LIKE.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100), department_id int ); CREATE TABLE SAMPLE_DB.student_details LIKE SAMPLE_DB.employee_details;
Níže je uveden výstup výše uvedeného příkazu.
Klonování tabulky pomocí příkazu SELECT COMMAND
Tento přístup používá příkaz SELECT k vytvoření kopie existující tabulky do nové tabulky.
S tímto přístupem se data z tabulky také zkopírují do nové tabulky.
CREATE TABLE tableName1 AS SELECT * FROM tableName2;
Zkusme vytvořit tabulku s názvem employee_details a pomocí této tabulky vytvoříme novou tabulku s názvem student_details pomocí možnosti VÝBĚR.
CREATE TABLE SAMPLE_DB.student_details AS SELECT * FROM SAMPLE_DB.employee_details;
Konvence pojmenování tabulek MySQL
V předchozích částech jsme se dozvěděli o vytváření tabulek MySQL. Nyní se podívejme na některá pravidla, na která je třeba pamatovat při pojmenovávání tabulek, spolu s omezeními, která platí pro MySQL.
Tyto konvence / pravidla platí jak pro tabulky SQL, tak pro databáze.
# 1) Právní znaky v jménech
na) Názvy bez uvozovek se mohou skládat z libovolných znaků ve výchozí znakové sadě serveru SQL Server s výjimkou, že ne všechny znaky mohou být číslice. Například, „23test“ je platný název tabulky, ale nikoli „2345“.
Níže je uveden seznam znaků, které lze použít pro nekótovaná jména:
ASCII: (0-9, a-z, A-Z $ _) (základní latinská písmena, číslice 0-9, dolar, podtržítko)
Rozšířené: U + 0080 .. U + FFFF
Další informace o kódech ASCII tady
b) Názvy tabulek a databází mohou být uvozeny znakem backtick (`) a mohou obsahovat jakékoli písmeno / znak kromě samotného znaku backtick. S citovanými názvy můžete dokonce mít názvy tabulek / databází se všemi číslicemi.
Vezměte prosím na vědomí, že u takových tabulek byste pro přístup k datům uvnitř těchto tabulek museli použít zpětné značky kolem tabulky a / nebo názvu databáze.
C) Názvy tabulek a databází nesmí obsahovat tečku „.“, Protože se používá jako oddělovač databáze a tabulky.
d) Názvy databáze a tabulky mohou obsahovat speciální znaky „$“ a „_“.
nejlepší odstraňovač spywaru pro Windows 10
# 2) Délka jména
Maximální povolená délka názvu databáze nebo tabulky v MySQL je 64 postavy.
# 3) Kvalifikátory jmen
Jak je uvedeno v předchozích částech, v MySQL je tabulka vždy v kontextu s databází, jejíž je součástí. Proto pro přístup k tabulce můžete použít plně kvalifikovaný název tabulky - což není nic jiného než kombinace názvu databáze oddělené tečkou a potom názvem sloupce.
Například, k výběru všech prvků z tabulky „EMPLOYEE_DETAILS“ z databáze SAMPLE_DB můžete použít plně kvalifikovaný název, jak je uvedeno níže.
SELECT * from SAMPLE_DB.EMPLOYEE_DETAILS;
Názvy databází a tabulek lze také specifikovat tak, jak jsou uvedeny samostatně s backticks, jak je uvedeno níže.
SELECT * from `SAMPLE_DB`.`EMPLOYEE_DETAILS`;
Níže jsou uvedeny průmyslové konvence a doporučené postupy týkající se pojmenovacích tabulek a databází.
- Pojmenujte tabulky a databáze malými písmeny - To obecně zrychluje psaní a dotazování na databázi, zejména pro ty, kteří jsou zapojeni do každodenního dotazování na databázi.
- Místo mezer v názvech tabulek a db použijte podtržítka („_“) - Díky tomu jsou jména čitelnější.
- Pro tabulky a databáze používejte vysvětlující názvy - Například, tabulku obsahující podrobnosti o zaměstnanci lze pojmenovat různými způsoby, například employee_info, employee_data, employee, employee_details, employee_name_and_address. Dalo by smysl vybrat název, který je nejvíce vysvětlující. Například, můžeme zvolit název tabulky jako employee_details nebo employee_info. Ačkoli se jedná o subjektivní diskusi, mělo by se na ní dohodnout několik členů týmu, kteří tyto entity použijí a vytvoří.
- Nepoužívejte čísla v názvech databází a tabulek - Jako sample_db_2, test_table_1 atd.
Často kladené otázky a odpovědi
Otázka č. 1) Jak vytvořit tabulku v MySQL pomocí indexu?
Odpovědět: INDEX můžete přidat proti jakémukoli sloupci (nebo kombinaci sloupců) během samotného vytváření tabulky.
Podívejme se na příklad přidání indexu ke sloupci department_id pro tabulku employee_details.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), id int, age int, address varchar(100), department_id int, index(department_id) );
Otázka 2) Jak vytvořit tabulku s datem v MySQL?
Odpovědět: Datum je datový typ, který by měl být při vytváření tabulky přidružen k jakémukoli sloupci.
Podívejte se na níže uvedený ukázkový příkaz CREATE TABLE se sloupcem joining_date, který má DATETIME jako datový typ pro ukázkovou tabulku employee_details.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), id int primary key, age int, address varchar(100), joining_date datetime, department_id int );
Otázka č. 3) Jak vidím strukturu tabulky v MySQL?
Odpovědět: Po vytvoření tabulky, pokud chcete odkázat na strukturu tabulky, jako jsou sloupce, indexy atd., Můžete pomocí příkazu DESCRIBE načíst podrobnosti.
Syntax:
DESCRIBE tableName;
Vytvořme tabulku a uvidíme výstup příkazu DESCRIBE.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), id int primary key, age int, address varchar(100), department_id int ); DESCRIBE sample_db.employee_details;
Níže je uveden výstup příkazu DESCRIBE.
Otázka č. 4) Jak přidám ZAHRANIČNÍ KLÍČ do tabulky v MySQL?
Odpovědět: Cizí klíč se používá k propojení 2 tabulek dohromady v MySQL. Chcete-li použít omezení cizího klíče, měli byste již vytvořit tabulku, na kterou odkazujete.
>> Další informace o Omezení cizího klíče MySQL
Zkusme to pochopit na příkladu. Řekněme, že máme 2 tabulky, tj. Oddělení (které obsahuje podrobnosti o různých odděleních, která má vysoká škola) a podrobnosti o studentech (všechny podrobnosti týkající se studentů).
Oddělení má sloupce - id (primární klíč) a jméno.
Podrobnosti o studentovi - id (primární klíč), věk, adresa & department_id (cizí klíč odkazovaný z tabulky oddělení).
Níže je uvedena syntaxe příkazu CREATE TABLE pro obě tyto tabulky.
CREATE TABLE department ( name varchar(100), id INT NOT NULL, PRIMARY KEY (id) ); CREATE TABLE student_details ( name varchar(100), id int not null, age int, address varchar(100), department_id int, PRIMARY KEY (id), FOREIGN KEY (department_id) references department(id) ON DELETE CASCADE );
Podívejte se na syntaxi odkazu FOREIGN KEY v tabulce student_details, kde jsme uvedli, že vztah mezi sloupci a ID_ oddělení by měl být odkazován ID sloupce z tabulky oddělení.
Závěr
Zde byl podrobně vysvětlen příkaz CREATE TABLE v MySQL, který patří k příkazům v kategorii Data Definition Language.
Dozvěděli jsme se o různých možnostech tabulky, jako je ENGINE, CHECKSUM atd., Které lze zmínit spolu s příkazem CREATE TABLE, aby byly pro tabulku nastaveny další vlastnosti.
Prošli jsme způsoby, jak vytvořit klon existující tabulky v MySQL. Nakonec jsme hovořili o konvencích pojmenování názvů tabulek spolu s doporučenými postupy doporučenými v oboru.
Šťastné čtení!!
Doporučené čtení
- MySQL Create View Tutorial s příklady kódu
- MySQL datové typy | Jaké jsou různé datové typy v MySQL
- MySQL Vložit do tabulky - Vložit syntaxi výpisu a příklady
- Výukový program MySQL JOIN: vnitřní, vnější, křížový, levý, pravý a vlastní
- Rozdíl mezi SQL Vs MySQL Vs SQL Server (s příklady)
- Jak používat příkaz PL SQL Vložit, aktualizovat, odstranit a vybrat
- Výukový program pro vytváření databáze MongoDB
- MongoDB Vytváření uživatelů a přiřazování rolí s příklady