DDL - definice dat - vytváření databáze, tabulek - definice datových typů pro sloupce v tabulce - označení klíčů, relací - mazání a vyprázdnění tabulek, databází apod. Příklady: CREATE TABLE, CREATE DATABASE, DROP TABLE, TRUNCATE, ALTER TABLE... CREATE DATABASE skola DROP TABLE zaci TRUNCATE TABLE zaci ------------------------------------------------------- DML - manipulace s daty - výběr, vkládání, mazání a změna dat - SELECT, INSERT, DELETE a UPDATE - důležité! (musíme znát z hlavy) Příklad: Máme tabulku zaci, v ní sloupce id, jmeno, prijmeni, mesto (1, Jan, Nový, Karlovy Vary) (2, Jana, Nová, Karlovy Vary) SQL dotaz pro výpis všech příjmení žáků v tabulce SELECT prijmeni FROM zaci => vrátí Nový, Nová... SQL dotaz pro výběr všech sloupců všch žáků v tabulce (ctrl+a) SELECT * FROM FROM zaci => 1, Jan, Nový, Karlovy Vary; 2, Jana, Nová, Karlovy Vary,... SQL pro výběr jména a příjmení žáků z města Karlovy Vary SELECT jmeno, prijmeni FROM zaci WHERE mesto = 'Karlovy Vary' lepší varianta: SELECT jmeno, prijmeni FROM zaci WHERE mesto LIKE 'Karlovy Vary' SQL dotaz pro vše od žáka nebo žáků z Karlových Varů, jejichž jméno je Jan SELECT * FROM zaci WHERE mesto LIKE 'Karlovy Vary' AND jmeno LIKE 'Jan' SQL dotaz pro výběr všeho od žáků, jejichž jméno začíná na j SELECT * FROM zaci WHERE jmeno LIKE 'J%' % = libovolné znaky (i žádný znak) SQL dotaz pro výběr všeho od žáků, kteří bydlí ve městě s koncovkou 'ry' SELECT * FROM zaci WHERE mesto LIKE '%ry' město obsahuje písmeno 'a' ... mesto LIKE '%a%' město obsahuje 'a' na druhé pozici SELECT * FROM zaci WHERE mesto LIKE '_a%' _ = právě jeden znak Vybrat jména, která mají tří znaky SELECT jmeno FROM zaci WHERE jmeno LIKE '___' (3x _) Jména se 4 a více znaky SELECT jmeno FROM zaci WHERE jmeno LIKE '____%' (4x _) Vybereme vše a seřadíme podle příjmení vzestupně (A-Z) SELECT * FROM zaci ORDER BY prijmeni nebo SELECT * FROM zaci ORDER BY prijmeni ASC to samé, ale sestupně SELECT * FROM zaci ORDER BY prijmeni DESC seřadit podle příjmení sestupně, ale jména vzestupně SELECT * FROM zaci ORDER BY prijmeni DESC, jmeno ASC Vše od žáků z města začínajícího na K, seřadíme sestupně podle příjmení a zobrazíme pouze první dva SELECT * FROM zaci WHERE mesto LIKE 'K%' ORDER BY prijmeni DESC LIMIT 2 stejné, ale chceme 11. a 12. žáka v pořadí SELECT * FROM zaci WHERE mesto LIKE 'K%' ORDER BY prijmeni DESC LIMIT 2 OFFSET 10 nebo SELECT * FROM zaci WHERE mesto LIKE 'K%' ORDER BY prijmeni DESC LIMIT 10, 2 Vybrat všechna jména z tabulky žáci, ale bez duplicitních záznamů a seřadit SELECT DISTINCT jmeno FROM zaci ORDER BY jmeno Adam, Adéla,... ----------------------- Agregace agregační funkce jsou průměr, minimum, maximum, součet, počet průměr AVG() počet COUNT() součet SUM() minimum MIN() maximum MAX() do závorek umístíme sloupec, pro který chceme provést funkci bohužel i u počtu, což je někdy nesmysl => umístíme např id příklad, tabulka zaci má i sloupec věk chceme průměrný věk žáků ze Sokolova SELECT AVG(vek) FROM zaci WHERE mesto LIKE 'Sokolov' chceme minimální věk žáků z Ostrova SELECT MIN(vek) FROM zaci WHERE mesto LIKE 'Ostrov' Počet žáků z Karlových Varů SELECT COUNT(jakýkoliv sloupec, který je v tabulce) FROM zaci WHERE mesto LIKE 'Karlovy Vary' => SELECT COUNT(mesto) FROM zaci WHERE mesto LIKE 'Karlovy Vary' u těchto funkcí je dobré (nutné) hodnotu nechat vrátit jako novou proměnnou neboli vytvořit alias => AS SELECT AVG(vek) AS prumer FROM zaci => SQL mi vrátí objekt s hodnotou prumer=17.256 ---------------------------------------------------------------------------- DELETE je cca jako SELECT, ale před FROM nepíšeme jaká data chceme zpět smažeme všechny žáky z Karlových Varů DELETE FROM zaci WHERE mesto LIKE 'Karlovy Vary' Pozor!!!! DELETE FROM zaci => ctrl+a del => smaže vše z tabulky zaci na rozdíl od SELECT u DELETE neřadíme, neagregujeme apod ----------------------------------------------------------------------------