2. díl - PostgreSQL - Vytvoření databáze a tabulky

PostgreSQL PostgreSQL - Vytvoření databáze a tabulky

V minulém dílu seriálu tutoriálů o PostgreSQL jsme si řekli něco o relačních databázích a připravili jsme si prostředí. Dnes si vytvoříme vlastní databázi a do ní nějakou tabulku.

Vytvořme si databázi. V pgAdmin klikněte pravým tlačítkem myši na Databases -> New Database….

Vytvoření nové databáze v pgAdmin

Otevře se okno New Database, v něm vyplňte název nové databáze (Name) a potvrďte.

Název nové databáze v pgAdmin
Nová PostgreSQL databáze v pgAdmin

V databázích je zvykem pojmenovávat položky bez diakritiky, malými písmeny a s podtržítkovou notací. Snad vám je jasné, proč není diakritika dobrý nápad, za velkými a malými písmeny je Linux, který je rozlišuje a většina serverů právě na Linuxu běží.

Nyní máme vše připraveno k tomu, abychom se mohli začít učit jazyk SQL.

Jazyk SQL

SQL označuje Structured Query Language, tedy strukturovaný dotazovací jazyk. SQL je tzv. jazyk deklarativní. Zatímco u imperativních jazyků počítači vlastně říkáme krok po kroku co má udělat, u jazyků deklarativních pouze říkáme co má být výsledkem a již nás nezajímá, jak tohoto výsledku počítač dosáhne. Díky tomu jsou databázové dotazy zjednodušeny na příkaz typu "Vrať mi 10 uživatelů s nejvyšším hodnocením". Databáze takový dotaz pochopí, rozloží si ho na nějaké své instrukce a tak jej zpracuje. Nám poté opravdu vrátí výsledek, aniž bychom tušili, jak k němu došla. Pokud vám příkaz přišel jako nadsázka, tak tomu tak není a příkazy opravdu takto vypadají. Jen jsou anglicky.

SQL se původně jmenovalo SEQUEL (Structured English Query Language) a vzniklo v laboratořích společnosti IBM s cílem vytvořit jazyk, kterým by se dalo komunikovat s databází jednoduchou angličtinou. SQL (relační) databáze se poté rozšiřovaly a ujaly. Dnes se prakticky nic jiného nepoužívá a i když má SQL v objektovém programování značné nevýhody, firmám se nechce přecházet na nic jiného (i když existují alternativní řešení). Ale to jsme odbočili.

Naklikáním databáze nám pgAdmin vygeneroval a spustil příkaz v SQL, který vytvořil novou databázi. Tento SQL příkaz vypadá by asi takto:

CREATE DATABASE moje_databaze;

Přesnou verzi kódu, který byl použit pro vytvoření databáze můžete vidět, když kliknete v pgAdminu na databázi. V pravém dolním okně s názvem "SQL pane" uvidíte celý kód. Hodnoty jako encoding, tablespace, lc_collate atd. jsou použity defaultní a není potřeba se nyní jimi zabývat.

V SQL se většinou píší příkazy velkými písmeny, to proto, že je to lépe odliší od zbytku dotazu nebo od kódu naší aplikace (např. v PHP či Javě). Názvy tabulek, sloupců a další identifikátory jsou naopak malými písmeny a podtržítkovou notací.

