Содержание
Лабораторная работа № 4
Освоение программирования с помощью встроенного языка Transact SQL
Цель работы – знакомство с основными приципами программирования в MS SQL Server средствами встроенного языка Transact SQL.
Содержание работы:
1. Знакомство с правилами обозначения синтаксиса команд в справочной системе MS SQL Server (утилита Books Online).
2. Изучение правил написания программ на Transact SQL.
3. Изучение правил построения идентификаторов, правил объявления переменных и их типов.
4. Изучение работы с циклами и ветвлениями.
5. Изучение работы с переменными типа Table и Cursor.
6. Проработка всех примеров, анализ результатов их выполнения.
7. Выполнение индивидуальных заданий по вариантам.
Пояснения к выполнению работы
Для освоения программирования используем пример базы данных c названием DB_Books, которая была создана в лабораторной работе №1.
При выполнении примеров и заданий обращайте внимание на соответствие названий БД, таблиц и других объектов проекта.
1. Специальные знаки и простейшие операторы в Transact SQL
| Знак | Назначение | Знак | Назначение |
|---|---|---|---|
| * | Знак умножения | » » | В них заключают строковые значения, если SET QUOTED_IDENTIFIER OFF |
| - | Знак вычитания | ‘ ’ | В них заключают строковые значения* |
| % | Остаток от деления двух чисел | <> | Не равно |
| + | Знак сложения или конкатенации (объединение двух строк в одну) | [ ] | Аналог кавычек, в них можнозаключать названия идентификаторов, если в их названиях встречаются пробелы |
| = | Знак равенства или сравнения | !< | Не менее чем |
| ⇐ | Меньше или равно | !> | Не более чем |
| >= | Больше или равно | > | Больше |
| != | Не равно | < | Меньше |
| @ | Ставится перед именем переменной | . | Разделяет родительские и подчиненные объекты |
| @@ | Указывает на системные функции | / | Знак деления |
| – | Однострочный комментарий или комментарий с текущей позиции и до конца строки | /* */ | Многострочный комментарий |
2. Идентификаторы
Идентификаторы – это имена объектов, на которые можно ссылаться в программе, написанной на языке Transact SQL. Первый символ может состоять из букв английского алфавита или «_», »@», »#». В качестве остальных символов идентификатора могут быть дополнительно использованы цифры и символ «$». Имя идентификатора не должно совпадать с зарезервированным словом (среда SQL Server Management Studio подсвечивает зарезервированные слова синим цветом).
Иногда в качестве идентификатора удобно использовать словосочетание. Можно воспользоваться заменой пробела на нижнее подчеркивание, а можно использовать ограничители идентификаторов - квадратные скобки или одинарные кавычки. Здесь надо обратить внимание на параметр QUOTED_IDENTIFIER.
Для ограничителей идентификаторов при установленном параметре
SET QUOTED_IDENTIFIER ON
можно использовать как квадратные скобки, так и одинарные кавычки, а строковые значения могут быть заключены только в одинарные кавычки (режим по умолчанию).
Если использовать установленный параметр в режиме
SET QUOTED_IDENTIFIER OFF
то в качестве ограничителей идентификаторов можно использовать только квадратные скобки, а строковые значения указываются в одинарных или двойных кавычках.
Переменные используются для сохранения промежуточных данных в хранимых процедурах и функциях. Все переменные считаются локальными. Имя переменной должно начинаться с @.
3. Объявление переменных
Синтаксис в обозначениях MS SQL Server:
DECLARE @имя_переменной1 тип_переменной, …, @имя_переменнойN тип_переменной
Если тип переменной предполагает указание размера, то используется следующий синтаксис для объявления переменных:
DECLARE @имя_переменной1 тип_переменной(размер), …, @имя_переменнойN тип_переменной(размер)
Пример:
DECLARE @a INT, @b NUMERIC(10,2) DECLARE @str CHAR(20)
4. Присвоение значений переменным и вывод значений на экран
Присвоение с помощью SET – обычное присвоение, синтаксис:
SET @имя_переменной = значение
Пример:
DECLARE @a INT, @b NUMERIC(10,2) SET @a = 20 SET @b = (@a+@a)/15 SELECT @b -- вывод на экран результата
Присвоение с помощью SELECT – помещение результата запроса в переменную. Если в результате выполнения запроса не будет возвращено ни одной строки, то значение переменной не меняется, т.е. остается старым.
Пример:
DECLARE @a INT SELECT @a = COUNT(*) FROM Authors
Пример:
DECLARE @str CHAR(30) SELECT @str = name_author FROM Authors
В данном примере в переменную поместится последнее значение из результата запроса.
Сочетание ключевых слов SET и SELECT
Пример:
DECLARE @a INT SET @a = (SELECT COUNT(*) FROM Authors)
5. Работа с датой и временем
Оператор SET DATEFORMAT dmy | ymd | mdy задает порядок следования компонентов даты.
Пример:
SET DATEFORMAT dmy -- задает порядок следования компонентов даты. DECLARE @d DateTime -- объявляем переменную типа DateTime SET @d = '30.10.1821 0:00:00' -- устанавливаем значение переменной d SET @d = @d+1 -- прибавляем один день SELECT @d -- выводим значение переменной d в таблице
6. Создание временной таблицы через переменную типа TABLE
Объявляется через DECLARE с указанием в скобках столбцов таблицы, их типов, размеров, значений по умолчанию, а также индексов типа PRIMARY KEY или UNIQUE.
Пример:
/*Объявляем таблицу*/ DECLARE @mytable TABLE ( -- Объявление переменной типа TABLE id INT, -- Тип целых значений myname CHAR(20) DEFAULT 'Введите имя' -- Тип значений и в ячейке выводится сообщение ) INSERT INTO @mytable(id) VALUES (1) -- Добавляем строку SELECT * FROM @mytable -- Выводим значение
Пример:
/*Объявляем таблицу*/ DECLARE @mytable TABLE( id INT, myname CHAR(20) DEFAULT 'Введите имя' ) INSERT @mytable SELECT Code_publish, City FROM Publishing_house SELECT * FROM @mytable
7. Преобразование типов переменных
Функция CAST возвращает значение, преобразованное к указанному типу: