6.7. Data Manipulation Language - hledání v tabulce

6.7.1. Opakování - tvorba, vkládání do tabulky

1 Stáhněte si přes FTP z fileserveru pomocí účtu anonym soubor db04.zip a extrahujte jej tak, aby rozbalené soubory byly ve složce c:\temp\db04 FileZilla
2 Otevřte v textovém editoru soubor data04.sql a doplňte v příkazu CREATE TABLE odpovídající typy sloupců PSPad
3 Přidejte 3 nové příkazy INSERT INTO s vlastními daty, soubor uložte PSPad
4 Spusťte příkazový řádek, přejděte v něm do složky db04, nastavte si kódování UTF-8 (65001) cmd, cd, chcp
5 Vytvořte ve složce db04 novou databázi db04.sqlite spuštěním
c:\programy\sqlite\sqlite3 s parametrem db04.sqlite
cmd
6 Ověřte v sqlite3 cestu k databázi .databases
7 Proveďte příkazy v souboru data04.sql .read
8 Otevřte v textovém editoru soubor psc.sql a ověřte správnost dat  
9 Proveďte příkazy psc.sql v databázi db04.sqlite a poté ověřte existenci tabulek a jejich schéma .tables, .schema

6.7.2. Select - výběr dat

10 Nastavte si v sqlite režim výpisu do sloupců (column) včetně zobrazení názvů sloupců (.header on) .mode, .header
11 Nastavte si režim opakovaného výpisu příkazů pomocí .echo on .echo
12 Vypište všechny sloupce všech řádků tabulky x SELECT ? FROM ?;
13 Vypište sloupce jmeno a body u všech řádků tabulky x, pak proveďte stejný výpis ale s opačným pořadím sloupců (nejprve body, pak jmeno) SELECT ? FROM ?;
14 Vypište prvních 5 řádků tabulky x SELECT * FROM x LIMIT 5;
15 Vypište prvních 5 řádků tabulky x a uveďte i offset SELECT * FROM x LIMIT 5 OFFSET 0;
16 Vypište řádky 5 až 7 tabulky x (místo ? dosaďte správná čísla - stejně tak i v dalších cvičeních) SELECT * FROM x LIMIT ? OFFSET ?;
17 Ve výpisu mají být např. vždy 3 řádky z tabulky x - vypište první stránku (první 3 řádky) SELECT * FROM x LIMIT 3 OFFSET 0 * 3;
18 Uživatel zmáčkl v prohlížeči tlačítko pro další stránku - vypište druhou stránku, třetí stránku, ... SELECT * FROM x LIMIT 3 OFFSET ? * 3;

6.7.3. Filtrování - WHERE

19 Vypište z tabulky x jména patřící do skupiny01 SELECT jmeno,skupina FROM x WHERE skupina='skupina01';
20 V hledaném řetězci se ctí velikost písmen - příklad nesprávného dotazu (nic se nenajde) SELECT jmeno,skupina FROM x WHERE skupina='Skupina01';
21 Vypište z tabulky x jména nepatřící do skupiny02 (místo ? doplňte podmínku) SELECT jmeno,skupina FROM x WHERE ?;
22 Vypište z tabulky x jména a body u řádků s počtem bodů menším než 400 SELECT jmeno,body FROM x WHERE ?;
23 Vypočítejte pomocí SELECT 2+3*4 a ověřte výsledek, pak výraz upravte tak, aby se nejprve sčítalo SELECT 2+3*4;
24 Vypište z tabulky x jména a body u řádků s počtem bodů od 300 do 800 (včetně mezí) SELECT jmeno,body FROM x WHERE body>=300 AND ?;
25 Vypište z tabulky x jména a skóre u řádků, u kterých je desetinásobek skóre větší než 50 SELECT jmeno,skore FROM x WHERE 10*skore ?;
26 Vypište jména patřící do skupiny01 nebo skupiny02 ?
27 Vypište celé řádky se jmény končícími písmenem 'e' SELECT * FROM x WHERE jmeno LIKE '%e';
28 Vypište celé řádky se jmény nezačínajícími písmenem 'B' SELECT * FROM x WHERE jmeno NOT LIKE ?;
29 Vypište jména obsahující řetězec 'nn' nebo 'll' (dvě el) - opravte chybu v názvu sloupce SELECT jmena FROM x WHERE jmeno LIKE '%nn%' OR ?;

6.7.4. Řazení - ORDER BY

30 Vypište celé řádky tabulky x seřazené podle skore SELECT * FROM x ORDER BY skore;
31 Vypište z tabulky x jména a body u řádků s počtem bodů větším než 300, řádky budou seřazené podle počtu bodů SELECT jmeno,body FROM x WHERE ? ORDER BY ?;
32 Vypište celé řádky tabulky x seřazené podle skupin a ve skupinách podle bodů SELECT * FROM x ORDER BY skupina, body;
33 Vypište celé řádky tabulky x seřazené podle bodů sestupně (od největšího po nejmenší) SELECT * FROM x ORDER BY ? DESC;
34 Vypište jména a body tří bodově nejlepších osob SELECT jmeno,body FROM x ORDER BY body DESC LIMIT ?;
35 Vypište názvy skupin uspořádané vzestupně (ve výpisu nesmí být stejné řádky) SELECT DISTINCT skupina FROM x ORDER BY skupina;

6.7.5. Samostatné cvičení

36 Vypište názvy částí obcí se směrovacím číslem 79401 seřazené vzestupně  
37 Vypište 10 nejvyšších PSČ včetně názvu části obce  
38 Vypište názvy částí obce (seřazené vzestupně), které obsahují řetězec 'ia', ve výstupu odstraňte duplicitní řádky  
39 Vypište názvy částí obce s hlavní poštou (poslední dvojčíslí psč 00) v původně jihomoravském kraji (začínající 6)