1 | Stáhněte si přes FTP z fileserveru pomocí účtu anonym soubor db03.zip a extrahujte jej tak, aby rozbalené soubory byly ve složce c:\temp\db03 | FileZilla |
2 | Spusťte sqlite3 a zároveň otevřte databázi db03.sqlite | cmd |
3 | Ověřte v sqlite3 cestu k databázi, tabulky v databázi a hlavně schéma tabulky skupina | .databases, .tables, .schema |
4 | Vypište si řádky tabulky skupina | select ... |
5 | Vypište primární klíč tabulky skupina příkazem SELECT rowid,* FROM skupina; |
sqlite3 |
6 | Úkolem je vytvořit tabulku seznam, která bude obsahovat sloupec id typu INTEGER PRIMARY KEY, dále 3 stejné sloupce jako tabulka skupina + nakonec nový sloupec vytvoreno s časovým razítkem | |
7 | Nastavte v sqlite3 výstup do souboru skupina.sql | .output ... |
8 | Proveďte export tabulky skupina příkazem .dump do souboru skupina.sql a nastavte zpátky standardní výstup stdout | .dump skupina |
9 | Editujte skupina.sql v PSPadu (všimněte si zvýraznění syntaxe) - odstraňte všechny příkazy kromě CREATE TABLE a změňte název tabulky na seznam | PSPad |
10 | Jako první sloupec přidejte id INTEGER PRIMARY KEY | PSPad |
11 | Jako poslední sloupec přidejte vytvoreno TEXT DEFAULT CURRENT_TIMESTAMP a uložte dokument pod jménem seznam.sql | PSPad |
12 | Proveďte příkazy ze souboru seznam.sql pomocí příkazu .read | sqlite3 |
13 | Ověřte vytvoření tabulky příkazem .schema seznam | sqlite3 |
14 | Editujte skupina.sql v PSPadu - odstraňte všechny příkazy kromě insert | PSPad |
15 | Změňte v řádcích INSERT název tabulky na seznam podle
vzoru: INSERT INTO "seznam" (jmeno,rok,prezdivka) VALUES('Karel',1992,'Karlos'); |
PSPad |
16 | Přidejte nový řádek s vlastními hodnotami | PSPad |
17 | Nastavte kódování UTF-8 a uložte soubor jako seznam-data.sql | PSPad |
18 | Vložte řádky ze seznam-data.sql do tabulky příkazem .read | sqlite3 |
19 | Zapněte si vypisování hlavičky příkazem .header on a sloupce příkazem .mode column | sqlite3 |
20 | Ověřte příkazem select ... řádky v tabulce seznam | sqlite3 |
21 | Všimněte si, že jsme nemuseli vkládat sloupce id s primárním klíčem a vytvoreno a časovým razítkem - vygenerovaly se automaticky | |
22 | Pro porovnání rowid a id proveďte SELECT rowid,* FROM skupina; |
23 | Úkolem je do tabulky seznam přidat sloupce: a) telefon s kontrolou na 9 číslic b) rodne_cislo s kontrolou na sedmý znak = '/' |
|
24 | a) alter table ... add column ... integer check (length(telefon)=...); | |
25 | Zkuste vložit do tabulky nový řádek s vlastními hodnotami podle
vzoru (analyzujte příčinu chyby): INSERT INTO "seznam" (jmeno,rok,prezdivka,telefon) VALUES('xxx',1111,'yyy',123456); |
|
26 | Vkládaný řádek opravte tak, aby se do tabulky vložil bez chyby (proveďte vložení a ověření výpisem řádků) | |
27 | b) podobně přidejte sloupec rodne_cislo s podmínkou substr(rodne_cislo,7,1)='/' | |
28 | Zkuste vložit do tabulky nový řádek s vlastními hodnotami podle
vzoru (analyzujte příčinu chyby): INSERT INTO "seznam" (jmeno,rok,prezdivka,telefon,rodne_cislo) VALUES('xxx',1111,'yyy',987654321,'750804-4566'); |
|
29 | Vkládaný řádek opravte tak, aby se do tabulky vložil bez chyby (proveďte vložení a ověření výpisem řádků) |
30 | V databázi db03.sqlite samostatně vytvořte tabulku
kody se sloupci a) id integer primary key b) kod integer unique not null c) poznamka text |
sqlite3 |
31 | Vložte do tabulky kody nový řádek s vlastními hodnotami podle vzoru
INSERT INTO ... (kod,poznamka) VALUES (123,'xxx'); |
|
32 | Zkuste vložit do tabulky znovu stejný řádek a analyzujte příčinu chyby | |
33 | Vložte do tabulky kody nový řádek s vlastní hodnotou poznámky podle
vzoru INSERT INTO ... (poznamka) VALUES ('xxx'); |
|
34 | Analyzujte chybu a vložte řádek znovu s opravenou hodnotou (tabulka bude mít poté dva řádky - ověřte výpisem)) |
35 | Vložte do tabulky kody nový řádek s vlastními hodnotami kódu a poznámky | sqlite3 |
36 | Změňte u všech řádků obsah sloupce poznamka na 'upraveno updatem'
příkazem: UPDATE kody SET poznamka = ...; |
|
37 | U prvního řádku (id=1) změňte kod na hodnotu 159 příkazem: UPDATE kody SET kod = ... WHERE ...; |
38 | Smažte druhý řádek tabulky y - podmínku doplňte sami: DELETE FROM ... WHERE ...; |
|
39 | Ukončete sqlite3 a zkopírujte na fileserver celou složku c:\temp\db03 |