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).