ALTER TABLE jmeno_tabulky
RENAME TO nove_jmeno_tabulky;
CREATE TABLE lide (
jmeno TEXT CONSTRAINT jedinecne_jmeno PRIMARY KEY,
vek INT
);
CREATE TABLE lide (
jmeno TEXT,
vek INT CONSTRAINT uz_asi_po_smrti
CHECK( VEK < 150)
);
CREATE TABLE lide (
jmeno TEXT CONSTRAINT jedinecne_jmeno UNIQUE,
vek INT
);
ALTER TABLE jmeno_tabulky
ADD CONSTRAINT jmeno_PK PRIMARY KEY (jmeno_sloupce);
ALTER TABLE jmeno_tabulky
ADD CONSTRAINT jmeno_omezeni UNIQUE (jmeno_sloupce);
ALTER TABLE jmeno_tabulky
ADD CONSTRAINT jmeno_omezeni CHECK (podmínka);
ALTER TABLE jmeno_tabulky
DROP CONSTRAINT jmeno_omezeni;
ALTER TABLE jmeno_tabulky
ALTER COLUMN jmeno_sloupce SET NOT NULL;
ALTER TABLE jmeno_tabulky
ALTER COLUMN jmeno_sloupce DROP NOT NULL;
ALTER TABLE nazev_tabulky
ALTER COLUMN nazev_sloupce TYPE novy_datovy_typ;
ALTER TABLE nazev_tabulky
RENAME COLUMN nazev_sloupce TO novy_nazev_sloupce;
ALTER TABLE nazev_tabulky
DROP COLUMN nazev_sloupce;
můžeme řadit podle 1 nebo více sloupců
SELECT hodnoceni_csfd, nazev_filmu FROM filmy
ORDER BY hodnoceni_csfd DESC;
vzestupně i sestupně
ASC (Ascending) × DESC (Descending)
SELECT rok_produkce, hodnoceni_csfd, nazev_filmu FROM filmy
ORDER BY rok_produkce ASC, hodnoceni_csfd DESC;
tj. ANO / NE
Operator | Description |
---|---|
< | menší než |
> | větší než |
<= | menší nebo rovno |
>= | větší nebo rovno |
= | rovno |
<> or != | nerovno (různé) |
SELECT hodnoceni_csfd, nazev_filmu FROM filmy
WHERE reziser_prij = 'Hrebejk';
SELECT hodnoceni_csfd, nazev_filmu FROM filmy
WHERE hodnoceni_csfd >= 90;
a | b | a AND b | a OR b |
---|---|---|---|
TRUE | TRUE | TRUE | TRUE |
TRUE | FALSE | FALSE | TRUE |
TRUE | NULL | NULL | TRUE |
FALSE | FALSE | FALSE | FALSE |
FALSE | NULL | FALSE | NULL |
NULL | NULL | NULL | NULL |
SELECT rok_produkce, hodnoceni_csfd, nazev_filmu FROM filmy
WHERE rok_produkce = '2012' AND hodnoceni_csfd > 90;
SELECT naklady, reziser_prij, nazev_filmu FROM filmy
WHERE
(reziser_prij = 'Sverak' OR reziser_prij = 'Menzel')
AND naklady < 1 000 000
ORDER BY naklady;
expression IS NULL
expression IS NOT NULL
SELECT nazev_filmu FROM filmy
WHERE naklady IS NULL;
SELECT premiera, nazev_filmu FROM filmy
WHERE rok_produkce = '2013' AND premiera IS NOT NULL;
Z dokumentace:
Do not write expression = NULL because NULL is not "equal to" NULL. (The null value represents an unknown value, and it is not known whether two unknown values are equal.) This behavior conforms to the SQL standard.
a BETWEEN x AND y
je stejné jako
a >= x AND a <= y
SELECT naklady, nazev_filmu FROM filmy
WHERE naklady BETWEEN 1000000 AND 2000000;
_ (podtržítko) | symbolizuje právě jeden libovolný znak |
% (procento) | symbolizuje libovolný počet znaků |
'abc' LIKE 'abc' | => true |
'abc' LIKE 'a%' | => true |
'abc' LIKE '_b_' | => true |
'abc' LIKE 'c' | => false |
SELECT nazev_filmu FROM filmy
WHERE nazev_filmu LIKE 'Tři%';
Výčet prvků pro porovnávání
SELECT nazev_filmu, reziser_prij
FROM filmy
WHERE reziser_prij IN ('Sverak', 'Menzel');
lze nahradit pomocí OR (zdlouhavěji)
SELECT nazev_filmu, reziser_prij
FROM filmy
WHERE reziser_prij = 'Sverak'
OR reziser_prij = 'Menzel';
...a spousta dalších včetně matematických funkcí (sin(x)) viz odkaz.
SELECT (vynosy – naklady)*0.85 AS zisk FROM filmy
WHERE reziser_prij = 'Sverak'
AND nazev_filmu = 'Vratne lahve';
Pro jednoduchost nevytvářejte další tabulku Režisér (tj. stačí splnit 1. NF).
Vypište z tabulky všechny filmy, které mají podle ČSFD hodnocení vyšší než 80 %. Výstupy seřaďte sestupně podle roku, ve kterém byly produkovány. Sada výsledků nechť obsahuje i příjmení režiséra.
Vypište jména všech režisérů, jejichž filmy se nachází v hodnocení žebříčku „Nejlepší filmy“, nebyly natočeny v Česku a netrvají déle než 2 hodiny. V sadě výsledků uveďte i jméno filmu. Názvy sloupců nechť se zobrazí jako „Reziser“ a „Film“.
Pro zvídavé připomínka spojování tabulek:
SELECT * FROM film INNER JOIN autor ON (film.autor_id = autor.id)
Vyberte jméno a příjmení všech autorů, kteří vytvořili nějaký film mezi roky 1990 a 2010 (Použijte BETWEEN)
Vyberte všechny filmy, které začínají na písmeno "T". (případně si zvolte takové, aby se vybral alespoň jeden film) (Použijte LIKE)
Vyberte filmy, které vyprodukovali režiséři s jejich ID 1, 2 a 3. (Použijte IN)