2. diel - Oracle krok za krokom: Vytvorenie schémy a tabuľky
V minulej lekcii, Oracle krok za krokom: Úvod do Oracle a príprava , sme sa zoznámili s pojmom databázy a pripravili sme si nástroje pre prácu s databázou Oracle.
V dnešnej lekcii si ukážeme, ako vytvoriť schému a v ňom tabuľku.
Schéma
Pod pojmom schéma sa v Oracle databáze myslí súbor tabuliek a iných databázových objektov, ktoré vlastní nejaký používateľ. V databázach všeobecne je to súbor tabuliek a iných databázových objektov, ktoré dohromady tvoria databázu pre daný systém. V Oracle databázu preto nevytvárame novej databázy, tak ako to býva zvykom u iných typov databáz, ale vytvárame nové schémy.
Tvorba schémy
Schéma vytvoríme príkazom CREATE USER
, to môže byť
mätúce. O vzťahu SCHEMA x USER
, si povieme v jednej z ďalších
lekcií. Lokálne vytvorenie užívatelia musia obsahovať v mene prefix
c##
alebo C##
, túto požiadavku možno obísť
povolením nezdokumentovaného skriptu _ORACLE_SCRIPT
. Aby sme
zamedzili systémové zmene, povolíme tento skript iba na toto sedenie,
anglicky session
. Celý príkaz, ktorý nám vytvorí schému
noveSchema
vyzerá nasledovne:
ALTER SESSION SET "_ORACLE_SCRIPT"=true; CREATE USER noveSchema identified by nove; GRANT CONNECT TO noveSchema; GRANT UNLIMITED TABLESPACE TO noveSchema; GRANT CREATE TABLE TO noveSchema;
Prvý príkaz ALTER SESSION SET
, povolí skripty pod ním.
Ďalej pomocou príkazu CREATE USER
vytvoríme schému
noveSchema
, ktorému pridelíme heslo nove
. Ďalej
udelíme práva pre pripojenie, tvorbu neobmedzeného množstva tabuliek a
samotné právo pre tvorbu tabuliek.
Tieto SQL príkazy vykonávame cez tzv. Worksheet:
Tu zadáme všetky príkazy a potom celý skript pustíme cez klávesu F5 a alebo 2. tlačidlom, ktoré je hneď vedľa tlačidla "play" (zelená šípka).
Teraz, keď sme vytvorili schému, môžeme sa na neho napojiť.
Pripojenie
V ľavom hornom rohu klikneme na zelené tlačidlo plus a pripojenie vyplníme nasledovne:
Názov spojenia si ľubovoľne nazveme, ja som zvolil kombináciu názvu
schémy a našej databázy noveSchema_IT_NETWORK_ORACLE_DB
, do
používateľského mena zadáme noveSchema
a nami zvolené heslo
nove
. Pole pre hostname, port a sid by mali byť automaticky
vyplnené. Ak tak nie je, zadáme hostname localhost
, port na
ktorom beží náš server (defaultne je to port 1521
) a do sid
zadáme xe
. Po kliknutí na tlačidlo "Connect" sa nám otvorí
nové okno:
Tabuľka
Keď už máme vytvorené nové databázové schéma, tak si ukážeme, ako vytvoriť tabuľku.
Rozkliknite nami vytvorené schému a pravým kliknutím na záložku
Tables
vyberieme možnosť New Table
:
Otvorí sa nám editor tabuliek:
Vytvoríme si tabuľku s názvom uzivatele
. Tabuľka bude mať 5
stĺpcov: uzivatele_id
, jmeno
, prijmeni
,
datum_narozeni
, pocet_clanku
. O každom užívateľovi
v našej tabuľke budeme mať záznam o jeho id, mene, priezvisko, dátum
narodenia a počtu článkov, ktoré napísal:
Ako dátové typy zvolíme:
uzivatele_id
- INTjmeno
- VARCHAR2 (60)prijmeni
- VARCHAR2 (60)datum_narozeni
- DATEpocet_clanku
- INT
Dátový typ INT
prijíma celé čísla v rozpätí -2
31 až 2 31. Pri výbere dátových typov, sa vám
pravdepodobne na začiatku ponúkne výber najčastejšie používaných
dátových typov, medzi ktoré patrí aj dátový typ NUMBER
. Tento
dátový typ však akceptuje aj desatinné čísla a to s presnosťou na 38
desatinných miest, preto zvolíme INT
. Meno a priezvisko
užívateľa uložíme ako dátový typ VARCHAR2
, tento typ údajov
uchová krátky text. Musíme mu nastaviť jeho maximálnu dĺžku, v tejto
tabuľke zvolíme veľkosť na 60 znakov. Poslednému stĺpci pridelíme
dátový typ DATE
, teda dátum.
Možno ste si už všimli, že existuje aj dátový typ VARCHAR
.
Rozdiel medzi VARCHAR
a VARCHAR2
je ten, že dátový
typ VARCHAR2
nerozoznáva hodnotu null
a prázdny
reťazec. V našom prípade budú oba údaje meno aj priezvisko povinné a
zvolíme preto dátový typ VARCHAR2
.
Pri každom stĺpca zaškrtneme checkbox Not null
. Tým
zabezpečíme, že všetky hodnoty našej tabuľky bude užívateľ musieť
vyplniť.
Než tabuľku vytvoríme, musíme ešte zvoliť jej primárny kľúč.
Primárny kľúč by mala mať každá tabuľka. Ide o hodnotu, ktorá je pre
každý riadok v tabuľke, teda záznam (v našom prípade používateľa),
unikátne. Túto hodnotu využívame v databázach pre výber záznamu z
tabuľky, zároveň môžeme vďaka tomu tabuľky prepájať. V tabuľke
uzivatele
zvolíme ako primárny kľúč hodnotu
uzivatele_id
, ktorá bude pre každého užívateľa unikátna.
Primárny kľúč urobíme tak, že klikneme na prázdne políčko vedľa názvu
stĺpca. Zobrazí sa nám zlatý kľúč (ako na obrázku vyššie). Primárnym
a cudzím kľúčom sa budeme venovať viac jednej z ďalších lekcií.
Všimnite si, že pod záložkou DDL (D ata D efinition L Anguage) sa skrýva SQL skript, ktorý vytvorí nami definovanú tabuľku. Skript vyzerá nasledovne:
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 prvom riadku sa nachádza príkaz CREATE TABLE nazev_tabulky
,
ktorého parametre špecifikujú obsah tabuľky. Ďalej vidíme, že sú
špecifikované jednotlivé stĺpce tabuľky. Za každú definíciou stĺpca sa
tiež nachádza tzv. CONSTRAINT
, česky by sa dalo preložiť ako
obmedzenie stĺpca NOT NULL
, ktoré nepovoľuje stĺpci prijať
hodnotu null
, čiže stĺpec tabuľky musí vždy nadobúdať
nejaké neprázdne hodnoty. Kus kódu za definíciami stĺpcov:
CONSTRAINT UZIVATELE_PK PRIMARY KEY ( UZIVATELE_ID ) ENABLE
nám vytvorí ďalšie CONSTRAINT
, v tomto prípade sa jedná o
vyššie spomínaný primárny kľúč.
Ďalej si všimnime, že jednotlivé definície stĺpcov sú oddelené
čiarkou ,
, ktorá v syntaxi jazyka SQL podobne ako v slovenčine
znamená, že za príkazom nasleduje ďalšie. Na rozdiel od bodkočiarky
;
, Ktorý značí koniec SQL príkazu.
Po stlačení tlačidla OK
, sa nám definovaná tabuľka
vytvorí. V našom schéme sa zobrazia po rozbalení položky
TABLES
:
Prepnutím do okna schémy sa nám otvorí možnosť písať SQL príkazy ručne:
Skúsme si teda vytvoriť tabuľku znova, tentoraz za použitia SQL dotazu.
Ako prvý vykonáme príkaz:
DROP TABLE uzivatele;
Príkaz spustíme zelenou šípkou v menu, alebo klávesovou skratkou CTRL + ENTER. Musíme mať však vybraný riadok s príkazom, pretože klávesa CTRL + ENTER spustí iba príkaz na nami vybranom riadku. Riadok vyberieme kliknutím myšou na riadok. Tento dotaz teda odstráni nami vytvorenú tabuľku, aby sme ju mohli vytvoriť znova.
Pod oknom pre príkazy sa nám zobrazí výstup SQL skriptu, podľa ktorého môžeme poznať, že sa nám príkaz správne vykonal a alebo máme niekde chybu.
Teraz zadáme dotaz, ktorý nám tabuľku vytvorí:
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äť príkaz spustíme a tabuľka je na svete. Oracle databázy vykonáva príkazy v dotaze jeden po druhom od zhora nadol, keby sme teda zadali prí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 rovnaký výsledok ako pri spustení príkazov zvlášť.
V budúcej lekcii, Oracle krok za krokom: Vkladanie a mazanie dát v tabuľke , si ukážeme vkladanie a mazanie záznamov.