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 dotazů a znovu je používat v několika dotazech. Tím se eliminuje nutnost opakovaně načítat stejná data a pomáhá to učinit SQL příkazy stručnějšími a efektivnějšími.
V MySQL existují hlavně dva typy proměnných:
- Uživatelsky definované proměnné : Dočasné proměnné používané v rámci konkrétní relace.
- Systémové proměnné : Konfigurační proměnné používané k řízení chování serveru MySQL.
V této sekci se nejprve podrobně podíváme na uživatelsky definované proměnné a poté vysvětlíme, jak používat systémové proměnné.
2. Typy proměnných MySQL
2.1 Uživatelsky definované proměnné
Uživatelsky definované proměnné jsou omezeny na jednu relaci a nemohou být přístupné jiným klientům. To zajišťuje, že proměnné mohou být bezpečně znovu použity v rámci stejné relace. Proměnné se deklarují pomocí symbolu @.
Příklad:
SET @user_id = 123;
SELECT @user_id;
Jak je ukázáno výše, můžete definovat proměnnou pomocí SET a znovu použít její hodnotu v následujících dotazech. Další metodou, jak uložit výsledky dotazu do proměnných, je 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 úpravě nastavení serveru MySQL. Například můžete spravovat maximální počet spojení nebo konfigurovat nastavení časových limitů.
Příklad:
SHOW VARIABLES LIKE 'max_connections';
Tento dotaz zobrazuje maximální počet současných spojení povolených serverem MySQL. Systémové proměnné lze měnit pomocí příkazu SET a lze je použít buď globálně, nebo na úrovni relace.
3. Deklarace a používání proměnných
3.1 Jak deklarovat proměnné
Proměnné můžete deklarovat pomocí SET nebo SELECT INTO. Příkaz SET je jednoduchý a umožňuje přiřadit hodnotu přímo.
Příklad:
SET @user_name = 'Sato';
SELECT @user_name;
Na druhou stranu použití SELECT INTO vám umožní 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žívání proměnných v dotazech
Pomocí proměnných je můžete znovu použít jako parametry v dotazech. Například následující dotaz získává informace o uživateli pomocí proměnné @user_id.
Příklad:
SELECT * FROM users WHERE id = @user_id;
Tímto způsobem vám proměnné umožňují uchovat data napříč několika dotazy ve stejné relaci.
4. Běžné případy použití
4.1 Optimalizace dotazů
Výkon můžete zlepšit tím, že často používaná data jednou uložíte do proměnné a znovu je použijete v následujících dotazech.
Příklad:
SELECT MAX(id) INTO @max_id FROM users;
Zde je maximální ID uživatele uloženo v proměnné a znovu použito v pozdějších dotazech.
4.2 Případy použití manipulace s datem a časem
Používání proměnných pro výpočty data a času nebo správu historických dat usnadňuje práci s časovými řadami.
Příklad:
SELECT NOW() INTO @current_time;
SELECT @current_time - INTERVAL 1 DAY INTO @yesterday;
V tomto příkladu jsou aktuální čas a konkrétní časový rozdíl uloženy v proměnných a znovu použity v dalších dotazech.

5. Používání proměnných v uložených procedurách
Používání proměnných v uložených procedurách vám umožňuje zpracovávat složitou logiku strukturovaně a zlepšuje znovupoužitelnost kódu. Následující příklad ukazuje uloženou proceduru, která získává informace 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ím této procedury můžete předat ID uživatele jako argument a výsledek uložit do proměnné.
6. Nejlepší postupy pro používání proměnných
6.1 Důležitost inicializace
Variables should always be initialized before use. Referencing an uninitialized variable may return NULL. This is especially important when using the same variable across multiple queries.
6.2 Správa rozsahu v rámci relace
User-defined variables are valid only within a session. When the session ends, the variables are reset. If you need to use variables across sessions, consider alternative approaches such as temporary tables.
7. Pokročilé techniky
7.1 Zpracování dat pomocí kurzorů
When processing large amounts of data, you can use cursors to handle query results row by row. This allows you to store query results in variables while performing sequential processing.
Příklad:
DECLARE cursor_user CURSOR FOR SELECT id, name FROM users;
Using cursors enables efficient processing of multiple rows of data.
8. Závěr
By using MySQL variables, you can efficiently manage queries and improve both code readability and performance. Properly distinguishing between user-defined and system variables enables more sophisticated data operations. In particular, combining variables with advanced techniques such as stored procedures and cursors can significantly enhance data processing capabilities in MySQL.


