8. Databáze

Co se po vás bude chtít?

Úvod do databází

  • Co je databáze:

    • Organizované úložiště dat
    • Rozdíl mezi databází a souborem
    • DBMS (Database Management System)
  • Typy databází:

    • Relační databáze (SQL) - strukturovaná data v tabulkách
    • NoSQL databáze - flexibilní schémata
    • In-memory databáze - data v paměti pro rychlý přístup
  • Využití databází:

    • Webové aplikace
    • Informační systémy
    • E-commerce
    • Logging a analytika

Relační databáze

  • Základní pojmy:

    • Tabulka (table) - kolekce souvisejících dat
    • Řádek (row/record) - jeden záznam
    • Sloupec (column/field) - atribut záznamu
    • Primární klíč (primary key) - unikátní identifikátor záznamu
    • Cizí klíč (foreign key) - odkaz na záznam v jiné tabulce
  • Datové typy:

    • INT - celá čísla
    • VARCHAR - textové řetězce proměnné délky
    • TEXT - dlouhé texty
    • FLOAT/DECIMAL - desetinná čísla
    • DATE/DATETIME - datum a čas
    • BOOLEAN - pravda/nepravda
  • Relace mezi tabulkami:

    • 1:1 (one-to-one) - jeden záznam k jednomu
    • 1:N (one-to-many) - jeden záznam k mnoha
    • M:N (many-to-many) - mnoho k mnoha (pomocí spojovací tabulky)

SQL (Structured Query Language)

Základní příkazy

  • SELECT - výběr dat:

    SELECT sloupec1, sloupec2 FROM tabulka;
    SELECT * FROM tabulka;
    SELECT * FROM tabulka WHERE podminka;
    SELECT * FROM tabulka ORDER BY sloupec ASC/DESC;
    SELECT * FROM tabulka LIMIT 10;
  • INSERT - vkládání dat:

    INSERT INTO tabulka (sloupec1, sloupec2) VALUES (hodnota1, hodnota2);
  • UPDATE - aktualizace dat:

    UPDATE tabulka SET sloupec = hodnota WHERE podminka;
  • DELETE - mazání dat:

    DELETE FROM tabulka WHERE podminka;

Tvorba a správa struktury

  • CREATE - vytvoření:

    CREATE DATABASE nazev_databaze;
    CREATE TABLE nazev_tabulky (
        id INT PRIMARY KEY AUTO_INCREMENT,
        nazev VARCHAR(255) NOT NULL,
        vytvoreno DATETIME DEFAULT CURRENT_TIMESTAMP
    );
  • ALTER - úprava struktury:

    ALTER TABLE tabulka ADD sloupec VARCHAR(100);
    ALTER TABLE tabulka DROP COLUMN sloupec;
    ALTER TABLE tabulka MODIFY sloupec INT;
  • DROP - smazání:

    DROP TABLE tabulka;
    DROP DATABASE databaze;

Pokročilé dotazy

  • JOIN - spojování tabulek:

    • INNER JOIN - pouze odpovídající záznamy
    • LEFT JOIN - všechny z levé + odpovídající z pravé
    • RIGHT JOIN - všechny z pravé + odpovídající z levé
    SELECT * FROM uzivatele 
    INNER JOIN objednavky ON uzivatele.id = objednavky.uzivatel_id;
  • Agregační funkce:

    • COUNT() - počet záznamů
    • SUM() - součet hodnot
    • AVG() - průměr
    • MIN() / MAX() - minimum / maximum
    SELECT COUNT(*) FROM tabulka;
    SELECT kategorie, AVG(cena) FROM produkty GROUP BY kategorie;
  • Filtrování a řazení:

    • WHERE - podmínka
    • AND / OR - logické operátory
    • LIKE - vyhledávání vzorů
    • IN - výběr z množiny
    • BETWEEN - rozsah hodnot
    • GROUP BY - seskupení
    • HAVING - podmínka pro skupiny
    • ORDER BY - řazení

Bezpečnost databází

  • Přístupová práva:

    • Uživatelé a role
    • GRANT a REVOKE
    • Princip nejmenších oprávnění
  • SQL Injection:

    • Princip útoku
    • Prepared statements jako ochrana
    • Validace vstupů
  • Zálohování:

    • Pravidelné zálohy
    • mysqldump / pg_dump
    • Obnova ze zálohy

NoSQL databáze

  • Typy NoSQL databází:

    • Dokumentové (MongoDB) - JSON dokumenty
    • Key-value (Redis) - klíč-hodnota páry
    • Sloupcové (Cassandra) - optimalizované pro čtení
    • Grafové (Neo4j) - uzly a hrany
  • Kdy použít NoSQL:

    • Flexibilní schéma
    • Horizontální škálování
    • Velké objemy dat
    • Rychlý vývoj
  • SQL vs NoSQL:

    • SQL: strukturovaná data, ACID transakce, složité dotazy
    • NoSQL: flexibilita, škálovatelnost, výkon pro specifické případy

Populární databázové systémy

  • Relační:

    • MySQL / MariaDB - open-source, web aplikace
    • PostgreSQL - pokročilé funkce, rozšiřitelnost
    • SQLite - embedded databáze
    • Microsoft SQL Server - enterprise
    • Oracle Database - enterprise
  • NoSQL:

    • MongoDB - dokumentová databáze
    • Redis - in-memory key-value
    • Elasticsearch - fulltextové vyhledávání

Připrav se na HAXAGONu

Informační systémy:

  • Úvod do informačních systémů
  • Klíče a relace
  • Návrh datového modelu
  • Úvod do SQL
  • SQL příkazy
  • Uživatelé a oprávnění v SQL
  • Tvorba tabulek ve skutečné databázi
  • Přidávání záznamů do skutečné databáze
  • Správa databáze pomocí grafického rozhraní

Webové technologie:

  • Databáze - úvod

Úlohy pro trénink SQLi:

Ostatní:

  • bWAPP
  • OWASP Juice Shop
  • Evil Pharma