Cvičení 2

Opakování z přednášky

Přednáška neproběhla kvůli státnímu svátku.

Témata cvičení

Úprava tabulek (ALTER TABLE)

Minule někteří z nás narazili na potřebu změnit nějakou tabulku, ať už kvůli překlepu při jejím vytváření, kvůli změně názoru na vhodný typ sloupce, nebo z jiných důvodů. K tomu v SQL slouží příkaz ALTER TABLE.

Nás zajímají zejména varianty:

Z dokumentace “The key word COLUMN is noise and can be omitted.

(ukázky)

Dotazy na tabulku - projekce, restrikce (SELECT)

Zde se budeme pohybovat jen na intuitivní úrovni. Vše důležité k projekcím a restrikcím bude sděleno na přednáškách a poté se k tomu vrátíme i zde. Dnes si jen ukážeme pár příkladů použití SELECT.

Předpokládejme tabulku zvire se sloupci:

Projekce - výběr sloupců tabulky

Mohou nás zajímat jen některé sloupce tabulky, pak použijeme příkaz SELECT následovně:

SELECT col_1, col_2, ... , col_n FROM name;	

(ukázka - příkaz vracející projekci tabulky zvire na sloupce vek, pocet_nohou a mame_radi.)

Výběr všech sloupců pomocí *.

Restrikce - výběr řádků tabulky

Stejně tak nás mohou zajímat jen některé řádky tabulky. To ale znamená, že musíme nějak specifikovat které. K tomu slouží další forma příkazu SELECT, kdy condition je podmínka, kterou musí splnit řádek, pokud má být ve výsledné tabulce:

SELECT * FROM name WHERE condition;

(ukázky - příkaz vracející restrikci tabulky na: zvířata se srstí; zvířata s alespoň 2 nohama, která máme rádi; alespoň 5 let stará zvířata, která nemáme rádi)

Kombinace

Projekce a restrikce lze samozřejmě kombinovat.

SELECT col_1, col_2, ... , col_n FROM name WHERE condition;

(ukázka - výběr druhu a počtu nohou u zvířat, která máme rádi)

Napojení na databázi z programu

K databázi se samozřejmě lze připojit i přímo z nějakého námi vytvářeného programu. Snad každý dostatečně zavedený jazyk má nějakou knihovnu umožňující pohodlnou práci s PostgreSQL.

Server: database.inf.upol.cz:5432 (ukázka Java)

Úkoly

  1. Pomocí příkazu/ů ALTER TABLE upravte tabulky se zaměstnanci z minulého cvičení do tvaru

    • jméno tabulky: zamestnanec
    • sloupce:
      • jmeno typu varchar(20)
      • prijmeni typu varchar(20)
      • birthday typu date
      • job_start_day type date
      • office typu int
      • email type varchar(50)
      • web typu varchar(50)
      • children_count typu smallint
      • gender typu char(1)

    Aktulaizace: pohlavi přejmenováno na gender.

  2. Napište příkazy SELECT, které z tabulky zamestnanec vyberou:

    • Jména a příjmení bezdětných zaměstnanců.
    • Zaměstnance (všechny sloupce), kteří mají kancelář číslo 007.
    • Jméno, pohlaví, datum narození a datum nástupu zaměstnanců, kteří do zaměstnání nastoupili ještě před vlastním narozením.
    • Zaměstnance (všechny sloupce), kteří mají více dětí než je číslo jejich kanceláře.
  3. Přidejte do tabulky zamestnanec nové řádky tak, aby každý z příkazů z předchozího úkolu vrátil jedinečný výsledek.

  4. Zkuste se připojit k databázi na database.inf.upol.cz ze svého oblíbeného programovacího jazyka a něco udělat (CREATE TABLE, SELECT, ALTER TABLE, DROP TABLE, …)