Пользовательские переменные
Иногда вы хотите передать значение из оператора SQL в другой оператор SQL. Для этого вы сохраняете значение в пользовательской переменной MySQL в первом операторе и ссылаетесь на него в последующих инструкциях.
Для создания пользовательской переменной вы используете формат @variable_name
, в котором variable_name
состоит из буквенно-цифровых символов. Максимальная длина пользовательской переменной составляет 64 символа с MySQL 5.7.5
Пользовательские переменные не чувствительны к регистру. Это означает, что @id
и @ID
то же самое.
Вы можете назначить пользовательскую переменную определенным типам данных, таким как целое число
, число с плавающей запятой
, десятичное число
, строка
, NULL
.
Пользовательская переменная, определенная одним клиентом, не видна другим клиентам. Другими словами, пользовательская переменная является специфичной для сессии.
Обратите внимание, что пользовательские переменные являются специфичным для MySQL расширением стандарта SQL. Они могут быть недоступны в других системах баз данных.
Переменная MySQL
Есть два способа присвоить значение пользовательской переменной.
Первый способ заключается в следующем:
mysql>SET @variable_name := value;
Вы можете использовать либо :=
, либо =
как оператор присваивания в операторе SET
. Например, оператор присваивает число 100
переменной @counter
:
mysql>SET @counter = 100;
Второй способ присвоения значения переменной заключается в использование оператора SELECT
. В этом случае вы должны использовать оператор присваивания :=
, потому что в операторе SELECT
в MySQL рассматривается оператор =
как оператор равенства:
mysql>SELECT @variable_name := value;
После назначения вы можете использовать переменную в последующем операторе, где выражение разрешено: WHERE
, INSERT
, UPDATE
.
Примеры переменных
Следующий оператор получает самый дорогой продукт в таблице products
и назначает цену пользовательской переменной @msrp
:
mysql>SELECT
@msrp:=MAX(msrp)
FROM
products;
Следующий оператор использует переменную @msrp
для запроса информации о самом дорогом продукте:
mysql>SELECT
productCode, productName, productLine, msrp
FROM
products
WHERE
msrp = @msrp;