Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

SQL

  • Standard Query Language (SQL) je jazyk používaný pro správu a manipulaci s relačními databázemi - tyto databáze se nazývají často SQL databáze. SQL umožňuje uživatelům vytvářet, upravovat a dotazovat se na data uložená v databázi.

  • Funguje principielně podobně jako třeba excel. Data jsou organizována do tabulek, které se skládají z řádků a sloupců. Každá tabulka má své jméno a každý sloupec má svůj název a datový typ (například text, číslo, datum atd.).

  • SQL umožňuje provádět různé operace nad daty, jako je vkládání nových záznamů, aktualizace existujících záznamů, mazání záznamů a dotazování se na data pomocí různých kritérií. Dotazy v SQL jsou psány pomocí klíčových slov, jako jsou SELECT, INSERT, UPDATE, DELETE a další.

  • SQL je standardizovaný jazyk, což znamená, že existují různé implementace SQL pro různé databázové systémy (například MySQL, PostgreSQL, Oracle, Microsoft SQL Server atd.). Tyto implementace mohou mít své vlastní rozšíření a specifické funkce, ale základní syntaxe a koncepty SQL zůstávají stejné.

  • SQL je velmi důležitý pro práci s databázemi a je široce používán v různých odvětvích, jako jsou webové aplikace, podnikové systémy, datová analýza a další. Je to základní nástroj pro správu a manipulaci s daty v relačních databázích.

Co jsou to relační databáze?

  • Relační databáze jsou typem databáze, která organizuje data do tabulek, které jsou propojené pomocí vztahů. Každá tabulka obsahuje řádky (záznamy) a sloupce (atributy), které definují strukturu dat. Relační databáze umožňují efektivní ukládání, vyhledávání a manipulaci s daty pomocí SQL dotazů.

  • Relační databáze jsou založeny na matematické teorii relací a umožňují definovat vztahy mezi tabulkami pomocí klíčů (primární klíč, cizí klíč). Toto umožňuje efektivní organizaci dat a zajišťuje integritu dat v databázi. Například, pokud máme tabulku “Zaměstnanci” a tabulku “Oddělení”, můžeme použít cizí klíč k propojení těchto dvou tabulek a získat informace o zaměstnancích a jejich odděleních.

  • Takovým opakem jsou tzv. NoSQL databáze, které neorganizují data do tabulek a nejsou založeny na relačním modelu. NoSQL databáze jsou často používány pro práci s velkými objemy nestrukturovaných dat nebo pro specifické typy aplikací. Příkladem NoSQL databáze je MongoDB, která ukládá data ve formátu JSON a umožňuje flexibilní schéma.

Základní dotazy

CREATE

  • Používá se k vytvoření nové tabulky v databázi. V různých databázových systémech se může využívat i pro ostatní objekty, jako jsou databáze, indexy, pohledy atd.
CREATE TABLE users (id INT PRIMARY KEY, jmeno VARCHAR(50));

Tento dotaz vytvoří novou tabulku s názvem “users” a dvěma sloupci: “id” a “jmeno”.

INSERT

  • Používá se k vložení nových záznamů do databáze.
INSERT INTO users (id, jmeno) VALUES (1, 'John');

Tento dotaz vloží nový záznam do tabulky s hodnotami “id” = 1 a “jmeno” = ‘John’. Stringy se v SQL obvykle uzavírají do jednoduchých uvozovek (‘string’), zatímco čísla se zapisují bez uvozovek.

SELECT

  • Používá se k výběru dat z databáze.
 SELECT * FROM users;

Tento dotaz vybere všechny záznamy z tabulky. Výsledek by vypadal:

idjmeno
1John

UPDATE

  • Používá se k aktualizaci existujících záznamů v databázi.
UPDATE users SET jmeno = 'James' WHERE id = 1;

Tento dotaz změní hodnotu “jmeno” na ‘James’ pro záznam, který má “id” = 1. Po provedení tohoto dotazu by výsledek dotazu SELECT * FROM users; vypadal takto:

idjmeno
1James

DELETE

  • Používá se k odstranění záznamů z databáze.
 DELETE FROM users WHERE podmínka;

Tento dotaz odstraní záznamy, které splňují podmínku.

Komentáře

  • V SQL lze používat komentáře pro vysvětlení kódu nebo pro dočasné zakomentování části dotazu. Komentáře se píší pomocí dvou pomlček -- pro jednořádkové komentáře nebo pomocí /* */ pro víceřádkové komentáře. Například:
    • -- Toto je jednořádkový komentář
    • /* Toto je víceřádkový komentář */

Různé implementace

  • Jak již bylo zmíněno, existují různé implementace SQL pro různé databázové systémy. Každá implementace může mít své vlastní rozšíření a specifické funkce, ale základní syntaxe a koncepty SQL zůstávají stejné. Například MySQL, PostgreSQL, Oracle a Microsoft SQL Server jsou populární databázové systémy, které podporují SQL.
  • Mezi nejpoužívanější databázové systémy podporující SQL patří například MySQL, PostgreSQL, Oracle Database nebo Microsoft SQL Server.
  • Nejpopulárnější databázové systémy
    • MySQL: Open-source databázový systém, který je široce používán pro webové aplikace.
    • PostgreSQL: Open-source databázový systém, který je známý pro svou robustnost a podporu pokročilých funkcí.
    • Oracle Database: Komerční databázový systém, který je často používán ve velkých podnicích.
    • Microsoft SQL Server: Komerční databázový systém, který je často používán ve firemním prostředí a integruje se s dalšími produkty Microsoftu.
    • SQLite - jednoduchá open-source databáze, která se od ostatních liší tím, že ukládá všechna data do jediného souboru. Nevyžaduje samostatný databázový server, což ji činí vhodnou pro menší projekty, mobilní aplikace nebo vývoj a testování.

Integrace do programovacích jazyků

  • SQL se často používá v kombinaci s programovacími jazyky, jako jsou Python, Java, C# a další, pro práci s databázemi. Programovací jazyky poskytují knihovny a nástroje pro připojení k databázi, provádění SQL dotazů a zpracování výsledků. Například v Pythonu lze použít knihovnu sqlite3 pro práci s SQLite databází nebo psycopg2 pro práci s PostgreSQL databází.
  • Při programování s databázemi se často používá binding, což je technika, která umožňuje bezpečné vkládání hodnot do SQL dotazů a zabraňuje SQL injection útokům. Binding se provádí pomocí parametrů, které jsou nahrazeny skutečnými hodnotami při provádění dotazu. Například v Pythonu s knihovnou sqlite3 lze použít následující kód pro bezpečné vložení hodnot do SQL dotazu:
import sqlite3

conn = sqlite3.connect('example.db')
cursor = conn.cursor()
user_name = "John"
user_age = 30
cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", (user_name, user_age))
conn.commit()
  • V tomto příkladu jsou hodnoty name a age bezpečně vloženy do SQL dotazu pomocí parametrů ?, což zabraňuje SQL injection útokům.

Shrnutí

  • SQL je jazyk pro správu a manipulaci s relačními databázemi.
  • Umožňuje vytvářet, upravovat a dotazovat se na data uložená v databázi.
  • Každá implementace SQL může mít své vlastní rozšíření, ale základní syntaxe zůstává stejná.
  • Pro využití SQL v programovacích jazycích se často používají knihovny a nástroje pro připojení k databázi a bezpečné provádění SQL dotazů.

Reference