В 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 |