1. Visão Geral das Variáveis do MySQL
O papel e os benefícios das variáveis no MySQL
As variáveis do MySQL são ferramentas úteis que permitem armazenar valores dentro de uma consulta e reutilizá-los em múltiplas consultas. Isso elimina a necessidade de buscar os mesmos dados repetidamente, tornando as instruções SQL mais limpas e eficientes.
Existem dois tipos principais de variáveis no MySQL:
- Variáveis definidas pelo usuário : Variáveis temporárias usadas dentro de uma sessão específica.
- Variáveis de sistema : Variáveis de configuração que controlam o comportamento do servidor MySQL.
Nesta seção, examinaremos primeiro as variáveis definidas pelo usuário em detalhes, seguidas pelas variáveis de sistema e como usá-las.
2. Tipos de Variáveis do MySQL
2.1 Variáveis Definidas pelo Usuário
As variáveis definidas pelo usuário são usadas dentro de uma única sessão e não são acessíveis por outros clientes. Isso garante o uso seguro de variáveis dentro da mesma sessão. As variáveis são declaradas usando o símbolo @.
Exemplo:
SET @user_id = 123;
SELECT @user_id;
Aqui, SET é usado para definir uma variável, e seu valor pode então ser reutilizado em consultas subsequentes. Outro método para atribuir valores é usar SELECT INTO.
SELECT name INTO @user_name FROM users WHERE id = @user_id;
2.2 Variáveis de Sistema
As variáveis de sistema são usadas para configurar o comportamento do servidor MySQL. Por exemplo, elas podem controlar o número máximo de conexões ou configurações de tempo limite.
Exemplo:
SHOW VARIABLES LIKE 'max_connections';
Esta consulta exibe o número máximo de conexões simultâneas permitidas no servidor MySQL. As variáveis de sistema podem ser alteradas usando o comando SET, seja em todo o servidor ou por sessão.

3. Declarando e Usando Variáveis
3.1 Declarando Variáveis
As variáveis podem ser declaradas usando SET ou SELECT INTO. O SET é direto e permite atribuir valores diretamente.
Exemplo:
SET @user_name = 'Sato';
SELECT @user_name;
Por outro lado, SELECT INTO permite armazenar os resultados de uma consulta diretamente em uma variável.
Exemplo:
SELECT name INTO @user_name FROM users WHERE id = 123;
3.2 Usando Variáveis em Consultas
As variáveis podem ser reutilizadas como parâmetros dentro de consultas. Por exemplo, a consulta a seguir recupera informações do usuário usando a variável @user_id.
Exemplo:
SELECT * FROM users WHERE id = @user_id;
Isso permite persistir dados em múltiplas consultas dentro da mesma sessão.
4. Casos de Uso Comuns
4.1 Otimização de Consultas
Ao armazenar valores usados frequentemente em variáveis e reutilizá-los em consultas posteriores, você pode melhorar o desempenho.
Exemplo:
SELECT MAX(id) INTO @max_id FROM users;
Aqui, o ID máximo do usuário é armazenado em uma variável e reutilizado em consultas subsequentes.
4.2 Operações de Data e Hora
As variáveis facilitam o manuseio de cálculos baseados em tempo e gerenciamento de dados históricos.
Exemplo:
SELECT NOW() INTO @current_time;
SELECT @current_time - INTERVAL 1 DAY INTO @yesterday;
Neste exemplo, o carimbo de data/hora atual e um deslocamento de tempo são armazenados em variáveis para reutilização em outras consultas.

5. Usando Variáveis em Procedimentos Armazenados
As variáveis dentro de procedimentos armazenados permitem lidar com lógica complexa de forma eficiente, melhorando a reutilização de código. O seguinte é um exemplo de um procedimento armazenado para recuperar informações do usuário:
Exemplo:
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;
Chamar este procedimento permite passar um ID de usuário como entrada e armazenar o resultado em uma variável.
6. Melhores Práticas para Usar Variáveis
6.1 Importância da Inicialização
Sempre inicialize as variáveis antes de usá-las. Variáveis não inicializadas podem retornar NULL. Isso é especialmente importante ao usar a mesma variável em múltiplas consultas.
6.2 Gerenciamento de Escopo de Sessão
Variáveis definidas pelo usuário são válidas apenas dentro da sessão atual. Quando a sessão termina, as variáveis são redefinidas. Se precisar de persistência entre sessões, considere alternativas como tabelas temporárias.

7. Técnicas Avançadas
7.1 Usando Cursors para Processamento de Dados
Ao trabalhar com grandes conjuntos de dados, você pode usar cursors para processar os resultados das consultas linha por linha. Isso permite armazenar valores em variáveis e processá‑los sequencialmente.
Exemplo:
DECLARE cursor_user CURSOR FOR SELECT id, name FROM users;
Com cursors, você pode processar eficientemente múltiplas linhas de dados.
8. Conclusão
Ao usar variáveis MySQL, você pode gerenciar consultas de forma mais eficiente, melhorando tanto a legibilidade quanto o desempenho. O uso adequado de variáveis definidas pelo usuário e variáveis de sistema permite operações de dados mais refinadas. Em particular, combinar variáveis com técnicas avançadas, como procedimentos armazenados e cursors, pode melhorar significativamente o processamento de dados no MySQL.


