Aktuálně: Postihly zákazy tvou profesi? Poptávka po ajťácích prudce roste, využij slevové akce 30% výuky zdarma!
Pouze tento týden sleva až 80 % na e-learning týkající se PHP
PHP týden

Lekce 2 - Oracle krok za krokem: Vytvoření schématu a tabulky Nové

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.

Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

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 - INT
  • jmeno - VARCHAR2(60)
  • prijmeni - VARCHAR2(60)
  • datum_narozeni - DATE
  • pocet_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ů.


 

Předchozí článek
Oracle krok za krokem: Úvod do Oracle a příprava
Všechny články v sekci
Oracle
Článek pro vás napsal Jan Hranický
Avatar
Jak se ti líbí článek?
Ještě nikdo nehodnotil, buď první!
Aktivity (10)

 

 

Komentáře

Avatar
Jiří Šulc
Člen
Avatar
Jiří Šulc:22. ledna 11:53

Ahoj, chci se zeptat jen obecně, v jakých časových intervalech budou přibývat další díly tohoto kurzu? Děkuji

 
Odpovědět
22. ledna 11:53
Avatar
mixxy
Člen
Avatar
mixxy:28. ledna 19:09

Ahoj, ctu clanek a prijde mi trosku zavadejici. Autor si nevybral moc dobre databazi, protoze pouzival pluggable databazi, kde je jina politika schemat musi se tvorit uzivatele v rootu a v dalsich PDB. U nepluggable databazi se tvori uzivatele bez c##. A male doplneni schema=user.

K tvym prikazum:
CREATE USER noveSchema identified by nove;
GRANT CONNECT TO noveSchema;
GRANT UNLIMITED TABLESPACE TO noveSchema;
GRANT CREATE TABLE TO noveSchema;

Je to takove kostrbate, protoze jsi nedal uzivateli zadnou defaultni tablespace, takze se ti budou tabulu delat buh vi kde. Z oblasti sekurity bych ti doporucil nepouzivat grant connect, protoze tohle je velice mocny grant, je lepsi nagrantovat create session. Takze:

create user xxxx identfied by 'xxxxx' default tablespace USERS temporary tablespace XXXX quota unlimited on USERS;
grant create session to xxxx;

Odpovědět
28. ledna 19:09
Neni dulezite mnoho vedet a znat. Dulezite je vedet, co je treba.
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Dan Ma
Člen
Avatar
Dan Ma:30. ledna 19:37

Trochu je mi líto pana Hranického. Pustil se do velmi náročného úkolu popsat trochu jak funguje DB ORACLE. Možná by pomohlo uvádět i odkazy na velmi kvalitní dokumentaci, kde by zájemci našli upřesnění "drobných nepřesností".
Objekty Schema
Přesná definice z výše uvedeného zdroje:
Schéma je kolekce logických struktur dat nebo objektů schématu. Schéma je vlastněno uživatelem databáze a má stejný název jako tento uživatel. Každý uživatel vlastní jedno schéma. Objekty schématu lze vytvářet a manipulovat s nimi pomocí SQL a zahrnují následující typy objektů: atd.
Přeji autorovi ať se mu podaří novým zájemcům alespoň trochu osvětlit možnosti DB ORACLE. Disponuje i pěkným programovacím jazykem PL/SQL.

Odpovědět
30. ledna 19:37
Nenechat se vyděsit.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.