Difference between revisions of "Tvorba tabulky"
m (→Zrušení tabulky) |
m (→Zrušení tabulky) |
||
Line 78: | Line 78: | ||
ALTER TABLE osoba DROP (id_osoba) CASCADE; | ALTER TABLE osoba DROP (id_osoba) CASCADE; | ||
− | |||
[http://gis.vsb.cz/wikivyuka/index.php/Prostorov%C3%A9_datab%C3%A1ze_-_cvi%C4%8Den%C3%AD Hlavní stránka předmětu] | [http://gis.vsb.cz/wikivyuka/index.php/Prostorov%C3%A9_datab%C3%A1ze_-_cvi%C4%8Den%C3%AD Hlavní stránka předmětu] |
Revision as of 09:35, 30 August 2014
Nová tabulka
K založení nové tabulky v databázi slouží příkaz CREATE TABLE. Obsahuje několik povinných údajů. Tabulku musíme pojmenovat, pojmenovat její sloupce a určit datové typy pro tyto sloupce. Seznam konkrétních možných datových typů naleznete v referenční příručce jazyka SQL pro konkrétní SŘBD. Pro Oracle jsou DT uvedeny v dokumentaci Oracle. Dále je možné ke každému sloupci uvést různá omezení - default hodnotu, možnost hodnoty NULL či referenci na jinou tabulku (cizí klíč). Syntaxe příkazu:
CREATE TABLE [nazev_databaze.]nazev_tabulky (<nazev sloupce> <datovy typ> [DEFAULT <konstantni vyraz>] [NULL | NOT NULL] [<omezeni pro sloupec>] |[<omezeni pro tabulku>] [,...n] );
V [] jsou uvedeny nepovinné údaje - například [nazev_databaze.]. Za () je uvedena povinná část <nazev sloupce> <datovy typ> s možným opakováním až n-krát [,...n].
Typy omezení, která při tvorbě tabulky používáme:
PRIMARY KEY - definujeme primární klíč tabulky UNIQUE - definujeme unikátní klíč NOT NULL - definujeme požadavek, kdy se ve sloupci nesmí zadat prázdná hodnota DEFAULT <výraz> - definujeme defaultní hodnotu/y pro sloupec (při vkládání nových záznamů SŘBD automaticky hodnotu vloží) CHECK (<podmínky>) - definujeme podmínky, kterými jsou omezujeme přípustné hodnoty či kombinace hodnot ve sloupcích jednoho záznamu
V případě, že omezení nejsou definována při tvorbě tabulky, je možné příkazem ALTER TABLE omezení přidat či změnit.
Další nepovinnou částí definice je pojmenování pomocí klauzule CONSTRAINT:
CONSTRAINT <nazev_omezeni> <definice omezeni>
Příklad na vytvoření tabulky osoba:
CREATE TABLE osoba ( id_osoba NUMBER(7) NOT NULL, rod_cis VARCHAR2(11) NOT NULL UNIQUE, jmeno VARCHAR2(25) NOT NULL, prijmeni VARCHAR2(30) NOT NULL, dat_naroz DATE, telefon VARCHAR2(50), plat NUMBER(6) CHECK (plat < 100000 AND plat > 6200 ), id_oddeleni NUMBER(5) NOT NULL, CONSTRAINT pk_oso PRIMARY KEY (id_osoba), CONSTRAINT fk_odd FOREIGN KEY (id_oddeleni) REFERENCES oddeleni (id_oddeleni) ON UPDATE CASCADE ON DELETE CASCADE );
Změna tabulky
Změnit strukturu tabulky lze příkazem ALTER TABLE. SQL umožňuje přidávat a rušit sloupce příkazem:
ALTER TABLE <nazev_tabulky> ADD/DROP (<nazev sloupce> [<datovy typ>]);
Přidání sloupce do tabulky OSOBA pak může vypadat takto:
ALTER TABLE osoba ADD/DROP (adresa VARCHAR2(50));
a jeho zrušení:
ALTER TABLE osoba DROP (adresa);
V případě požadavku pouze na změnu definovaného omezení, použijeme nejprve jeho zrušení:
ALTER TABLE <nazev_tabulky> DROP CONSTRAINT <nazev_omezeni>;
a poté vytvoření nového
ALTER TABLE <nazev_tabulky> ADD CONSTRAINT <nazev_omezeni>;
Zrušení tabulky
Pokud potřebujeme zrušit celou tabulku (tj. nejen data, ale i strukturu), je v SQL definován příkaz DROP TABLE.
DROP TABLE <nazev_tabulky>;
S tímto příkazem tedy opatrně, neboť použití
DROP TABLE osoba>;
vymaže celou práci, kterou jsme s tabulkou osoba dosud vykonali.
Pokud by tabulka obsahovala sloupec s cizím klíčem na jinou tabulku, mohla by být porušena referenční integrita dat. Pak si můžeme pomoci restriktivním (implicitně daným) omezením, tak i změnou kaskádního přístupu:
ALTER TABLE osoba DROP (id_osoba) CASCADE;