- •Введение
- •Лабораторное занятие № 1
- •Описание учебного примера.
- •Удаление таблиц
- •Создание таблиц
- •Имена ограничений
- •Ограничения null и not null
- •Ограничение primary key
- •IdSubject, idReport, nTerm));
- •Ограничение unique
- •Ограничение Foreign key
- •Ограничение check
- •Вопросы для самоконтроля к лабораторной работе № 1
- •Лабораторная работа № 2
- •Команда вставки - insert
- •Команда обновления - update
- •Команда удаления - delete
- •Вопросы для самоконтроля к лабораторной работе № 2
- •Лабораторная работа №3
- •Команда alter table
- •Модификация ограничений
- •Добавление ограничений с ограниченной областью проверки
- •Отключение и подключение ограничений
- •Правила для изменения и модификации описания столбцов
- •Добавление столбца
- •Модификация столбца
- •Удаление столбца
- •Удаление таблицы
- •Переименование таблицы
- •Вопросы для самоконтроля к лабораторной работе № 3
- •Лабораторная работа № 4
- •Выборка данных из нескольких таблиц
- •Определение условий выборки в предложении where.
- •Групповые функции и предложение group by
- •Наиболее часто встречающиеся ошибки при выполнении group by
- •Предложение order by
- •Вопросы для самоконтроля к лабораторной работе № 4
- •Лабораторная работа № 5
- •Подзапросы
- •Inner join Student s
- •Inner join Student s
- •Inner join
- •Inner join Student s
- •Вопросы для самоконтроля к лабораторной работе № 5
- •Лабораторная работа №6
- •Представления
- •Вопросы для самоконтроля к лабораторной работе № 6
- •Лабораторная работа №7
- •Хранимые процедуры
- •Оператор use
- •Оператор declare
- •Операторы set и select
- •Функция @@identity
- •Функция @@error
- •Объявление параметров
- •Изменение хранимых процедур
- •Удаление хранимой процедуры
- •Лабораторная работа №8
- •If exists
- •Вопросы для самоконтроля к лабораторной работе № 8
- •Задания в тестовой форме
- •Литература Оглавление
Оператор use
Синтаксис оператора USE
С помощью оператора USE устанавливается текущая база данных.
После применения этого оператора при выполнении операций над объектами имя базы данных указывать не нужно.
Оператор declare
Синтаксис оператора DECLARE
DECLARE @<имя переменной><тип переменной>[,…]
DECLARE @IPIN int
Одним оператором DECLARE может быть объявлена как одна, так и несколько переменных. Объявленное значение переменной не определено (NULL) пока ей не будет присвоено значение. Присвоение переменной того или иного значения осуществляется либо с использованием оператора SET, либо SELECT.
Операторы set и select
Синтаксис оператора SET
SET <имя переменной>=<значение переменной>
Синтаксис оператора SELECT
SELECT <имя переменной> = <значение переменной>
Пример 85
Задание.
Присвоить значения переменным, используя оператор SET
Решение.
declare @AvgMark int
declare @TotalSumma decimal
declare @MSumma decimal
SET @AvgMark=4
SET @TotalSumma=@MSumma*1.8
SET @AvgMark=(Select AVG(Mark) FROM Progress)
Различия между использованием SET и SELECT при присвоении значения переменной практически не существует. Когда применять тот или иной оператор решать пользователю. Однако, поскольку, при присвоении переменной значения полученного из запроса, код запроса несколько короче при использовании SELECT, то его в этом случае чаще всего и применяют. То есть, SET используют для присвоения известного значения переменной, SELECT – для присвоения переменной результата запроса.
Use Student
DECLARE @AvgMark Numeric (5,2)
SET @AvgMark= AVG(Mark) FROM Progress
SELECT @AvgMark
SQL Server 2000 выдаёт ошибку:
Incorrect syntax near the keyword 'FROM'.
Но!!!
Use Student
DECLARE @AvgMark Numeric (5,2)
SET @AvgMark=(SELECT AVG(Mark) FROM Progress)
SELECT @AvgMark
Результат выполнения запроса.
Наиболее часто применимый код
Use student
DECLARE @AvgMark Numeric (5,2)
SELECT @AvgMark= AVG(Mark) FROM Progress
SELECT @AvgMark
Весьма часто при создании хранимых процедур используются системные функции, их более 30, но в данной работе мы рассмотрим только 2 из них, наиболее применимые в последующих примерах.
@@IDENTITY
@@ERROR
Функция @@identity
Функция @@IDENTITY - возвращает автоматически сгенерированное последним оператором значение. Необходима в тех случаях, когда применяются столбцы с уникальным сгенерированным значением и существует ссылка на них в дочерних таблицах. Хранит только последнее вставленное значение, предыдущее значение не будет сохранено, если его предварительно не записали в переменную. Если при выполнении последней команды INSERT ни один вставленный столбец не будет иметь уникального значения, то @@IDENTITY будет иметь признак NULL.
Функция @@error
Функция @@ERROR содержит код ошибки последнего выполняемого в текущем подключении оператора T-SQL. Код ошибки есть целое число (Integer). Если ошибка отсутствует, то значение переменной равно 0. Жизненный цикл переменной ограничивается одним оператором. Если необходимо проверить ошибку в конкретном операторе, то это следует делать в операторе, непосредственно следующем за данным, либо сохранить значение системной переменной для дальнейшего использования
Перечень ошибок хранится в базовой таблице SYSMESSAGES базы данных MASTER. Для добавления собственного списка ошибок используют хранимую процедуру sp_addmessage.
Пример 86
Задание.
Создать хранимую процедуру, которая создаёт список студентов и их номеров зачёток и упорядочивает их по имени.
Решение:
CREATE PROCEDURE NameStudent
as
SELECT StName ФИО,NRecordBook [№ зачётки]
FROM Student
ORDER BY StName DESC
EXECNameStudent
Результат выполнения запроса: