В SQL переменная — это именованное хранилище данных.

Переменные используются для хранения данных и результатов вычислений.
Названия переменных начинаются с символа @, после которого могут использоваться буквы латинского алфавита, цифры и знаки $, _.
Переменные не чувствительны к регистру. Это означает, что @year и @YEAR то же самое.
Далее будут рассмотрены примеры работы с пользовательскимипеременными в SQL на примере MySQL.
Таблица movies
| id | title | release_year | genre | rating |
|---|---|---|---|---|
| 1 | The Shawshank Redemption | 1994 | Drama | 9 |
| 2 | The Godfather | 1972 | Crime | 9 |
| 3 | The Godfather: Part II | 1974 | Crime | 9 |
| 4 | The Dark Knight | 2008 | Action | 9 |
| 5 | 12 Angry Men | 1957 | Drama | 8 |
| 6 | Schindlers List | 1993 | Biography | 8 |
| 7 | Pulp Fiction | 1994 | Crime | 8 |
| 8 | The Lord of the Rings: The Return of the King | 2003 | Adventure | 8 |
| 9 | Fight Club | 1999 | Drama | 8 |
| 10 | The Good, the Bad and the Ugly | 1966 | Western | 8 |
Есть два способа создать переменную и присвоить ей значение.
Синтаксис создания переменной с присвоением выглядит так:
SET @variable_name := value; Начинаем с ключевого слова SET, далее после символа @ указываем название переменной и присваиваем ей значение после оператора :=
Например, если мы хотим выбрать фильмы, которые были выпущены в 1994 году, мы можем использовать следующий запрос:
SET @year := 1994;
SELECT title
FROM movies
WHERE release_year = @year;
Результат
| title |
|---|
| The Shawshank Redemption |
| Pulp Fiction |
Например, если мы хотим выбрать фильмы, которые выпущены между 1994 и 2000 годом, мы можем использовать следующий запрос:
SET @year := 1994;
SELECT title
FROM movies
WHERE release_year = @year;
Обратите внимание на то что объявление переменных (с присваиванием) можно записывать через запятую после ключевого слова SET
Результат
| title |
|---|
| The Shawshank Redemption |
| Pulp Fiction |
| Fight Club |
| The Matrix |
Например, если мы хотим выбрать фильмы, заголовок которых начинается с "The", мы можем использовать следующий запрос:
SET @search := 'The%';
SELECT title
FROM movies
WHERE title LIKE @search;
Результат
| title |
|---|
| The Shawshank Redemption |
| The Godfather |
| The Godfather: Part II |
| The Dark Knight |
| The Lord of the Rings: The Return of the King |
| The Good, the Bad and the Ugly |
| The Matrix |
Синтаксис создания переменной с присвоением выглядит так:
SELECT @variable_name := value; Начинаем с ключевого слова SELECT, далее после символа @ указываем имя переменной и присваиваем ей значение после оператора :=
После назначения вы можете использовать переменную в последующем операторе, где выражение разрешено, например, в предложении WHERE, операторе INSERT или UPDATE.
Например:
SELECT @max_year := MAX(release_year)
FROM movies;
SELECT title
FROM movies
WHERE release_year = @max_year;
Результат
| title |
|---|
| The Dark Knight |