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