Resumo : neste tutorial, você aprenderá como usar variáveis MySQL em instruções SQL.
Introdução às variáveis definidas pelo usuário MySQL
Às vezes, você deseja passar um valor de uma instrução SQL para outras instruções SQL na mesma sessão.
Para fazer isso, armazene o valor em uma variável definida pelo usuário na primeira instrução e use-o nas instruções subsequentes.
Para criar uma variável definida pelo usuário, use a seguinte sintaxe:
@variable_name
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Nesta sintaxe, @variable_name
é uma variável definida pelo usuário. É precedido pelo @
símbolo. No MySQL, as variáveis definidas pelo usuário não diferenciam maiúsculas de minúsculas , o que significa que @id
e @ID
são as mesmas variáveis.
Observe que as variáveis definidas pelo usuário são a extensão específica do MySQL para o padrão SQL. Eles podem não estar disponíveis em outros sistemas de banco de dados.
Atribuição de variável MySQL
O MySQL oferece duas maneiras de atribuir um valor a uma variável definida pelo usuário.
1) Usando a instrução SET
Para atribuir um valor a uma variável, você pode usar a instrução SET da seguinte forma:
SET @variable_name = value;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Esta instrução atribui o valor a @variable_name.
Além de usar o operador de atribuição =, você pode usar o operador :=:
SET @variable_name := value;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
2) Usando a instrução SELECT
A seguinte instrução SELECT atribui a value
à variável definida pelo usuário @variable_name
:
SELECT @variable_name := value;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Observe que neste caso, você deve usar o :=
operador de atribuição porque a SELECT
instrução trata o =
operador como o operador igual.
Exemplos de variáveis MySQL
Usaremos a products
tabela do banco de dados de exemplo para a demonstração.
1) Exemplo básico de variável definida pelo usuário
A instrução a seguir recupera o produto mais caro da products
tabela e atribui o preço à variável definida pelo usuário @msrp
:
SELECT
@msrp := MAX(msrp)
FROM
products;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+------------------+
| @msrp:=MAX(msrp) |
+------------------+
| 214.30 |
+------------------+
1 row in set, 1 warning (0.03 sec)
Linguagem de código: JavaScript ( javascript )
A instrução a seguir utiliza a @msrp
variável para consultar as informações do produto mais caro.
SELECT
productCode,
productName,
productLine,
msrp
FROM
products
WHERE
msrp = @msrp;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+-------------+--------------------------+--------------+--------+
| productCode | productName | productLine | msrp |
+-------------+--------------------------+--------------+--------+
| S10_1949 | 1952 Alpine Renault 1300 | Classic Cars | 214.30 |
+-------------+--------------------------+--------------+--------+
1 row in set (0.00 sec)
Linguagem de código: JavaScript ( javascript )
2) Usando uma variável definida pelo usuário em uma consulta que retorna vários valores
Uma variável definida pelo usuário pode conter um único valor. Se a instrução SELECT retornar vários valores, a variável assumirá o valor da última linha do conjunto de resultados.
SELECT
@buy_price := buyPrice
FROM
products
WHERE
buyPrice > 95
ORDER BY
buyPrice;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+----------------------+
| @buy_price:=buyPrice |
+----------------------+
| 95.34 |
| 95.59 |
| 98.30 |
| 98.58 |
| 101.51 |
| 103.42 |
+----------------------+
6 rows in set, 1 warning (0.00 sec)
Linguagem de código: JavaScript ( javascript )
Neste exemplo, @buy_price
armazenará o último valor no conjunto de resultados:
SELECT @buy_price;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+------------+
| @buy_price |
+------------+
| 103.42 |
+------------+
1 row in set (0.00 sec)
Linguagem de código: JavaScript ( javascript )
Resumo
- Use as variáveis definidas pelo usuário do MySQL nas instruções SQL para passar dados entre instruções dentro de uma sessão.