Zkuste si databázi odstranit (kliknutí pravým tlačítkem myši na databázi, kterou chcete odstranit -> Delete/Drop -> potvrdit. Odstranit databázi se vám nemusí povést, pokud ji někdo používá (je do ní přihlášen).

Odstranění PostgreSQL databáze v pgAdmin

SQL příkaz pro smazání databáze je:

DROP DATABASE moje_databaze;

Už umíme 2 SQL příkazy, vytvoření databáze a její odstranění. Ani jeden ale v naší aplikaci asi používat nebudeme, protože databázi si stačí vytvořit jen jednou a můžeme to udělat takto jednoduše v administračním nástroji. To samé platí pro tvorbu tabulek. Teprve samotná práce s daty v SQL pro nás bude klíčová, brzy se k ní dostaneme.

Spuštění SQL dotazu

Nyní si databázi opět vytvoříme (viz postup výše). Označte myší nově vytvořenou databázi. V horní liště se vám zpřístupní tlačítko SQL.

Tlačítko SQL v pgAdmin

Klikněte na něj a otevře se nové okno "Query" se záložkou "SQL Editor". Do horního levého okna je možné zadávat SQL příkazy a okně "Output pane" se zobrazí výsledek.

SQL příkazy v pgAdmin

Nyní si vytvoříme tabulku. Vzpomeneme si na příklad tabulky uživatelů, co jsme si ukázali v minulém dílu. Měla sloupce jméno, příjmení, datum narození a počet článků. Již jsme nakousli, že by každá tabulka měla mít sloupec, jehož hodnota je pro každou položku unikátní. Sloupců bude tedy dohromady 5, tabulka se bude jmenovat "uzivatel". Zda budete při názvosloví tabulek používat jednotné či množné číslo záleží zcela na vás. Doporučuji ale být v tomto konzistentní. Pokud tabulky budete pojmenovávat v jednotném čísle, používejte to tak pro všechny tabulky. Pokud se rozhodnete pro množné číslo, platí to také. Hlavně nekombinujte oba způsoby. Tabulku je možné vyklikat i v pgAdmin.

Otevřeme okno pro vytvoření nové tabulky (moje_databaze -> Schemas -> public -> Tables -> pravým tlačítkem myši -> New Table). V záložce properties vyplníme název nové tabulky (Name).

Vytvoření nové PostgreSQL tabulky pomocí pgAdmin

Přepneme se do záložky pro definování sloupců (Columns). Pomocí tlačítka přidat (Add) přidáme požadovaný počet a typ sloupců. Po kliknutí na tlačítko přidat (Add) se otevře nové okno s názvem New Column. Vyplníme název sloupce (Name) a datový typ (Data type). U určitých datových typů je třeba uvést i velikost daného datového typu (Length).

Datový typ představuje typ dat, který bude v daném sloupci uložen. Id záznamu (uzivatel_id) bude používat datový typ celé číslo (integer).

Typ sloupce v pgAdmin

Sloupec pro jméno a příjmení bude datového typu textový řetězec (character varying). U tohoto datového typu je třeba uvést, jakou maximální délku řetězce (počet znaků) může daný text obsahovat. V našem případě nadefinujeme, že maximální délka řetězce bude 60 znaků. To by pro uložení jména nebo příjmení mělo stačit.

Sloupec jméno typu character varying v pgAdmin
Sloupce tabulky v pgAdmin

Sloupec pro uložení data narození bude datového typu date.

Sloupec typu date v pgAdmin

Počet článků bude opět používat datový typ integer (celé číslo).

Sloupce v PostgreSQL databázi

Sloupec uzivatel_id označíme jako primární klíč. To znamená, že databáze bude kontrolovat, zda se v tomto sloupci nenachází stejné hodnoty. Pokud bychom do tohoto sloupce chtěli vložit hodnotu, která se tu již nachází, dostali bychom chybu. Primární klíč je forma omezení (constraint), které se aplikuje na daný sloupec. Primární klíč znamená, že v daném sloupci se nachází jedinečné hodnoty. Primární klíč by měla mít každá tabulka (i když teoreticky nemusí). Když budeme chtít uživatele např. vymazat, vymažeme ho podle tohoto klíče (tedy podle uzivatele_id). Kdybychom ho mazali podle jména, smazali bychom několik položek, protože třeba Janů Nováků tam může být více. Podle uzivatele_id vymažeme vždy jen toho jednoho.

V pgAdmin primární klíč nastavíme tak, že se přepneme do záložky Constraints -> zvolíme Primary Key -> Add.

Constraints v pgAdmin

Otevře se okno New Primary Key, ve kterém vyplníme název. My si jej nazveme uzivatel_id_pk.

Název primárního klíče v pgAdmin

Nyní se přepneme na záložku Columns, kde určíme, na který sloupec tabulky se má tento primární klíč použít (vybereme sloupec a klikneme na Add).

Výběr sloupce pro primární klíč v pgAdmin
Primární klíč v pgAdmin
Omezení v pgAdmin

Pokud máme přidán primární klíč, potvrdíme vytvoření nové tabulky.

Nová PostgreSQL tabulka v pgAdmin

SQL příkaz pro vygenerování tabulky vypadá následovně.

CREATE TABLE uzivatel
(
  uzivatel_id integer NOT NULL,
  jmeno character varying(60),
  prijmeni character varying(60),
  datum_narozeni date,
  pocet_clanku integer,
  PRIMARY KEY (uzivatel_id)
);

První řádek je jasný (příkaz pro vytvoření tabulky), na dalších řádcích se definují jednotlivé sloupce tabulky a jejich datový typ. U typu character varying uvedeme i počet znaků. Nakonec přidáme omezení (constraint) jako primární klíč na uzivatele_id.

Odstranění tabulky je stejné jako odstranění databáze. V pgAdmin ji odstraníte kliknutím pravým tlačítkem na tabulku a zvolením Delete/Drop.

Odstranění tabulky v pgAdmin

V SQL by byl příkaz následující.

DROP TABLE uzivatel;

SQL příkaz pro vytvoření tabulky uzivatel lehce vylepšíme. U sloupce uzivatel_id používáme datový typ integer. To je naprosto v pořádku, ale vzhledem k tomu, že tento sloupec bude sloužit pouze jako identifikátor záznamů, můžeme použít datový typ serial. Serial není skutečný datový typ, ale ulehčení, které PostgreSQL nabízí. V případě, že uvedeme serial, se vytvoří sloupec s datovým typem integer, který bude automaticky při vložení záznamu do tohoto sloupce vkládat hodnotu, a tato hodnota se bude automaticky navyšovat. Nový SQL příkaz pro vytvoření tabulky je následující.

CREATE TABLE uzivatel
(
  uzivatel_id serial,
  jmeno character varying(60),
  prijmeni character varying(60),
  datum_narozeni date,
  pocet_clanku integer,
  PRIMARY KEY (uzivatel_id)
);

Nyní si zkuste tabulku dropnout a poté znovu vložit pomocí SQL příkazu. Klikněte na tlačítko SQL, které vám otevře SQL Editor. Do horního levého okna vložte váš SQL příkaz a klikněte na tlačítko Execute query (zelená šipka play).

Spuštění PostgreSQL příkazu v pgAdmin

Příště si tabulku naplníme nějakými daty :)


 

  Aktivity (1)

Článek pro vás napsal vita
Avatar
vita

Jak se ti líbí článek?
Celkem (2 hlasů) :
55555


 



 

 

Komentáře

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.

Zatím nikdo nevložil komentář - buď první!