Procvičování pro přednášku “SQL 03“ (stream https://web.microsoftstream.com/video/48bac6fb-aef1-4a62-9cdf-a2292e8cd9c2​) Testovací databáze: ​http://sql02.jdem.cz/ Vše s tabulkou “Books” 1. Vypište knihy napsané ve 20. Století 2. Vypište názvy knih knihy, které v originále nezačínají na ​c​ a jejich přeložený název (tj. sloupeřek ​title​) nekončí na ​de​. Výsledek seřaďte abecedně dle názvu originálu 3. Vypište knížky, které v originálu začínaji určitým členem ​The 4. Vypište knížky nakladatelů, jejíž název má 5 písmen. 5. Vypište knížky, které mají v originále delší název, než v překladu. Ve výsledcích vypište název, délku názvu, název originálu a délku názvu originálu 6. Vypište zemi překladu (​country​) a název (​title​) u knižek vydaných ve 40.letech 20. století. Ve výpisu převeďte všechna písmenka na velká (verzálky) Hint: podívejte se do dokumentace ​https://sqlite.org/lang_corefunc.html​ a zkuste najít, které funkce ze sezamu by se mohla hodit 7. Vypište 3.-6. znak názvu originálu, celý název originálu a zemi vydání u knížek, které byly vydány v 21. století v Česku nebo Maďarsku a mezi 3. a 6. znakem názvu originálu obsahujím mezeru Řešení: 1) SELECT * FROM books WHERE YEAR > 1900 AND YEAR <= 2000 2) SELECT * FROM books WHERE original_title NOT LIKE "c%" AND title NOT LIKE "%de" ORDER BY original_title 3) SELECT * FROM books WHERE original_title LIKE "The %" Pozor: ​je důležité uvést mezeru za “The” a až pak dát procent, v opačném případě by dotaz vracel i názvy, které začínají písmeny The, např ​They shall…​, ​Then comes..... Hezky si je můžete zobrazit pomocí dotazu SELECT * FROM books WHERE original_title LIKE "The%" AND original_title NOT LIKE "The %" ​(v první části podmínky je jen The, v druhé je The a mezera) Alternativní řešení pomocí SUBSTR SELECT * FROM books WHERE SUBSTR(original_title, 1, 4) = "The " I zde platí, že za “The” musí být mezera, proto porovnáváme první 4 znaky a nikoliv jen 3 4) SELECT * FROM books WHERE LENGTH(publisher) = 5 5) SELECT title, LENGTH(title), original_title, LENGTH(original_title) FROM books WHERE LENGTH(title) < LENGTH(original_title) 6) SELECT UPPER(title), UPPER(country) FROM books WHERE YEAR >= 1940 AND year < 1950 Pozor: “​zvětšování” písmen nemusí správně fungovat u znaků s diakritikou, v rámci tohoto kurzu tento problém řešit nebudeme. Pokud budete v budoucnu pracovat s nějakou pokročilejší databází (např MySQL, MariaDB...) tak tento problém nebude. 7) SELECT SUBSTR(original_title, 3, 4), original_title, country FROM books WHERE year > 2000 AND (country LIKE "Czech republic" OR country LIKE "Hungary") AND SUBSTR(original_title, 3, 4) LIKE "% %"