1. Přehled proměnných MySQL
Role a výhody proměnných v MySQL
Proměnné MySQL jsou užitečné nástroje, které vám umožňují ukládat hodnoty v rámci dotazu a znovu je používat napříč více dotazy. To eliminuje potřebu opakovaně načítat stejná data, díky čemuž jsou SQL příkazy čistší a efektivnější.
V MySQL existují dva hlavní typy proměnných:
- Uživatelsky definované proměnné : Dočasné proměnné používané v rámci specifické relace.
- Systémové proměnné : Konfigurační proměnné, které řídí chování serveru MySQL.
V této sekci se nejprve podrobně podíváme na uživatelsky definované proměnné, následně na systémové proměnné a jak je používat.
2. Typy proměnných MySQL
2.1 Uživatelsky definované proměnné
Uživatelsky definované proměnné se používají v rámci jediné relace a nejsou přístupné jiným klientům. To zajišťuje bezpečné opětovné použití proměnných v rámci stejné relace. Proměnné se deklarují pomocí symbolu @.
Příklad:
SET @user_id = 123;
SELECT @user_id;
Zde se používá SET k definování proměnné a její hodnota může být poté znovu použita v následujících dotazech. Další metodou pro přiřazení hodnot je použití SELECT INTO.
SELECT name INTO @user_name FROM users WHERE id = @user_id;
2.2 Systémové proměnné
Systémové proměnné se používají k konfiguraci chování serveru MySQL. Například mohou řídit maximální počet připojení nebo nastavení časového limitu.
Příklad:
SHOW VARIABLES LIKE 'max_connections';
Tento dotaz zobrazí maximální počet souběžných připojení povolených na serveru MySQL. Systémové proměnné lze změnit pomocí příkazu SET, buď pro celý server, nebo pro jednotlivou relaci.

3. Deklarace a použití proměnných
3.1 Deklarace proměnných
Proměnné lze deklarovat pomocí SET nebo SELECT INTO. SET je přímočarý a umožňuje přímo přiřadit hodnoty.
Příklad:
SET @user_name = 'Sato';
SELECT @user_name;
Na druhé straně SELECT INTO vám umožňuje uložit výsledky dotazu přímo do proměnné.
Příklad:
SELECT name INTO @user_name FROM users WHERE id = 123;
3.2 Použití proměnných v dotazech
Proměnné lze znovu použít jako parametry v dotazech. Například následující dotaz načte informace o uživateli pomocí proměnné @user_id.
Příklad:
SELECT * FROM users WHERE id = @user_id;
To umožňuje zachovat data napříč více dotazy v rámci stejné relace.
4. Běžné použití
4.1 Optimalizace dotazů
Úložením často používaných hodnot do proměnných a jejich opětovným použitím v následujících dotazech můžete zlepšit výkon.
Příklad:
SELECT MAX(id) INTO @max_id FROM users;
Zde je maximální ID uživatele uloženo do proměnné a znovu použito v následujících dotazech.
4.2 Operace s daty a časem
Proměnné usnadňují zpracování výpočtů založených na čase a správu historických dat.
Příklad:
SELECT NOW() INTO @current_time;
SELECT @current_time - INTERVAL 1 DAY INTO @yesterday;
V tomto příkladu je aktuální časová značka a časový posun uloženy do proměnných pro opětovné použití v jiných dotazech.

5. Použití proměnných v uložených procedurách
Proměnné uvnitř uložených procedur vám umožňují efektivně zpracovávat složitou logiku a zlepšovat znovupoužitelnost kódu. Následující je příklad uložené procedury pro načtení informací o uživateli:
Příklad:
CREATE PROCEDURE get_user_info(IN user_id INT, OUT user_name VARCHAR(255))
BEGIN
SELECT name INTO user_name FROM users WHERE id = user_id;
END;
Volání této procedury vám umožňuje předat ID uživatele jako vstup a uložit výsledek do proměnné.
6. Nejlepší postupy pro použití proměnných
6.1 Důležitost inicializace
Vždy inicializujte proměnné před jejich použitím. Neinicializované proměnné mohou vrátit NULL. To je obzvláště důležité při používání stejné proměnné napříč více dotazy.
6.2 Správa rozsahu relace
Uživatelsky definované proměnné jsou platné pouze v rámci aktuální relace. Po ukončení relace se proměnné resetují. Pokud potřebujete trvalost napříč relacemi, zvažte alternativy, jako jsou dočasné tabulky.

7. Pokročilé techniky
7.1 Použití kurzoru pro zpracování dat
Při práci s velkými datovými sadami můžete použít kurzor k zpracování výsledků dotazů řádek po řádku. To vám umožní ukládat hodnoty do proměnných a zpracovávat je sekvenčně.
Příklad:
DECLARE cursor_user CURSOR FOR SELECT id, name FROM users;
S kurzorům můžete efektivně zpracovávat více řádků dat.
8. Závěr
Pomocí proměnných MySQL můžete spravovat dotazy efektivněji, což zlepšuje jak čitelnost, tak výkon. Správné použití uživatelsky definovaných a systémových proměnných umožňuje jemnější operace s daty. Zejména kombinace proměnných s pokročilými technikami, jako jsou uložené procedury a kurzorů, může výrazně vylepšit zpracování dat v MySQL.


