SQL příkaz CREATE slouží pro vytváření nových objektů v databázi, konkrétně například tabulek. Právě na to, jak se vytvářejí tabulky s příslušnými sloupci/atributy se v tomto příspěvku podíváme. Pojďme tedy společně namířit zraky na syntaxi CREATE TABLE.
Jazyk SQL vznikl v 70. letech minulého století a od té doby se rozvíjel.Jak už jsme psali v úvodním díle našeho speciálu věnovaného SQL, budeme vycházet ze syntaxe příkazů tak, jak jsou implementovány v oblíbeném databázovém systému MySQL; nicméně většina zde uvedených informací platí pro jazyk SQL obecně, nezávisle na implementaci.
A ještě ke způsobu zápisu syntaxe: Příkazy v hranatých závorkách jsou volitelné, použít je tedy lze, ale nejsou nezbytné.
Základní syntaxe příkazu CREATE při vytváření tabulky vypadá takto:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [table_options] [partition_options]
Klíčovým slovem TEMPORARY můžete, jak už název napovídá, vytvořit dočasnou tabulku, která je viditelná pouze při aktuálním spojení. K jejímu vytvoření musíte mít příslušná práva.
Klíčová slova/podmínka IF NOT EXISTS znamená, že tabulka je vytvořena, pokud již neexistuje – zabrání se tedy případnému hlášení chyby, pokud tabulka stejného jména již existuje. Pozor: Nekontroluje se, zda je shodná také struktura tabulky.
Za jménem tabulky následuje její definice, resp. definice sloupců (atributů), následujíc volitelné parametry tabulky a parametry pro partitions (pokud je vaše verze databáze podporuje, jsou povoleny a vy je používáte).
A teď už konkrétní příklad použití MYSQL příkazu CREATE TABLE, který může vypadat třeba takto:
CREATE TABLE IF NOT EXISTS tabulka (id INT, jmeno CHAR(20) CHARACTER SET utf8 COLLATE utf8_bin, vek INT, narozen DATE, PRIMARY KEY (id) ) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_bin
Vytvořena bude tabulka s názvem tabulka se sloupcem (atributem) id typu int, jmeno typu char délky 20 znaků (pozor, u starších verzí MySQL před 4.1 jde o počet bajtů), vek typu int a narozen typu date. Primárním klíčem je sloupec id, použitý engine bude InnoDB, kódování ve znakové sadě utf8 a řazení dle utf8_bin.
Jako datové typy sloupců máte v MySQL k dispozici možnosti: TINYINT, SMALLINT, MEDIUMINT, INT, INTEGER, BIGINT (celočíselné hodnoty i s možností UNSIGNED, tedy bez znaménka), REAL, DOUBLE, FLOAT, DECIMAL, DATE, TIME, TIMESTAMP, DATETIME, YEAR, CHAR, VARCHAR (u znakových proměnných s možností výběru znakové sady a řazení), BINARY, VARBINARY, TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB, TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT (u textových proměnných opět s možností výběru znakové sady a řazení), ENUM a SET (s vypsanými hodnotami).
Z volitelných parametrů stojí za zmínku určitě ještě alespoň AUTO_INCREMENT pro automatické zvyšování hodnoty atributu při vložení nového řádku.
Velkou výhodou aktuální situace je fakt, že díky nástrojům, jako je phpMyAdmin se je možné příkazům SQL při tvorbě řady aplikací z velké části vyhnout – třeba při vytváření tabulek – a při psaní php kódu pak v jednoduchých případech s výhodou využít SQL příkazů generovaných přímo phpMyAdmin. Lze se tak vyhnout pročítání dokumentace – alespoň do chvíle, než narazíte na náročnější konstrukce. Začátky práce s SQL databázemi ale dostupné nástroje bezesporu výrazně usnadňují.
Jazyk SQL (z anglického Structured Query Language) asi není třeba dlouze představovat: Řada uživatelů počítačů jej zná z desktopových databází...