Змінні SQL: оголошення, встановлення та вибір змінної SQL Server
Що таке змінна в SQL Server?
У MS SQL змінні є об’єктом, який діє як заповнювач місця пам’яті. Змінна містить одне значення даних.
Типи змінних у SQL: локальні, глобальні
У MS SQL є два типи змінних:
- Локальна змінна
- Глобальна змінна.
Однак користувач може створити лише локальну змінну.
На малюнку нижче пояснюються два типи доступних змінних MS SQL сервер.
Локальна змінна
- Користувач оголошує локальну змінну.
- За замовчуванням локальна змінна починається з @.
- Кожна область видимості локальної змінної має обмеження на поточна партія або процедура протягом будь-якого сеансу.
Глобальна змінна
- Система підтримує глобальну змінну. Користувач не може їх оголосити.
- Глобальна змінна починається з @@
- Він зберігає інформація, пов'язана з сеансом.
Як ОГОЛОШИТИ змінну в SQL
- Перш ніж використовувати будь-яку змінну в пакеті або процедурі, вам потрібно оголосити змінну.
- Команда DECLARE використовується для ОГОЛОШЕННЯ змінної, яка діє як заповнювач для місця пам’яті.
- Лише після того, як оголошення зроблено, змінну можна використовувати в наступній частині партії або процедури.
Синтаксис TSQL:
DECLARE { @LOCAL_VARIABLE[AS] data_type [ = value ] }
Правила:
- Ініціалізація є необов'язковою річчю під час оголошення.
- За замовчуванням DECLARE ініціалізує змінну значенням NULL.
- Використання ключового слова "AS" необов'язкове.
- Щоб оголосити більше однієї локальної змінної, використовуйте кому після першого визначення локальної змінної, а потім визначте назву наступної локальної змінної та тип даних.
Приклади оголошення змінної
Запит: з "AS"
DECLARE @COURSE_ID AS INT;
Запит: без "AS"
DECLARE @COURSE_NAME VARCHAR (10);
Запит: DECLARE дві змінні
DECLARE @COURSE_ID AS INT, @COURSE_NAME VARCHAR (10);
Присвоєння значення змінній SQL
Ви можете призначити значення змінній наступним чином три способи:
- Під час оголошення змінної за допомогою ключового слова DECLARE.
- Використання SET
- Використання SELECT
Давайте детально розглянемо всі три способи:
Під час оголошення змінної за допомогою ключового слова DECLARE
Синтаксис T-SQL:
DECLARE { @Local_Variable [AS] Datatype [ = value ] }
Тут після типу даних ми можемо використовувати '=', а потім значення, яке буде призначено
Запит:
DECLARE @COURSE_ID AS INT = 5 PRINT @COURSE_ID
Використання SQL SET VARIABLE
Іноді ми хочемо тримати оголошення та ініціалізацію окремо. SET можна використовувати для призначення значень змінній після оголошення змінної. Нижче наведено різні способи призначення значень за допомогою SET:
Приклад: Присвоєння значення змінній за допомогою SET
Синтаксис:
DECLARE @Local_Variable <Data_Type> SET @Local_Variable = <Value>
Запит:
DECLARE @COURSE_ID AS INT SET @COURSE_ID = 5 PRINT @COURSE_ID
Приклад: призначити значення кілька змінних за допомогою SET.
Синтаксис:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable_2 <Data_Type>, SET @Local_Variable_1 = <Value_1> SET @Local_Variable_2 = <Value_2>
Правило: Одне ключове слово SET можна використовувати лише для призначення значення одна змінна.
Запит:
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SET @COURSE_ID = 5 SET @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Приклад: Присвоєння значення змінній за допомогою a Скалярний підзапит за допомогою SET
Синтаксис:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable_2 <Data_Type>,SET @Local_Variable_1 = (SELECT <Column_1> from <Table_Name> where <Condition_1>)
Правила:
- Введіть запит у дужки.
- Запит має бути скалярним. Скалярний запит — це запит, результатом якого є лише один рядок і один стовпець. Інакше запит видасть помилку.
- Якщо запит повертає нуль рядків, то для змінної встановлюється значення EMPTY, тобто NULL.
Припущення: Припустімо, що у нас є таблиця "Guru99" з двома стовпцями, як показано нижче:
Ми будемо використовувати таблицю «Guru99» у подальших уроках
Приклад 1: Коли підзапит повертає один рядок як результат.
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 3) PRINT @COURSE_NAME
Приклад 2: коли підзапит повертає нульовий рядок як результат
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
У цьому конкретному випадку значення змінної є EMPTY, тобто NULL.
Використання SQL SELECT VARIABLE
Подібно до SET, ми також можемо використовувати SELECT для призначення значень змінним після оголошення змінної за допомогою DECLARE. Нижче наведено різні способи призначення значення за допомогою SELECT:
Приклад: Присвоєння значення змінній за допомогою SELECT
Синтаксис:
DECLARE @LOCAL_VARIABLE <Data_Type> SELECT @LOCAL_VARIABLE = <Value>
Запит:
DECLARE @COURSE_ID INT SELECT @COURSE_ID = 5 PRINT @COURSE_ID
Приклад: Присвоєння значення декільком змінним за допомогою SELECT
Синтаксис:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Value_1>, @Local_Variable _2 = <Value_2>
Правила: На відміну від SET, SELECT можна використовувати для призначення значення до кількох змінних розділені кома.
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SELECT @COURSE_ID = 5, @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Приклад: присвоєння значення змінній за допомогою підзапиту за допомогою SELECT
Синтаксис:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = (SELECT <Column_1> from <Table_name> where <Condition_1>)
Правила:
- Введіть запит у круглі дужки.
- Запит має бути скалярним. Скалярний запит — це запит із результатом у вигляді одного рядка й одного стовпця. Інакше запит видасть помилку.
- Якщо запит повертає нуль рядків, то змінна має значення EMPTY, тобто NULL.
- Перегляньте нашу таблицю «Guru99».
Приклад 1: Коли підзапит повертає один рядок як результат.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 1) PRINT @COURSE_NAME
Приклад 2: Коли підзапит повертає в результаті нульовий рядок
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
У цьому конкретному випадку змінна має значення EMPTY, тобто NULL.
Приклад 3: Призначте значення змінній за допомогою звичайного оператора SELECT.
Синтаксис:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Column_1> from <Table_name> where <Condition_1>
Правила:
- На відміну від SET, якщо результатом запиту є кілька рядків, значення змінної встановлюється на значення останнього рядка.
- Якщо запит повертає нуль рядків, то для змінної встановлюється значення EMPTY, тобто NULL.
Запит 1: запит повертає один рядок.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 3 PRINT @COURSE_NAME
Запит 2: запит повертає кілька рядків.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 PRINT @COURSE_NAME
У цьому особливому випадку значення змінної є встановити значення останнього рядка.
Запит 3: запит повертає нуль рядків.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 5 PRINT @COURSE_NAME
У цьому конкретному випадку змінна має значення EMPTY, тобто NULL.
Інші приклади змінних SQL
Використання змінної в запиті
Запит:
DECLARE @COURSE_ID Int = 1 SELECT * from Guru99 where Tutorial_id = @COURSE_ID
Цікаві факти про змінні SQL Server!
- Локальну змінну можна відобразити за допомогою PRINT, а також SELECT COMMAND
- Тип даних таблиці не дозволяє використовувати "AS" під час оголошення.
- SET відповідає стандартам ANSI, а SELECT — ні.
- Також дозволено створення локальної змінної з іменем @. Ми можемо оголосити це, наприклад, як:
'DECLARE @@ as VARCHAR (10)'
Підсумки
- Змінні — це об’єкт, який діє як заповнювач.
- Існує два типи змінних: локальні та глобальні
- Ми можемо призначити змінну трьома способами: за допомогою 1) DECLARE 2) за допомогою SET 3) за допомогою SELECT