Databáze rychlý obecný poznámky

Entity, atributy, relace

  • Entity: Objekt nebo věc v databázi, která je identifikovatelná a má význam pro danou oblast. Například, v databázi knihovny mohou být entity jako „Kniha“, „Autor“, „Čtenář“.
  • Atributy: Vlastnosti nebo charakteristiky entity. Pro entitu „Kniha“ mohou být atributy jako „Název“, „Autor“, „ISBN“, „Rok vydání“.
  • Relace: Vztahy mezi entitami. Například, relace mezi „Knihou“ a „Autorem“ může být „Napsal“.

DMM (Data Manipulation and Management)

  • create_database: Vytvoří novou databázi.

    CREATE DATABASE nazev_databaze;
  • drop_database: Odstraní existující databázi.

    DROP DATABASE nazev_databaze;
  • create_table: Vytvoří novou tabulku v databázi.

    CREATE TABLE nazev_tabulky (
        sloupec1 datatype,
        sloupec2 datatype,
        ...
    );
  • drop_table: Odstraní tabulku z databáze.

    DROP TABLE nazev_tabulky;
  • alter_table: Upraví strukturu existující tabulky (např. přidání nebo odstranění sloupce).

    ALTER TABLE nazev_tabulky ADD sloupec1 datatype;
    ALTER TABLE nazev_tabulky DROP COLUMN sloupec1;
  • create_index: Vytvoří index pro zrychlení dotazů na tabulku.

    CREATE INDEX nazev_indexu ON nazev_tabulky (sloupec1, sloupec2);

Atributy - DDL (Data Definition Language)

  • integer - celočíselný typ

  • tinyint: Malé celé číslo (1 bajt)

  • smallint: Malé celé číslo (2 bajty)

  • mediumint: Středně velké celé číslo (3 bajty)

  • varchar - alfanumerický řetězec proměnné délky

    VARCHAR(255)
  • date - datum
    DATE
  • timestamp - unix timestamp, měřený od 1.1.1970 v sekundách
    TIMESTAMP
  • float - desetinná čísla s jednoduchou přesností
    FLOAT
  • double - desetinná čísla s dvojitou přesností
    DOUBLE
  • currency - měna (závisí na databázovém systému, jak je měna implementována)

DML (Data Manipulation Language)

  • INSERT - vloží nový záznam do tabulky

    INSERT INTO nazev_tabulky (sloupec1, sloupec2) VALUES (hodnota1, hodnota2);
  • LOAD - načte data do tabulky (různé varianty, např. z externího souboru)

    LOAD DATA INFILE 'soubor.csv' INTO TABLE nazev_tabulky;
  • UPDATE - aktualizuje existující záznamy

    UPDATE nazev_tabulky SET sloupec1 = hodnota1 WHERE podminka;
  • DELETE - smaže záznamy z tabulky

    DELETE FROM nazev_tabulky WHERE podminka;
  • TRUNCATE - smaže všechny záznamy z tabulky a resetuje počítadla

    TRUNCATE TABLE nazev_tabulky;

SELECT

  • SELECT - vybere data z tabulky

    SELECT * FROM nazev_tabulky;
  • NOW - vrátí aktuální datum a čas

    SELECT NOW();
  • aliasy - zástupné znaky, které usnadňují práci s dotazy

    SELECT sloupec1 AS alias1 FROM nazev_tabulky;
  • ORDER BY - třídí výsledky podle určitého sloupce

    SELECT * FROM nazev_tabulky ORDER BY sloupec1;
  • GROUP BY - seskupuje výsledky podle určitého sloupce

    SELECT sloupec1, COUNT(*) FROM nazev_tabulky GROUP BY sloupec1;
  • HAVING - podmínka aplikovaná na seskupená data

    SELECT sloupec1, COUNT(*) FROM nazev_tabulky GROUP BY sloupec1 HAVING COUNT(*) > 1;

Spojení (Joins)

  • INNER JOIN - vrací záznamy, které mají odpovídající hodnoty v obou tabulkách

    SELECT * FROM tabulka1 INNER JOIN tabulka2 ON tabulka1.sloupec = tabulka2.sloupec;
  • LEFT (OUTER) JOIN - vrací všechny záznamy z levé tabulky a odpovídající záznamy z pravé tabulky

    SELECT * FROM tabulka1 LEFT JOIN tabulka2 ON tabulka1.sloupec = tabulka2.sloupec;
  • RIGHT (OUTER) JOIN - vrací všechny záznamy z pravé tabulky a odpovídající záznamy z levé tabulky

    SELECT * FROM tabulka1 RIGHT JOIN tabulka2 ON tabulka1.sloupec = tabulka2.sloupec;
  • FULL (OUTER) JOIN - vrací všechny záznamy, které mají odpovídající hodnoty v obou tabulkách, a všechny záznamy z obou tabulek, které nemají odpovídající hodnoty

    SELECT * FROM tabulka1 FULL OUTER JOIN tabulka2 ON tabulka1.sloupec = tabulka2.sloupec;

Integrita

  • Referenční integrita: Zajišťuje, že vztahy mezi tabulkami jsou zachovány. Například cizí klíč (foreign key) v jedné tabulce musí odpovídat primárnímu klíči (primary key) v jiné tabulce.
    CREATE TABLE objednavky (
        objednavka_id INT PRIMARY KEY,
        zakaznik_id INT,
        FOREIGN KEY (zakaznik_id) REFERENCES zakaznici(zakaznik_id)
    );