Obsah lekce:
V této lekci budeme realizovat několik SQL dotazů nad databázovou tabulkou online studentských novin. Tabulka se jmenuje renome_tarticle a má následující atributy (neuvádíme všechy atributy, ale pouze ty podstatné pro naše cvičení):
Pro lepší představu slouží následující obrázek se strukturou tabulky.

Tabulku bychom mohli podle obázku vytvořit ručně nebo použít SQL příkaz pro vytvoření tabulky pomocí jazyka SQL takto:
CREATE TABLE IF NOT EXISTS `renome_tarticle` (
`idtarticle` int(11) NOT NULL auto_increment,
`idccathegory` int(11) NOT NULL default '0',
`idcreporter` int(11) default NULL,
`heading` varchar(255) collate cp1250_czech_cs default NULL,
`descr` mediumtext collate cp1250_czech_cs,
`text` longtext collate cp1250_czech_cs,
`public` tinyint(4) default '0',
`tocome` tinyint(4) default '0',
`mainpage` tinyint(4) default '0',
`mysort` mediumint(9) default '0',
`mysortmp` mediumint(9) default '0',
`del` tinyint(4) default '0',
`html` tinyint(4) default NULL,
`viewedcount` mediumint(9) default '0',
`createdate` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`idtarticle`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1250 COLLATE=cp1250_czech_cs AUTO_INCREMENT=1;
Abychom mohli s tabulkou pracovat (vybírat data), tak nestačí pouze vytvořit strukturu, ale je nutno tabulku také naplnit daty. Pro tyto účely máme připraven soubor, který nám v námi definované databázi vytvoří tuto tabulku a naplní ji daty: renome-sql-dump.txt. Obsah tohoto souboru stačí importovat do MySQL (například jednoduše zkopírovat a vložit v phpmysqladminu do políčka pro vykonání SQL dotazu a spustit jej). Ukázku vložených záznamů v tabulce můžeme vidět níže.

V této části lekce se pokusíme vytvořit SQL dotazy na tabulku tarticle. Bude se jednat o dotazy, které nám budou vracet (zobrazovat) záznamy vyhovující našim zadáním. Všechny dotazy realizujte například v phpmysqladminu v okně pro zadávání SQL příkázů.
Název a popis všech článků z tabulky tarticle.
SELECT
heading, descr
FROM
renome_tarticle
Název a popis všech článků z tabulky tarticle tříděný podle data vytvoření.
SELECT
heading,
descr,
createdate
FROM
renome_tarticle
ORDER BY
createdate
Název a datum vytvoření všech článků z tabulky tarticle, které byly vytvořeny v roce 2009.
Nápověda: použijte SQL funkci YEAR (o jeho použití se můžete dočíst například v MySQL manuálu).
SELECT
heading,
createdate
FROM
renome_tarticle
WHERE
YEAR(createdate)=2009
Název a datum vytvoření všech článků z tabulky tarticle, které byly vytvořeny ve školním roce 2009.
Nápověda: použijte SQL funkci YEAR, MONTH (o jejich použití se můžete dočíst například v MySQL manuálu)a případně složitějších podmínek s AND a OR.
SELECT
heading,
createdate
FROM
renome_tarticle
WHERE
((YEAR(createdate)=2009) AND (MONTH(createdate)>8) OR (YEAR(createdate)=2010) AND (MONTH(createdate)<7))
Název a identifikátor kategorie všech článků z tabulky tarticle, které jsou z kategorie "K zamyšlení".
Abychom mohli tento dotaz napsat, tak potřebujeme další tabulku, která obsahuje informace o kategoriích. Bez ní máme k dispozici pouze identifikátor kategorie, ale nevíme, jak se kategorie s daným identifikátorem (idccathegory) jmenuje.

Tabulku ccathegory naplněnou daty máme k dispozici ve formátu SQL v souboru renome_ccathegory-sql-dump.txt. Obsah tohoto souboru stačí importovat do MySQL (například jednoduše zkopírovat a vložit v phpmysqladminu do políčka pro vykonání SQL dotazu a spustit jej). Ukázku vložených záznamů v tabulce můžeme vidět níže.

Z tabulky vidíme, že kategorie "K zamyšlení" má identifikátor s hodnotou 6.
SELECT
heading, idccathegory
FROM
renome_tarticle
WHERE
idccathegory = 6
Název a identifikátor kategorie všech článků z tabulky tarticle, které jsou z jedné z kategorií "K zamyšlení" nebo "Školní šepoty".
SELECT
heading, idccathegory
FROM
renome_tarticle
WHERE
(idccathegory = 6 OR idccathegory = 2)
Všechny atributy článků z tabulky tarticle, které jsou z jedné z kategorií "K zamyšlení" nebo "Školní šepoty" a jsou uveřejněny.
SELECT
*
FROM
renome_tarticle
WHERE
(idccathegory = 6 OR idccathegory = 2) AND public = 1