mysql create table tutorial with examples
V tomto tutoriále preskúmame použitie príkazu MySQL CREATE TABLE so syntaxou a príkladmi programovania:
Príkaz CREATE TABLE je súčasťou jazyka DDL (Data Definition Language) jazyka SQL.
Budeme diskutovať o spôsoboch, ako môžete VYTVORIŤ tabuľku v danej databáze, spomenúť názvy stĺpcov a databázový stroj pri vytváraní tabuľky, spolu s pravidlami okolo pomenovacích konvencií pre tabuľky SQL.
Čo sa dozviete:
- Predbežné požiadavky
- Príkaz MySQL CREATE TABLE
- Záver
Predbežné požiadavky
Predpokladom pre spustenie ktoréhokoľvek z príkazov SQL by bolo stiahnutie servera MySQL. Komunitnú verziu zadarmo je možné stiahnuť tu.
Budeme tiež používať klienta MySQL Workbench SQL pre všetky príklady a diskusie v tomto tutoriále. Bezplatné komunitné vydanie MySQL Workbench si môžete stiahnuť tu (verziu si môžete zvoliť v závislosti od operačného systému, na ktorom pracujete).
Ak nechcete používať MySQL Workbench - môžete tiež použiť klienta príkazového riadku MySQL, ktorý sa dodáva s predvolenou inštaláciou servera MySQL.
Príkaz MySQL CREATE TABLE
Príkaz CREATE TABLE je súčasťou sady príkazov DDL (Data Definition Language) v MySQL a umožňuje užívateľovi vytvoriť novú tabuľku pre danú databázu.
Poznámka: Príkaz CREATE TABLE existuje takmer pre všetky relačné databázy - ako MySQL, Postgres, SQL Server atď.
Syntax MySQL CREATE TABLE
V najjednoduchšej podobe môžete príkaz CREATE TABLE použiť iba so základnými voľbami, t. J. S názvom tabuľky a definíciami stĺpcov.
CREATE TABLE (IF NOT EXISTS) tableName ( column1 datatype, column2 datatype, .... );
Pozrime sa podrobne na argumenty syntaxe:
- tableName: Toto by mal byť názov tabuľky, ktorú sa pokúšate vytvoriť. Mal by to byť úplný názov (v prípade, že nemáte nastavenú predvolenú databázu). Napríklad, databaseName.tableName
Názov tabuľky je možné zadať bez úvodzoviek alebo so symbolom spätnej väzby, ako je napríklad „tableName“ a „databaseName`. - Definícia stĺpca: Tabuľka v SQL musí pozostávať minimálne z jedného stĺpca. Všetky definície stĺpcov musia pozostávať z názvu_sloupca a tiež z dátového typu stĺpca. Môžete tiež voliteľne zahrnúť ďalšie vlastnosti stĺpca, ako je primárny kľúč, null, nie null atď.
Pozrime sa na príklad použitia vyššie uvedenej syntaxe na vytvorenie tabuľky.
Vytvoríme tabuľku s názvom EMPLOYEE_DETAILS (v databáze - SAMPLE_DB) so stĺpcami
- názov: varchar (100)
- Vek: int
- adresa: varchar (100)
CREATE TABLE SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100) );
Ďalej bude uvedený výstup vytvorenia tabuľky:
Poznámka:
# 1) Všimnite si použitie (AK NEEXISTUJE) voliteľného príkazu vo vyššie uvedenej syntaxi.
Všeobecne sa odporúča použiť tento príkaz, pretože by sa tak zabránilo generovaniu chyby, ak sa tabuľka, ktorú sa pokúšame vytvoriť, už v databáze nachádza.
Tu je príklad použitia s alebo bez AK NIE JE.
- Bez IF NOT EXISTS by došlo k chybe, ak tabuľka už existuje.
- Ak IF NEEXISTUJE, chyba sa nevygeneruje. Zobrazí sa však varovanie, že tabuľka už existuje.
# 2) „TableName“ pri použití príkazu CREATE TABLE by mal byť úplne kvalifikovaný s názvom databázy, t. J. Spôsob, akým sme ho použili, je SAMPLE_DB.employee_details
Ďalšími spôsobmi, ako určiť názov tabuľky, je nastavenie aktuálnej databázy pomocou príkazu „USE“. Napr. POUŽÍVAJTE SAMPLE_DB; a potom spustiť / použiť iba názov tabuľky namiesto plne kvalifikovaného názvu tabuľky.
VYTVORIŤ TABUĽKU s možnosťami tabuľky
Možnosti tabuľky sa používajú na optimalizáciu správania tabuliek MySQL. Môžu byť použité pri vytváraní tabuľky pomocou príkazu MySQL CREATE TABLE (alebo neskôr pomocou príkazu ALTER TABLE).
Syntax zostáva rovnaká s ďalšími voľbami tabuľky, ktoré je možné určiť.
CREATE TABLE (IF NOT EXISTS) tableName ( column1 datatype, column2 datatype, .... ) (table “” not found /)
;
Najbežnejšie používané možnosti si rozoberieme nižšie (kompletný zoznam možností tabuľky nájdete tu ).
# 1) MOTOR
Používa sa na určenie úložného modulu pre tabuľku, t. J. Predvolená hodnota je InnoDB. Toto nie je potrebné meniť, pokiaľ neexistujú potreby konkrétneho úložného modulu. Ďalšie platné hodnoty pre úložné motory sú MEMORY, CSV, HEAP atď.
Syntax pre špecifikáciu ENGINE ako súčasti tabuľky MySQL CREATE TABLE je uvedená nižšie.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100) )ENGINE='MEMORY';
# 2) AUTO_INCREMENT
Táto možnosť sa používa na nastavenie počiatočnej hodnoty AUTO_INCREMENT tabuľky, t. J. Predvolená hodnota je 1, môžete ju však prepísať na akúkoľvek inú kladnú celočíselnú hodnotu.
Poznámka: AUTO_INCREMENT je možné určiť iba pre jeden stĺpec v tabuľke a mal by to byť primárny kľúč. Pozrime sa na príklad určenia automatického prírastku ako 10 a vloženia záznamu na overenie, či je automatický prírastok nastavený správne.
Používame tú istú tabuľku employee_details (pred spustením tohto príkazu nezabudnite zrušiť existujúcu tabuľku) s ďalším poľom id označeným ako primárny kľúč.
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 riadok bez akejkoľvek hodnoty pre ID a zabezpečme, aby sa hodnoty vkladali od hodnoty začínajúcej 10.
INSERT INTO SAMPLE_DB.employee_details(name,age,address) values ('aman kumar',20,'mumbai'); select * from SAMPLE_DB.employee_details;
# 3) KONTROLNÝ SÚČET
Toto by malo byť nastavené na 1, ak chcete mať uložený kontrolný súčet pre celú tabuľku. Spravidla sa používa na zabezpečenie toho, aby neboli poškodené tabuľky.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100) )CHECKSUM=1;
KONTROLNÝ SÚČET udržuje živý kontrolný súčet celej tabuľky počas akýchkoľvek vkladaní alebo aktualizácií
VYTVORIŤ TABUĽKU s podrobnosťami o rozdelení
Môžeme tiež spomenúť Používateľom definované rozdelenie, ak je to potrebné, pomocou možností rozdelenia.
Rozdelenie ako koncept sa široko používa na distribúciu obsahu tabuliek v systéme súborov, aby sa zabezpečil rýchlejší čas prístupu a optimalizované dotazy. Rozdelenie rozdelí veľkú tabuľku na menšie tabuľky v závislosti od zadaných stratégií alebo kľúčov rozdelenia.
Pozrime sa, ako môžeme určiť podrobnosti rozdelenia pomocou príkazu MySQL CREATE TABLE.
Použijeme vzorovú tabuľku employee_details a pridáme nový celočíselný stĺpec s názvom department_id, ktorý by sa použil ako hash kľúč oddielu, aby sme mali rovnomerné rozloženie údajov.
Tiež určenie počtu oddielov by naznačovalo, koľko skutočných oddielov by bolo vytvorených (v tomto prípade 4). Ak nie je zadané, v predvolenom nastavení by existoval iba 1 oddiel.
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: Kľúč, ktorý by sa použil na vytvorenie oddielov, by vo všeobecnosti závisel od očakávaných prístupových vzorov, ktoré by sa použili pre tabuľku. V takom prípade predpokladajme, že by sme väčšinu času dotazovali tabuľku na základe ID oddelenia, potom by malo mať zmysel mať ako súčasť hash kľúča department_id.
Klonovanie a kopírovanie tabuľky MySQL
Občas môžete vytvoriť klon existujúcej tabuľky alebo skopírovať obsah z jednej tabuľky do druhej. MySQL podporuje 2 spôsoby, ako to dosiahnuť, ako je uvedené nižšie.
- Pomocou príkazu LIKE
- Pomocou príkazu SELECT
Klonovanie tabuľky pomocou LIKE COMMAND
Príkazom LIKE môžete vytvoriť novú tabuľku s presne rovnakými názvami a vlastnosťami stĺpcov ako existujúce tabuľky.
Tu je syntax pomocou príkazu LIKE.
otázky na pohovore o Maven a Jenkins
CREATE TABLE tableName1 LIKE tableName2
Pomocou vyššie uvedeného príkazu by sa vytvorila nová tabuľka, tj. TableName1 s rovnakou štruktúrou a vlastnosťami ako tableName2.
Upozorňujeme, že pri tomto prístupe sa klonujú iba názvy a vlastnosti stĺpcov, a nie skutočné údaje tabuľky.
Skúsme vytvoriť tabuľku s názvom employee_details a pomocou tejto tabuľky vytvoríme novú tabuľku s názvom student_details pomocou 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;
Nižšie je uvedený výstup vyššie uvedeného príkazu.
Klonovanie tabuľky pomocou príkazu SELECT COMMAND
Tento prístup používa príkaz SELECT na vytvorenie kópie existujúcej tabuľky do novej tabuľky.
Týmto prístupom sa dáta z tabuľky tiež skopírujú do novej tabuľky.
CREATE TABLE tableName1 AS SELECT * FROM tableName2;
Skúsme vytvoriť tabuľku s názvom employee_details a pomocou tejto tabuľky vytvoríme novú tabuľku s názvom student_details pomocou možnosti SELECT.
CREATE TABLE SAMPLE_DB.student_details AS SELECT * FROM SAMPLE_DB.employee_details;
Konvencie pre pomenovanie tabuliek MySQL
V predchádzajúcich častiach sme sa dozvedeli o vytváraní tabuliek MySQL. Teraz sa pozrime na niektoré pravidlá, ktoré by ste mali mať na pamäti pri pomenovávaní tabuliek spolu s obmedzeniami, ktoré platia pre MySQL.
najlepší softvér na vytváranie vývojových diagramov
Tieto konvencie / pravidlá platia pre tabuľky SQL aj pre databázy.
# 1) Zákonné znaky v menách
do) Nekotifikované mená môžu pozostávať z ľubovoľných znakov v predvolenej znakovej sade servera SQL Server s výnimkou, že nie všetky znaky môžu byť číslice. Napríklad, „23test“ je platný názov tabuľky, ale nie „2345“.
Ďalej je uvedený zoznam znakov, ktoré možno použiť pre nekótované mená:
ASCII: (0-9, a-z, A-Z $ _) (základné latinské písmená, číslice 0-9, dolár, podčiarkovník)
Rozšírené: U + 0080 .. U + FFFF
Získajte viac informácií o kódoch ASCII tu
b) Názvy tabuliek a databáz môžu byť citované spätným znakom (`) a môžu obsahovať akékoľvek písmeno / znak okrem samotného spätného znaku. S uvedenými názvami môžete mať dokonca názvy tabuliek / databáz so všetkými číslicami.
Upozorňujeme, že v prípade týchto tabuliek by ste na prístup k údajom v týchto tabuľkách museli použiť spätné odkazy okolo tabuľky alebo názov databázy.
c) Názvy tabuliek a databáz nemôžu obsahovať bodku „.“, Ktorá sa používa ako oddeľovač databáz a tabuliek.
d) Názvy databázy a tabuľky môžu obsahovať - špeciálne znaky „$“ a „_“.
# 2) Dĺžka mena
Maximálna povolená dĺžka názvu databázy alebo tabuľky v MySQL je 64 znakov.
# 3) Kvalifikátory mien
Ako už bolo spomenuté v predchádzajúcich častiach, v MySQL je tabuľka vždy v kontexte s databázou, ktorej je súčasťou. Z tohto dôvodu môžete na prístup k tabuľke použiť úplný názov tabuľky - čo nie je nič iné ako kombinácia názvu databázy oddelená bodkou a potom názvom stĺpca.
Napríklad, ak chcete vybrať všetky prvky z tabuľky „EMPLOYEE_DETAILS“ z databázy SAMPLE_DB, môžete použiť úplný názov, ako je uvedené nižšie.
SELECT * from SAMPLE_DB.EMPLOYEE_DETAILS;
Názvy databáz a tabuliek je možné určiť aj tak, ako sú uvedené samostatne pomocou spätných kliknutí, ako je uvedené nižšie.
SELECT * from `SAMPLE_DB`.`EMPLOYEE_DETAILS`;
Nižšie sú uvedené konvencie a osvedčené postupy týkajúce sa pomenovacích tabuliek a databáz.
- Pomenujte tabuľky a databázy malými písmenami - To vo všeobecnosti urýchľuje písanie a dopytovanie v databáze, najmä pre tých, ktorí sa zaoberajú každodenným dopytovaním v databáze.
- Namiesto medzier v názvoch tabuliek a db použite podčiarkovníky („_“) - Vďaka tomu sú mená čitateľnejšie.
- Pre tabuľky a databázy používajte vysvetľujúce názvy - Napríklad, tabuľku obsahujúcu podrobnosti o zamestnancovi je možné pomenovať rôznymi spôsobmi, ako zamestnanec_info, zamestnanec_data, zamestnanec, zamestnanec_podrobnosti, zamestnanec_názov_adresa. Malo by zmysel zvoliť názov, ktorý je najviac vysvetľujúci. Napríklad, môžeme zvoliť názov tabuľky ako employee_details alebo employee_info. Aj keď ide o subjektívnu diskusiu, malo by sa na nej dohodnúť viac členov tímu, ktorí tieto entity použijú a vytvoria.
- Nepoužívajte čísla v názvoch databáz a tabuliek - Rovnako ako sample_db_2, test_table_1 atď.
Často kladené otázky a odpovede
Otázka č. 1) Ako vytvoriť tabuľku v MySQL pomocou indexu?
Odpoveď: INDEX môžete pridať proti ľubovoľnému stĺpcu (alebo kombinácii stĺpcov) počas samotného vytvárania tabuľky.
Pozrime sa na príklad pridania indexu do stĺpca department_id pre tabuľku 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) Ako vytvoriť tabuľku s dátumom v MySQL?
Odpoveď: Dátum je dátový typ, ktorý by mal byť pri vytváraní tabuľky priradený k ľubovoľnému stĺpcu.
Pozrite si nižšie uvedený príkaz CREATE TABLE so stĺpcom joining_date, ktorý má ako údajový typ DATETIME vzorovú tabuľku 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) Ako vidím štruktúru tabuľky v MySQL?
Odpoveď: Ak chcete po vytvorení tabuľky odkazovať na jej štruktúru, ako sú stĺpce, indexy atď., Môžete pomocou príkazu DESCRIBE načítať podrobnosti.
Syntax:
DESCRIBE tableName;
Vytvorme tabuľku a pozrime sa na výstup prí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;
Ďalej je uvedený výstup príkazu DESCRIBE.
Otázka č. 4) Ako pridám CUDZÍ KLÍČ do tabuľky v MySQL?
Odpoveď: Cudzí kľúč sa používa na spojenie dvoch tabuliek v MySQL. Ak chcete použiť obmedzenie cudzieho kľúča, mali ste už vytvoriť tabuľku, na ktorú odkazujete.
>> Viac informácií o Obmedzenie cudzieho kľúča MySQL
Skúsme to pochopiť na príklade. Povedzme, že máme 2 tabuľky, t. J. Oddelenie (ktoré obsahuje podrobnosti o rôznych oddeleniach, ktoré má vysoká škola) a študentské podrobnosti (všetky podrobnosti týkajúce sa študentov).
Oddelenie má stĺpce - id (primárny kľúč) a meno.
Podrobnosti o študentovi - id (primárny kľúč), vek, adresa a department_id (cudzí kľúč uvedený v tabuľke oddelení).
Ďalej je uvedená syntax príkazu CREATE TABLE pre obidve tieto tabuľky.
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 );
Pozrite si syntax odkazu FOREIGN KEY v tabuľke student_details, kde sme uviedli vzťah medzi stĺpcami a na ID_záznamu by sa malo odkazovať podľa ID stĺpca z tabuľky oddelenia.
Záver
Tu bol podrobne vysvetlený príkaz CREATE TABLE v MySQL, ktorý patrí k príkazom v kategórii Data Definition Language.
Dozvedeli sme sa o rôznych možnostiach tabuľky ako ENGINE, CHECKSUM atď., Ktoré je možné spomenúť spolu s príkazom CREATE TABLE, aby sme pre tabuľku nastavili ďalšie vlastnosti.
Prešli sme si spôsobmi, ako vytvoriť klon existujúcej tabuľky v MySQL. Nakoniec sme hovorili o konvenciách pomenovania názvov tabuliek spolu s osvedčenými postupmi odporúčanými v tomto odbore.
Príjemné čítanie !!
Odporúčané čítanie
- Výukový program na vytvorenie prehľadu MySQL s príkladmi kódu
- Dátové typy MySQL Aké sú rôzne typy údajov v MySQL
- MySQL Vložiť do tabuľky - Vložiť syntax príkazov a príklady
- Výukový program MySQL JOIN: Vnútorný, Vonkajší, Krížový, Ľavý, Pravý a Ja
- Rozdiel medzi serverom SQL Vs MySQL Vs SQL Server (s príkladmi)
- Ako používať príkaz PL SQL Na vkladanie, aktualizáciu, mazanie a výber
- Výukový program na vytvorenie databázy MongoDB
- MongoDB Vytvorte používateľa a priraďte úlohy s príkladmi