1. DDL (Data Definition Language)
Slouží k definici a správě struktury databáze (tabulky, schémata, indexy).
-
CREATE – vytvoření objektu
CREATE TABLE Osoba ( id INT PRIMARY KEY, jmeno VARCHAR(50), prijmeni VARCHAR(50), vek INT ); -
ALTER – změna existující tabulky
ALTER TABLE Osoba ADD email VARCHAR(100); ALTER TABLE Osoba DROP COLUMN vek; -
DROP – smazání objektu
DROP TABLE Osoba; -
TRUNCATE – vymazání všech dat z tabulky (rychlejší než DELETE, bez WHERE)
TRUNCATE TABLE Osoba;
2. DML (Data Manipulation Language)
Slouží k manipulaci s daty v tabulkách.
-
INSERT – vložení dat
INSERT INTO Osoba (id, jmeno, prijmeni, vek) VALUES (1, 'Jan', 'Novák', 25); -
UPDATE – úprava dat
UPDATE Osoba SET vek = 26 WHERE id = 1; -
DELETE – mazání dat
DELETE FROM Osoba WHERE vek < 18; -
SELECT – dotaz na data
SELECT jmeno, prijmeni FROM Osoba WHERE vek > 20;
3. JOINy
Slouží ke spojování dat z více tabulek na základě společného klíče.
Typy JOINů
-
INNER JOIN – vrací jen záznamy, kde existuje shoda v obou tabulkách.
SELECT o.jmeno, a.mesto FROM Osoba o INNER JOIN Adresa a ON o.id = a.osoba_id; -
LEFT JOIN – vrací všechny záznamy z levé tabulky + shody z pravé.
SELECT o.jmeno, a.mesto FROM Osoba o LEFT JOIN Adresa a ON o.id = a.osoba_id; -
RIGHT JOIN – vrací všechny záznamy z pravé tabulky + shody z levé.
SELECT o.jmeno, a.mesto FROM Osoba o RIGHT JOIN Adresa a ON o.id = a.osoba_id; -
FULL OUTER JOIN – vrací všechny záznamy z obou tabulek (pokud DB podporuje).
SELECT o.jmeno, a.mesto FROM Osoba o FULL OUTER JOIN Adresa a ON o.id = a.osoba_id; -
CROSS JOIN – kartézský součin (všechny kombinace).
SELECT o.jmeno, a.mesto FROM Osoba o CROSS JOIN Adresa a;
4. Agregační funkce
Používají se pro výpočty nad více řádky, často spolu s GROUP BY.
-
COUNT() – počet záznamů
SELECT COUNT(*) FROM Osoba; -
SUM() – součet hodnot
SELECT SUM(vek) FROM Osoba; -
AVG() – průměr
SELECT AVG(vek) FROM Osoba; -
MIN(), MAX() – minimum a maximum
SELECT MIN(vek), MAX(vek) FROM Osoba;
GROUP BY a HAVING
-
GROUP BY – seskupí záznamy podle sloupce
-
HAVING – filtr na agregovaná data (na rozdíl od WHERE)
SELECT prijmeni, COUNT(*) AS pocet
FROM Osoba
GROUP BY prijmeni
HAVING COUNT(*) > 1;5. Další důležité pojmy
-
PRIMARY KEY – jednoznačný identifikátor řádku.
-
FOREIGN KEY – vazba na jinou tabulku.
-
INDEX – urychlení dotazů.
-
VIEW – virtuální tabulka (uložený SELECT).
-
CONSTRAINT – omezení (např. NOT NULL, UNIQUE, CHECK).