Dotazovací jazyk SQL
Historie SQL
- IBM vyvinula sadu příkazů pro ovládání databází SEQUEL (Structured English Query Language)
- Oracle Corporation přinesla svou platformu Oracle Database
- IBM uvedla SQL/DS a DB2
- Další systémy - Progres, Informix a SyBase
- Všechny používaly varianty jazyka SEQUEL, který se později přejmenoval na SQL
Datové typy v SQL
Základní kategorie
- Číselné typy
- Řetězcové typy
- Typy pro datum a čas
Číselné typy
- TINYINT
- SMALLINT
- MEDIUMINT
- INT
- BIG INT
- FLOAT
- DOUBLE
- DECIMAL
Číselné typy se liší možnou velikostí uchovávaného čísla nebo jeho desetinnými čísly.
Řetězcové typy
- CHAR
- VARCHAR
- TINYBLOB
- BLOB
- MEDIUMBLOB
- LONGBLOB
- TINYTEXT
- TEXT
- MEDIUMTEXT
- LONGTEXT
Řetězcové typy se liší možným počtem uchovaných znaků nebo porovnáváním jejich velikostí. (některé porovnávají některé ne).
Datumy a časy
- DATE
- TIME
- DATETIME
- TIMESTAMP
- YEAR
Liší se formátem zapisování. TIMESTAMP do sebe vloží aktuální čas při změně záznamu, ve kterém se nachází.
Modifikátory
- NULL
- Sloupec může zůstat prázdný
- NOT NULL
- Sloupec nemůže zůstat prázdný
- UNSIGNED
- Sloupec nemůže mít záporné hodnoty a může tak obsahovat více čísel v plusových hodnotách
- SIGNED
- Sloupec může obsahovat záporné hodnoty, sníží se jeho nejvyšší možná hodnota v kladných hodnotách
- AUTO_INCREMENT
- Každý záznam přičítá k poslednímu 1 a automaticky se tak s každým přidaným záznamem zvedá hodnota v daném sloupci
- DEFAULT
- Označuje jakou hodnotu bude mít sloupec, pokud do něj žádnou hodnotu nedosadíme
Integritní omezení
Udržují databázi ve stavu, kdy jsou ve všech polích pravdivé a validní informace. Integritní omezení způsobí například to, že když je do databáze vložen záznam s prázdným polem a daný sloupec má nastaveno omezení NOT NULL, tak databáze daný záznam odmítne
- DEFAULT
- NOT NULL
- PRIMARY KEY
- Hodnota primárního klíče musí být jedinečná
- FOREIGN KEY
- Hodnota cizího klíče musí být jedinečná
- Odkazuje na záznamy z jiných tabulek(relací)
- UNIQUE
- Hodnota daného sloupce musí být jedinečná
Příkazy pro práci s databází, tabulkami a sloupci
- CREATE DATABASE db_name;
- USE db_name;
- DROP DATABASE db_name;
- CREATE TABLE table_name (column_name column_datatype column_modificators);
- ALTER TABLE table_name (DROP/ALTER/MODIFY) column_name column_datatype;
- DROP TABLE table_name;
Příkazy pro manipulaci s daty
- INSERT INTO table_name (column_name, column_name) VALUES (value, value)
- UPDATE table_name SET column_name = value WHERE condition;
- DELETE FROM table_name WHERE condition;
Příkaz SELECT
- Slouží pro sběr dat z databáze a sesbírané data zobrazí příkaz v tabulce výsledků
- SELECT (column_name or * or SQL aggregate function) FROM
table_name WHERE condition;
- * označí všechny sloupce v dané tabulce
- Column_name označí pouze daný sloupec v dané tabulce
- Do příkazu se může dát také SQL funkce, například funkcí COUNT() můžeme spočítat počet záznamů (COUNT(*))
Spojování tabulek
- Slouží ke spojení záznamů z dvou nebo více tabulek, na základě pojení pomocí cizích klíčů
- Používá se k tomu příkaz JOIN
SELECT Orders.OrderID,
Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID =
Customers.Customer ID;
Agregační funkce
Tyto funkce umožní provést akce na hodnotách a vrácení výsledku v jedné číselné hodnotě
- AVG()
- spočítá průměr hodnot
- COUNT()
- spočítá počet záznamů v dané tabulce
- MIN()
- vrátí minimální hodnotu
- MAX()
- vrátí maximální hodnotu
- SUM()
- vrátí součet všech hodnot
Skalární funkce
- Vrací jednu specifickou hodnotu
- Může přijmout více parametrů, provede kalkulaci a poté vrátí jednu hodnotu
Typy
- Funkce pro práci s řetězci
- Funkce pro práci s čísly
- Funkce pro práci s datumem
- Funkce na konvertování
- Funkce na zpracovávání NULL hodnoty
Příklady
- CONCAT
- Funkce vrátí jeden string spojený ze dvou nebo více řetězců
- SELECT CONCAT(“Karel”, “je”, “nej”) => Kareljenej
- LENGTH
- Funkce vrátí délku řetězce
- SELECT LENGTH(“Ahoj ja jsem karel”) => 18
- ROUND
- Zaokrouhlí hodnotu
- SELECT ROUND(59.9) => 60
Kvíz
BETACo znamená zkratka SQL?
Zkratka Structured Query Language (strukturovaný dotazovací jazyk). Jde o de facto mezinárodní standardizovaný a mocný programovací jazyk, vytvořený výhradně ke spravování, definování a kladení specifických logických dotazů nad masivními objemy dat v relačních databázích.
Jaký SQL příkaz se používá pro výběr dat z tabulky?
Klíčové slovo `SELECT` tvoří nejzákladnější databázový příkaz pro získávání (tzv. čtení či dotazování) uložených dat a vytyčených sloupců z tabulek. Dotaz pouze zobrazuje formátovaná pole dat jako výsledný přehled, a to bez jakéhokoliv rizika jejich narušení.
Jaký SQL příkaz vloží nový záznam do tabulky?
Konstrukce příkazu `INSERT INTO` (následovaná cílovým názvem tabulky a seznamem dodávaných hodnot) přikazuje motoru databáze rozhrnout prostor a fyzicky založit zcela nový datový řádek se zapisovanými informacemi do specifických políček sloupcových hlaviček.
Jaký SQL příkaz aktualizuje existující záznamy?
Aktualizační chirurgický příkaz `UPDATE` slouží k precizní úpravě dat. Nemění strukturu databáze, ale potichu a inteligentně modifikuje uložené hodnoty ve specifickém sloupci a ve stávajícím starším řádku (většinou navázáno na ID záznamu přes klauzuli `WHERE`).
Jaký SQL příkaz smaže záznamy z tabulky?
Neodvolatelný a destruktivní povel příkazu `DELETE` z databáze natrvalo vymítá kompletní a celé řádky se záznamy. Pokud příkaz neprozřetelně neomezíte filtrem pomocí `WHERE`, v mžiku navždy srovnáte se zemí masivní miliony cenných uživatelských dat z celé tabulky.
Co dělá klauzule WHERE v SQL?
Neocenitelná ořezávací logická ohrada pro SQL příkazy. Tím, že do motoru odevzdáte podmínku typu `WHERE vek > 18`, zajistíte precizní vytřídění výsledků – z aplikací pak obdržíte (či vymažete) ze statisícových tabulek zpět jen přesně hrstku zacílených, splňujících relevantních datových řádků.
Jaká agregační funkce v SQL spočítá průměr?
Vestavěná matematická funkce SQL vycházející z agregace (pod zkratkou od anglického 'Average'). Než aby SQL server přetěžoval kód zbytečným posíláním haldy všech sebraných dílčích čísel k vyřešení programu, vypočítá průměr sám a bleskurychle odešle jako výsledek jedno jediné číslo.
Co dělá SQL příkaz JOIN?
Pokročilé logické dotazování přes sjednocovací operátory `JOIN`. Na základě vazby cizích klíčů chytře splete hodnoty dvou odlišných fyzických tabulek a k front-endu dodá spojené obsáhlé jednolité pole. Nemusíte tak odesílat mnoho drobných dotazů jeden po druhém přes databázovou síť.
Jaký SQL příkaz vytvoří novou tabulku?
Základní a stěžejní definice spadající pod tvorbu ze skupiny DDL (Data Definition Language). Mnohem dříve, než vůbec smíte plnit databázi řádky, zavoláte do struktur přes `CREATE TABLE` hrubý prvotní nákres, obálku a architektonický plán tvořící prázdnou strukturu pro datový skladový prostor ze sloupců.
Co dělá klauzule ORDER BY v SQL?
Úhledné estetické i paměťové uspořádání k závěru dotazů. Parametrikem `ORDER BY` motoru databáze oznámíte, aby načtenou sestavu dat neshodil k počítači ve změti pořadí, v jakém to fyzicky vytěžil po discích, nýbrž je dle konkrétního sloupce zorganizoval přísně vzestupně nebo abecedně seskládaným řazením.