DDL - Data Definition Language - Klauzule, která nám definují, jak bude vypadat struktura databáze nebo tabulek
CREATE
ALTER
DROP
TRUNCATE
VIEW
DML - Data Manipulation Language - Klauzule nám říkají, jakým způsobem manipulujeme s daty
INSERT
UPDATE
DELETE
SELECT
DCL - Data Control Language - Pomocí těchto klauzilí nastavujeme oprávnění pro práci s daty
GRANT
REVOKE
TCL - Transaction Control language - S těmito klauzulemi ovládáme jednotlivé transakce SŘBD s transakčním logem
COMMIT
ROLLBACK
SAVEPOINT
ACID transakce jsou transakce využívané u relačních SŘBD. Tyto transakce zabraňují aby došlo k poškození dat uvnitř databáze a spoléhají na transakční log.
A - Atomicity - Jednotlivé transakce jsou rozděleny na atomární části.
C - Consistency - Data zůstávají díky transakčnímu logu a těmto transakcím konzistentní, např. při výpadku elektřiny.
I - Isolation - Transakce se vykonávají odděleně, jedna po druhé.
D - Durability - TRansakce jsou odolné vůči např. výpadku elektřiny, spojení atp. Poslední stav se udržuje v transakčním logu.
zkratka CRUD je zktratka pro 4 záklní operace, které lze vždy s každým informačním systémem provádět a tím jsou operace:
INSERT INTO role (name) VALUES ('Administrator'), ('Supervisor'), ('Uzivatel');
SELECT * FROM role;
SELECT idrole, name FROM role;
UPDATE role SET name = 'Supervisor' WHERE idrole = 2;
DELETE FROM role WHERE idrole = 2;
Zobrazení všech databází na serveru: show schemas;
Použití konkrétní datbáze pro práci s SQL:
use `database-name"`;
e.g.: use `steam-krizik`;
Zobrazení všech tabulek/entit uvnitř databáze: show tables;
Zobrazení vlastností + atributů z konkrétní tabulky:
show columns from table-name;
show columns from role;
Jednořádkový komentář:
-- Komentář
Víceřádkový komentář:
/* Toto
je celé
komentář */
SELECT <sloupce> FROM <nazev tabulky> WHERE <hodnota sloupce> = <hodnota>;
SELECT jmeno, prijmeni FROM uzivatel WHERE prijmeni = 'Novák';
SELECT jmeno, prijmeni FROM uzivatel WHERE prijmeni LIKE 'Novak%';
- Vypíše nejen všechny Nováky, ale i Novákové a Novákovi.
% je zástupný znak pro libovolný počet libovolných znaků pro řetězce v SQL.
Máme dvojí řazení a to:
Ascending [ASC] - Vzestupně = 1,2,3,4, ...
Descending [DESC] - Sestupně = 10,9,8,7, ...
SELECT jmeno, prijmeni FROM uzivatel WHERE prijmeni LIKE 'Novak%' ORDER BY prijmeni ASC;
- ASC znamená Ascending, tedy příjmení půjde vzestupně = od nejkratšího po nejdelší. Výsledek nám tak seřadí všechny uživatele podle délky příjmení, tzn. nejdříve budou:
- Novák
- Nováková
- Novákovi
/* 1. Vyhledejte všechny názvy žánrů, které mají ID 5 a méně */
SELECT name FROM genre WHERE idgenre <= 5;
/* 2. Vypište všechna ID žánrů, které jsou 2 cif. a seřaďte od nejmenšího */
SELECT idgenre FROM genre
WHERE (idgenre >= 10 AND idgenre <= 99) ORDER BY idgenre ASC;
/* 3. Vypište všechny názvy žánrů, které začínají na písmeno 'M' */
SELECT name FROM genre WHERE name LIKE 'M%';
Pomocí JOINů spojujeme 2 a více tabulek k sobě, abychom mohli vzájemně používat vazby a hodnoty z několika tabulek na jeden výpis.
INNER JOIN - Vypíše pouze obsah společné množiny A a B
LEFT JOIN - Vypíše celou tabulku A a společný obsah s tabulkou B
RIGHT JOIN - Vypíše celou tabulku B a společný obsah s tabulkou A
FULL OUTER JOIN - Vypíše obě množiny A a B
Tabulka A = uzivatel (protože ji voláme jako první z klauzule FROM)
Tabulka B = role (protože ji voláme jako druhou z klauzule JOIN)
SELECT uzivatel.jmeno, uzivatel.prijmeni, uzivatel.idrole, role.jmeno
FROM uzivatel JOIN role
ON uzivatel.idrole = role.idrole;
- uzivatel.jmeno - stejné jako v objektovém programování. Voláme entitu/tabulku uzivatel a z ní vlastnost jmeno. Kdybychom takto neoznačili správně vlastnosti, SŘBD neví, které jméno k jaké tabulce přiřadit.
- Klauzule ON nám přiřazuje cizí klíč z tabulky uzivatel k primárnímu klíči tabulky role, tak aby bylo jasná shodů klíčů. Kdybychom takto neprovedli, každý uživatel by ve výpisu měl takový počet řádků se svými hodnotami, kolik je řádků rolí.
Např. máme Josefa Nováka s idrole 5, dále máme celkem 4 role v tabulce role, výsledek by bez klauzule ON vypadal následovně:
Josef Novák 5 Admin
Josef Novák 5 Obsluha
Josef Novák 5 Supervisor
Josef Novák 5 Uživatel
PODMÍNKY - WHERE, LIKE, SIMILAR TO, ORDER BY, BETWEEN;
Count(), MIN(), MAX(), AVG(), SUM(); - Číselné
DISTINCT, GROUP BY, CONCAT(), UNION; - Řetězcové;
/* Spočítej kolik žánrů her je v DB */
SELECT Count(idgenre) FROM genre; /* = 10 */
SELECT SUM(idgenre) FROM genre;