Cvičení 2
Opakování z přednášky
TBA
Témata cvičení
- úprava tabulek
- dotazy na tabulku
- mazání a úprava ntic
- programové připojení k databázi
Ú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:
Přidání nového sloupce column_name typu column_type do tabulky name.
ALTER TABLE name ADD COLUMN column_name data_type;
Odebrání sloupce column_name z tabulky name.
ALTER TABLE name DROP COLUMN column_name RESTRICT;
Přejmenování sloupce column_name_old na column_name_new v tabulce name.
ALTER TABLE name RENAME COLUMN column_name_old TO column_name_new;
Změna typu sloupce column_name na data_type v tabulce name.
ALTER TABLE name ALTER COLUMN column_name TYPE data_type,
Přejmenování tabulky name_old na name_new.
ALTER TABLE name_old RENAME TO name_new;
Mnoho dalších variant, které (zatím) používat nebudeme: změny integritních omezení, přesuny tabulek ve schématech, …
Z dokumentace “The key word COLUMN is noise and can be omitted.”
(ukázky)
Dotazy na tabulku - SELECT
Pár příkladů použití SELECT.
Předpokládejme tabulku zvire se sloupci:
- jmeno (varchar(10)),
- druh (varchar (10)),
- vek (smallint),
- pocet_nohou (int),
- srst (boolean),
- supiny (boolean)
- mame_radi (boolean).
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í *.
Podmínky a SELECT výraz
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
Obojí 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)
Příkazy UPDATE a DELETE
Příkaz UPDATE umožňuje měnit hodnoty atributů v n-ticích splňujících dané podmínky.
UPDATE name SET col1 = val1, col2 = val2, ... , coln = valn WHERE condition;
(ukázka)
Příkaz DELETE umožňuje mazat n-tice splňující dané podmínky.
DELETE FROM name WHERE condition;
(ukázka)
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
Pomocí příkazu/ů ALTER TABLE upravte tabulky se zaměstnanci z minulého cvičení do tvaru
- jméno tabulky: employee
- sloupce:
- name typu varchar(20)
- surname 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)
Napište příkazy SELECT nad tabulkou employe s touto charakteristickou vlastností:
- Bezdětný zaměstnanec (a varianta jen s jménem a příjmením).
- Zaměstnanec s kanceláří číslo 007.
- Zaměstnanec, který do zaměstnání nastoupil ještě před vlastním narozením. A variantu pouze s jménem, pohlavím, datem narození a datem nástupu.
- Zaměstnanec který má více dětí než je číslo jeho/její kanceláře.
Přidejte do tabulky employee nové řádky tak, aby každý z příkazů z předchozího úkolu vrátil jedinečný výsledek.
Zksute si nad tabulkou employee libovolné úpravy a mazání ntic.
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, …)