Difference between revisions of "Tvorba tabulky"

From Wikivyuka
Jump to: navigation, search
m (Nová tabulka)
m (Nová tabulka)
Line 38: Line 38:
 
   plat      NUMBER(6) CHECK (plat < 100000 AND plat > 6200 ),
 
   plat      NUMBER(6) CHECK (plat < 100000 AND plat > 6200 ),
 
   id_oddeleni NUMBER(5) NOT NULL,
 
   id_oddeleni NUMBER(5) NOT NULL,
   CONSTRAINT pk_oso PRIMARY KEY (id_osoba),
+
   CONSTRAINT pk_oso PRIMARY KEY (id_osoba)
 
   );
 
   );
  

Revision as of 06:12, 18 February 2015

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)
  );

ay po vztvoreni primarni tabulkz oddeleni CONSTRAINT fk_odd FOREIGN KEY (id_oddeleni) REFERENCES oddeleni (id_oddeleni)

 ON UPDATE CASCADE
 ON DELETE CASCADE
Datové typy

Kompletní popis datových typů je možno nalézt v dokumentaci Oracle.

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 (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;

Hlavní stránka předmětu