Lekce 2 - Oracle krok za krokem: Vytvoření schématu a tabulky
V minulé lekci, Oracle krok za krokem: Úvod do Oracle a příprava, jsme se seznámili s pojmem databáze a připravili jsme si nástroje pro práci s databází Oracle.
V dnešní lekci si ukážeme, jak vytvořit schéma a v něm tabulku.
Schéma
Pod pojmem schéma se v Oracle databázi myslí soubor tabulek a jiných databázových objektů, které vlastní nějaký uživatel. V databázích obecně je to soubor tabulek a jiných databázových objektů, které dohromady tvoří databázi pro daný systém. V Oracle databázi proto netvoříme nové databáze, tak jak to bývá zvykem u jiných typů databází, ale vytváříme nová schémata.
Tvorba schématu
Schéma vytvoříme příkazem CREATE USER
, to může být
matoucí. O vztahu SCHEMA x USER
, si povíme v jedné z dalších
lekcí. Příkaz, který nám vytvoří schéma noveSchema
, bude
vypadat následovně:
ALTER SESSION SET "_ORACLE_SCRIPT" = TRUE; CREATE USER noveSchema IDENTIFIED BY nove DEFAULT TABLESPACE USERS QUOTA UNLIMITED ON USERS; GRANT ALL PRIVILEGES TO noveSchema;
Prvním řádkem povolíme vytvoření schématu bez nutnosti speciálního
"c##" prefixu. Poté pomocí příkazu CREATE USER
vytvoříme
schéma noveSchema
, kterému přidělíme heslo nove
,
a veškerá práva, ať nás v budoucnu nic neomezuje
Tyto SQL příkazy vykonáváme přes tzv. WORKSHEET:
Zde zadáme všechny příkazy a pak celý skript pustíme přes klávesu F5 a nebo 2. tlačítkem, které je hned vedle tlačítka "play" (zelená šipka).
Teď, když jsme vytvořili schéma, můžeme se na něj napojit.
Připojení
V levém horním rohu klikneme na zelené tlačítko plus a připojení vyplníme následovně:
Název spojení si libovolně nazveme, já jsem zvolil kombinaci názvu
schématu a naší databáze noveSchema_IT_NETWORK_ORACLE_DB
, do
uživatelského jména zadáme noveSchema
a námi zvolené heslo
nove
. Pole pro hostname, port a sid by měly být automaticky
vyplněny. Pokud tak není, zadáme hostname localhost
, port na
kterém běží náš server (defaultně je to port 1521
) a do sid
zadáme xe
. Po kliknutí na tlačítko "Connect" se nám otevře
nové okno:
Tabulka
Když už máme vytvořené nové databázové schéma, tak si ukážeme, jak vytvořit tabulku.
Rozklikneme námi vytvořené schéma a pravým kliknutím na záložku
Tables
vybereme možnost New Table
:
Otevře se nám editor tabulek:
Vytvoříme si tabulku s názvem uzivatele
. Tabulka bude mít 5
sloupců: uzivatele_id
, jmeno
, prijmeni
,
datum_narozeni
, pocet_clanku
. O každém uživateli v
naší tabulce budeme mít záznam o jeho id, jméně, příjmení, datu
narození a počtu článků, které napsal:
Jako datové typy zvolíme:
uzivatele_id
- INTjmeno
- VARCHAR2(60)prijmeni
- VARCHAR2(60)datum_narozeni
- DATEpocet_clanku
- INT
Datový typ INT
přijímá celá čísla v rozpětí
-231 až 231. Při výběru datových typů, se vám
nejspíše na začátku nabídne výběr nejčastěji používaných datových
typů, mezi které patří i datový typ NUMBER
. Tento datový typ
ovšem akceptuje i desetinná čísla a to s přesností na 38 desetinných
míst, proto zvolíme INT
. Jméno a příjmení uživatele
uložíme jako datový typ VARCHAR2
, tento datový typ uchová
krátký text. Musíme mu nastavit jeho maximální délku, v této tabulce
zvolíme velikost na 60 znaků. Poslednímu sloupci přidělíme datový typ
DATE
, tedy datum.
Možná jste si již všimli, že existuje také datový typ
VARCHAR
. Rozdíl mezi VARCHAR
a VARCHAR2
je ten, že datový typ VARCHAR2
nerozeznává hodnotu
null
a prázdný řetězec. V našem případě budou oba údaje
jméno i příjmení povinné a zvolíme proto datový typ
VARCHAR2
.
U každého sloupce zaškrtneme checkbox Not null
. Tím
zajistíme, že všechny hodnoty naší tabulky bude uživatel muset
vyplnit.
Než tabulku vytvoříme, musíme ještě zvolit její primární klíč.
Primární klíč by měla mít každá tabulka. Jedná se o hodnotu, která je
pro každý řádek v tabulce, tedy záznam (v našem případě uživatele),
unikátní. Tuto hodnotu využíváme v databázích pro výběr záznamu z
tabulky, zároveň můžeme díky tomu tabulky propojovat. V tabulce
uzivatele
zvolíme jako primární klíč hodnotu
uzivatele_id
, která bude pro každého uživatele unikátní.
Primární klíč uděláme tak, že klikneme na prázdné políčko vedle
názvu sloupce. Zobrazí se nám zlatý klíč (jako na obrázku výše).
Primárním a cizím klíčům se budeme věnovat více jedné z dalších
lekcí.
Všimněte si, že pod záložkou DDL (Data Definition Language) se skrývá SQL skript, který vytvoří námi definovanou tabulku. Skript vypadá následovně:
CREATE TABLE UZIVATELE ( UZIVATELE_ID INT NOT NULL , JMENO VARCHAR2(60) NOT NULL , PRIJMENI VARCHAR2(60) NOT NULL , DATUM_NAROZENI DATE NOT NULL , POCET_CLANKU INT NOT NULL , CONSTRAINT UZIVATELE_PK PRIMARY KEY ( UZIVATELE_ID ) ENABLE );
Na prvním řádku se nachází příkaz
CREATE TABLE nazev_tabulky
, jehož parametry specifikují obsah
tabulky. Dále vidíme, že jsou specifikovány jednotlivé sloupce tabulky. Za
každou definicí sloupce se také nachází tzv. CONSTRAINT
,
česky by se dalo přeložit jako omezení sloupce NOT NULL
, které
nepovoluje sloupci přijmout hodnotu null
, neboli sloupec tabulky
musí vždy nabývat nějaké neprázdné hodnoty. Kus kódu za definicemi
sloupců:
CONSTRAINT UZIVATELE_PK PRIMARY KEY ( UZIVATELE_ID ) ENABLE
nám vytvoří další CONSTRAINT
, v tomto případě se jedná
o výše zmíněný primární klíč.
Dále si všimněme, že jednotlivé definice sloupců jsou odděleny
čárkou ,
, která v syntaxi jazyka SQL podobně jako v češtině
znamená, že za příkazem následuje další. Na rozdíl od středníku
;
, který značí konec SQL příkazu.
Po stisknutí tlačítka OK
, se nám definovaná tabulka
vytvoří. V našem schématu se zobrazí po rozbalení položky
TABLES
:
Přepnutím do okna schématu se nám otevře možnost psát SQL příkazy ručně:
Zkusme si tedy vytvořit tabulku znova, tentokrát za použití SQL dotazu.
Jako první provedeme příkaz:
DROP TABLE uzivatele;
Příkaz spustíme zelenou šipkou v menu, nebo klávesovou zkratkou CTRL + ENTER. Musíme mít však vybraný řádek s příkazem, jelikož klávesa CTRL+ENTER spustí pouze příkaz na námi vybraném řádku. Řádek vybereme kliknutím myší na řádek. Tento dotaz tedy odstraní námi vytvořenou tabulku, abychom ji mohli vytvořit znova.
Pod oknem pro příkazy se nám zobrazí výstup SQL skriptu, podle kterého můžeme poznat, že se nám příkaz správně provedl a nebo máme někde chybu.
Nyní zadáme dotaz, který nám tabulku vytvoří:
CREATE TABLE UZIVATELE ( UZIVATELE_ID INT NOT NULL , JMENO VARCHAR2(60) NOT NULL , PRIJMENI VARCHAR2(60) NOT NULL , DATUM_NAROZENI DATE NOT NULL , POCET_CLANKU INT NOT NULL , CONSTRAINT UZIVATELE_PK PRIMARY KEY ( UZIVATELE_ID ) ENABLE );
Opět příkaz spustíme a tabulka je na světě. Oracle databáze provádí příkazy v dotazu jeden po druhém od shora dolů, kdybychom tedy zadali příkazy:
DROP TABLE uzivatele; CREATE TABLE UZIVATELE ( UZIVATELE_ID INT NOT NULL , JMENO VARCHAR2(60) NOT NULL , PRIJMENI VARCHAR2(60) NOT NULL , DATUM_NAROZENI DATE NOT NULL , POCET_CLANKU INT NOT NULL , CONSTRAINT UZIVATELE_PK PRIMARY KEY ( UZIVATELE_ID ) ENABLE );
Dostaneme stejný výsledek jako při spuštění příkazů zvlášť.
V příští lekci, Oracle krok za krokem: Vkládání a mazání dat v tabulce, si ukážeme vkládání a mazání záznamů.