|
![]() | Databázové tabulky | Popis sloupce tabulky | ![]() |
příkaz_CREATE_TABLE ::= CREATE [ IF NOT EXISTS ] TABLE [schéma.]jméno_tabulky [ příznak_tabulky ... ] (popis_elementu {, popis_elementu}... ) příznak_tabulky ::= REC_PRIVILS popis_elementu ::= popis_sloupce | popis_omezení popis_omezení ::= [CONSTRAINT jméno_omezení] { popis_indexu | vnitřní_integritní_omezení | referenční_integritní_omezení }
Příkaz CREATE TABLE vytváří novou databázovou tabulku. Obsahuje popisy jednotlivých sloupců tabulky a popisy omezení, kterým mohou být indexy, vnitřní integritní omezení a referenční integritní omezení.
Není-li v příkazu uvedeno jméno schématu (tj. aplikace), pak:
Maximální délka jména tabulky je 31 znaků. Tabulka musí mít unikátní jméno v rámci schématu. Pokud tabulka zadaného jména již existuje, pak je-li použita klauzule IF NOT EXISTS, příkaz neprovede žádnou akci, v opačném případě dojde k chybě - nastane chybový sqlstate 40004 (KEY_DUPLICITY). Jméno tabulky nesmí obsahovat obrácený apostrof (`). Jméno tabulky může obsahovat tečku, ale nedoporučujeme ji používat, protože v různých situacích je možná záměna s prefixem jména tabulky jménem aplikace.
Omezení mohou, ale nemusejí být pojmenována. Pokud v příkazu CREATE TABLE není uvedeno jméno omezení, pak mu server přidělí implicitní jméno. Jména všech omezení musí být navzájem různá.
Příznaky jsou vlastnosti tabulky specifické pro 602SQL server. V současné verzi se nastavuje pouze příznak Přidělovat práva k jednotlivým záznamům (REC_PRIVILS).
Příklad použití:
CREATE TABLE `Zamestnan` REC_PRIVILS ( cislo INTEGER DEFAULT sekvence_zam.NEXTVAL PRIMARY KEY NOT NULL, jmeno CHAR(12) COLLATE CSISTRING, prijmeni CHAR(20) COLLATE CSISTRING NOT NULL INDEX, dat_nast DATE, plat NUMERIC(14,2) DEFAULT 10000 INDEX CHECK (plat > 0), oddeleni SMALLINT, podobenka BLOB, CONSTRAINT oddel INDEX (oddeleni), CONSTRAINT cele_jmeno INDEX (prijmeni, jmeno) NOT NULL, CONSTRAINT pojisteni INDEX (plat*0.135 DESC), CONSTRAINT zam_oddel FOREIGN KEY (oddeleni) REFERENCES Oddeleni (cislo_odd) ON UPDATE CASCADE INITIALLY DEFERRED)
Demonstrační tabulka nazvaná ZAMESTNAN (obrácené apostrofy by byly nutné, pokud by jméno tabulky obsahovalo např. mezeru apod.) se definuje se záznamovými právy. Jako primární klíč je integer CISLO, jemuž je přidělována hodnota automaticky sekvencí. Sloupec nesmí mít NULL hodnotu. Pro jméno jsou využity dva české řetězce, neunikátní index je jak pro příjmení, tak i pro dvojici příjmení a jméno. Plat je uložen ve sloupci typu NUMERIC(14,2) s implicitní hodnotou 10000 a kontrolou plat>0 a neunikátním indexem. Sloupec ODDELENI je zajímavý tím, že jeho hodnoty se berou z číselníku umístěného v tabulce nazvané ODDELENI (viz referenční integrita). Pokud se číslo oddělení změní v číselníku, změní se i této tabulce - to je zaručeno klauzulí ON UPDATE CASCADE.
![]() | Databázové tabulky | Popis sloupce tabulky | ![]() |