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