- •Введение
- •Лабораторное занятие № 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
- •Задания в тестовой форме
- •Литература Оглавление
Вопросы для самоконтроля к лабораторной работе № 8
С каким объектом базы данных связан триггер и как запускается триггер?
Какие существуют типы триггеров в SQL Server 2000 (по типу операции, по поведению)?
Сколько триггеров каждого типа можно создать для одной таблицы?
Какие операции не могут выполняться в триггере?
С помощью какой команды изменяются параметры триггера?
С помощью какой команды удаляется триггер, кто обладает правом удаления триггера?
Какие таблицы автоматически создаются при вызове триггера? От чего зависит содержимое этих таблиц?
В чём сходство и отличие триггера и хранимой процедуры?
В чём преимущества хранимых процедур? Для чего обычно используются хранимые процедуры?
Могут ли хранимые процедуры возвращать значения?
Задания в тестовой форме
I. Вашему вниманию предлагаются задания, в которых могут быть 1, 2, 3 и более правильных ответов. Обвести кружком номера всех правильных ответов.
Задание 1. В процессе жизни базы данных наибольшим изменениям подвержены
Внешний ключ
Первичный ключ
Мощность отношения
Степень отношения
Схема отношения
Задание 2. Даны схемы отношений трех отношений
R1={№ книги, Имя автора}
R2={№ книги, Дата выдачи книги, № читательского билета}
R3={№ читательского билета, Имя читателя, № телефона}
Внешние ключи не содержат
1 и 2 отношения
1 и 3 отношения
2 и 3 отношения
только 1 отношение
только 2 отношение
Задание 3. Не относится к Data Manipulation Language команда
INSERT
UPDATE
DROP
DELETE
SELECT
Задание 4. В запросе содержит ошибку предложение
DELETE FROM Student
WHERE IDGroup IN
(SELECT IDGroup
FROM Progress Pr, Student St
WHERE NRecordBook= NRecordBook
GROUP BY IDGroup
HAVING Count(IDGroup)< 5)
Задание 5. Операции удаления не препятствует наличию в предcтавлении
столбцов с агрегатными функциями.
Столбцов с выражениями.
Столбцов с признаком not null.
Столбцов входящих в ограничение primary key.
Условий соединения.
Задание 6. Подзапрос в команде Select может иметь место в предложении
FROM
WHERE
GROUP BY
HAVING
ORDER BY
Задание 7. Только на уровне столбца действует ограничение
CHECK
UNIQUE
NOT NULL
PRIMARY KEY
FOREIGN KEY
Задание 8. Агрегатные функции могут использоваться в предложении
SELECT
WHERE
GROUP BY
HAVING
ORDER BY
Задание 9. При старте триггера FOR UPDATE создаются таблицы
INSERTED
UPDATED
DELETED
INSERTED и DELETED
UPDATED и DELETED
Задание 10. При реализации вывода имен студентов и номеров их зачеток, не аттестованных по тем или иным предметам ошибка в синтаксисе команды допущена в строке
SELECT Student.NRecordBook, Stname ФИО
FROM Student, Progress
WHERE Student. NRecordBook= Progress. NRecordBook
AND MARK NULL;
Задание 11. Некорректной является команда
SELECT * from Progress Where mark = ANY(Select mark from Progress Where CodeSubject=1)
SELECT * from Progress Where mark ANY(Select mark from Progress Where CodeSubject=1)
SELECT * from Progress Where mark IN (Select mark from Progress Where CodeSubject=1)
SELECT mark from Progress Where mark>all(Select mark from Progress Where CodeSubject=1)
SELECT * from Progress Where mark>all(Select mark from Progress Where CodeSubject=1)
Задание 12. Запрос SELECT Mark FROM Progress
WHERE Mark >ANY( SELECT AVG(Mark) FROM Progress
GROUP BY IDSubject)
к приведенной ниже таблице (см. Приложение 2. Пример заполнения таблица Progress) возвратит количество строк, равное
0
1
2
3
6
Задание 13. Основные свойства транзакций (ACID)
элементарность
инкапсуляция
целостность
изолированность
надёжность
наследование
Задание 14. Агрегатные функции могут использоваться в предложении
where
having
select
order by
group by
II. Установить правильную последовательность:
Задание 1. В запросе, выводящем имена студентов, чьи оценки выше, чем средняя оценка в их группе
FROM Student St,Progress Pr
FROM Progress P1,Student S1
WHERE St.NRecordBook=Pr.NRecordBook
AND mark>
WHERE S1.IDGroup=St.IDGroup
SELECT AVG(mark)
AND S1.NRecordBook=P1.NRecordBook
SELECT StName,Mark
Задание 2. В команде, редактирующей столбец MarkAVG таблицы Student
SELECT AVG(Mark)
HAVING Student. NRecordBook= Progress. NRecordBook
UPDATE Student SET MarkAVG=
GROUP BY NRecordBook
FROM Progress
Задание 3. Действия при назначении внешнего ключа
задать тип ограничения
задать имя ограничения
указать ссылочную таблицу
перечислить столбцы, входящие во внешний ключ
определить столбцы, являющиеся первичным ключом ссылочной таблицы
Задание 4. Синтаксис оператора SELECT
select
order by
having
group by
список столбцов
where
from
III. Установить соответствие:
1. |
Название процедуры |
Назначение процедуры |
|
|
|
ОТВЕТЫ: 1 _, 2 _, 3 _, 4 _.
2. |
Тип данных |
Описание |
|
|
1) binary |
|
|
|
2) varchar |
|
|
|
3) int |
|
|
|
4) float |
|
|
|
5) numeric |
|
|
|
6) datetime |
|
|
|
7) money |
|
|
ОТВЕТЫ: 1 _, 2 _, 3 _, 4 _, 5 _, 6 _, 7 _. |
3. |
Ограничение целостности |
Описание |
|
|
|
| ||
| ||
| ||
| ||
| ||
|
ОТВЕТЫ: 1 _, 2 _, 3 _, 4 _, 5 _, 6 _, 7 _.
4. |
Агрегатная функция |
Результат действия |
|
|
|
ОТВЕТЫ: 1 _, 2 _, 3 _, 4 _, 5 _, 6 _.
5. |
Ключевое слово |
Смысл ключевого слова |
|
|
условие на проверку значения столбца |
ОТВЕТЫ: 1 _, 2 _, 3 _, 4 _, 5 _.
IV. Дополнить:
1. |
Для задания в столбце неопределённых данных используется опция __________. |
2. |
Принадлежность значения столбца к определённому диапазону значений проверяется с помощью ключевого слова ____________. |
3. |
С помощью ключевого слова _____ указываются строки значения которых совпадают с одним из значений в заданном списке. |
4. |
Избежать вывода дублирующих строк позволяет ключевое слово _________________. |
5. |
Сортируются строки в наборе, возвращаемом запросом с помощью директивы _______________. |
6. |
Условие включения группы в итоговый набор содержит директива _________________. |
7. |
Объединение результатов двух или более запросов в один результирующий набор достигается с помощью оператора__________. |
8. |
Обновляет значение поля в строке оператор ___________ |
9. |
Процесс, в котором все операторы выполняются успешно, или не выполняется ни один оператор называется _________________. |
Приложение 1. Типы данных используемые СУБД SQLServer2000
№ |
Тип данных |
Описание |
1 |
2 |
3 |
|
VARCHAR (n) |
Символьная строка переменной длины, n задает максимальную длину строки в байтах. Максимально допустимый размер строки 2000 символов. Минимальный – 1 символ, n не является обязательным параметром и по умолчанию равно 1. |
|
CHAR(n) |
Символьная строка фиксированной длины, n задает максимальную длину строки в байтах. Максимально допустимый размер строки 2000 символов. Минимальный –1 символ. |
|
NUMERIC(p, s) DECIMAL(p,s) |
Число, содержащее точные числовые данные: всего p символов из них s после запятой. |
|
REAL (FLOAT) |
Числовые значения с плавающей запятой обычной (двойной) точности, состоят из двух частей: мантиссы и порядка |
|
DATETIME
|
Дата и время в миллисекундах с 01.01.1753 по 31.12.9999.Сохраняет значение в 8 байтах |
|
SMALLDATETIME |
Календарная дата с точностью до минуты. Сохраняет значение в 4 байтах. Диапазон с 01.01.1900 по 06.06.2079 |
|
MONEY (SMALLMONEY) |
Денежный тип данных размером 8 (4) байт. Имеют четыре разряда после запятой. |
|
BINARY(n) VARBINARY(n) |
Последовательность 1 и 0 , представленных в 16-ричной системе счисления и организованных в пары |
|
INT BIGINT TINYINT SMALLINT |
Целочисленные значения (скалярные величины). Разница между этими типами данных заключается в длине сохраняемых значений |
|
BIT |
Булевы значения 0 или 1 |
|
TEXT IMAGE |
Битовая и текстовая информация до 2 Гбайт |
Приложение 2. Пример заполнения таблиц
Отношение Student (Студент) | |||||||
NrecordBook |
StName |
IDGroup |
SPasport |
NPasport |
DataPasport |
NameDeptPasport |
INN |
050001 |
Иванов И.И. |
3 |
8701 |
192355 |
01.06.2002 |
ГОВД г.Ухты |
1111111111 |
050002 |
Петров П.П |
3 |
8702 |
191256 |
20.11.2002 |
ГОВД г.Сосногорск |
1111111112 |
050003 |
Сидоров С.С. |
2 |
8703 |
192457 |
26.11.2002 |
ГОВД г.Сосногорск |
1111111113 |
050004 |
Митькин М.М. |
2 |
8701 |
192417 |
26.11.2002 |
ГОВД г.Ухты |
1111111114 |
Отношение Work (Вид занятий) | |
IDWork (Код вида занятия) |
NameWork (название вида занятия) |
1 |
Лекция |
2 |
Практическое занятие |
3 |
Лабораторное занятие |
Отношение Subject (Предмет) | |
IDSubject (Код предмета) |
NameSubject (Название предмета) |
1 |
Базы данных |
2 |
МИП |
3 |
СУБД |
4 |
ООП |
Отношение Report (Отчетность) | |
IDReport (Код вида отчетности) |
NameReport (Название вида отчетности) |
1 |
Экзамен |
2 |
Зачет |
3 |
Курсовой проект |
Отношение Teacher (Преподаватель) | ||||
PIN (идентиф. номер преподав.) |
TeachName (имя преподав.) |
DeptName (название кафедры) |
TeachPost (должность) |
DateHire (дата приёма на работу) |
1 |
Николаева Н.А. |
ИСТ |
доцент |
09.01.1999 |
2 |
Семериков А.В. |
ИСТ |
доцент |
09.01.1999 |
3 |
Маракасов Ф.В. |
ИСТ |
ст. преподаватель |
09.01.2000 |
4 |
Калинина Т.Ю. |
ИСТ |
ассистент |
05.17.2001 |
5 |
Фирсова Ю.М. |
АИС |
доцент |
09.01.1995 |
Отношение SGroup (Группа) | |
IDGroup (Код группы) |
NameGroup (Название группы) |
1 |
ИСТ-03 |
2 |
АИС-03 |
3 |
|
Отношение Progress (Успеваемость)
IDReport (код вида отчётн.) |
IDSubject (код предмета) |
NRecordBook (№ зачётки) |
NTerm (№ семестра) |
PIN (идент. номер преп.) |
Mark (оценка) |
1 |
1 |
050001 |
5 |
1 |
4 |
1 |
1 |
050002 |
5 |
1 |
4 |
1 |
2 |
050001 |
5 |
2 |
5 |
2 |
4 |
050004 |
5 |
5 |
5 |
3 |
4 |
050003 |
5 |
5 |
2 |
1 |
3 |
050001 |
6 |
1 |
3 |
2 |
3 |
050001 |
6 |
4 |
4 |
3 |
4 |
050002 |
6 |
3 |
5 |
3 |
1 |
050002 |
5 |
4 |
3 |
Приложение 3. Агрегатные функции
№ |
Синтаксис функции |
Назначение функции |
1 |
AVG([ALL|DISTINCT] имя_столбца) |
Среднее значение в группе для [всех | неодинаковых] строк |
2 |
COUNT([ALL|DISTINCT] имя_столбца) |
Количество [всех | неодинаковых] значений в группе |
3 |
COUNT(*) |
Количество полученных строк в группе |
4 |
MAX(имя_столбца) |
Максимальное значение в группе |
5 |
MIN(имя_столбца) |
Минимальное значение в группе |
6 |
STDDEV(имя_столбца) |
Среднеквадратичное отклонение всех значений |
7 |
SUM([ALL|DISTINCT] имя_столбца) |
Сумма значений для [всех | неодинаковых] строк |
8 |
VAR(имя_столбца) |
Дисперсия всех значений |
Приложение 4. Функции обработки дат
№ |
Синтаксис функции |
Назначение функции |
|
dateadd (частьДаты, n, Date) |
Date – переменная типа Datetime. Функция добавляет к Date величину частьДаты, умноженную на n раз |
|
dateDIFF (частьДаты, Date1, Date2) |
Функция возвращает количество величин частьДаты между двумя датами |
|
dateName (частьДаты, Date) |
Функция возвращает название элемента частьДаты для заданного Date |
|
dateName (частьДаты, Date) |
Функция возвращает целое числовое значение элемента частьДаты для заданного Date |
|
DAY (Date) |
Функция возвращает целое число дней в Date |
|
GETDATE () |
Функция возвращает текущие системные дату и время |
|
MONTH (Date) |
Функция возвращает целое число месяцев в Date |
|
YEAR (Date) |
Функция возвращает целое число лет в Date |
Параметр частьДаты указывает функции, с какой частью переменной типа Datetime следует выполнить требуемые операции.
Приложение 5. Допустимые значения параметра частьДаты
№ |
Значение параметра |
Диапазон значений |
|
dd (day) |
1-31 |
|
dy (day of year) |
1-366 |
|
hh (hour) |
0-23 |
|
ms (millisecond) |
0-999 |
|
mi (minute) |
0-59 |
|
mm (month) |
1-12 |
|
qq (quarter) |
1-4 |
|
ss (second) |
0-59 |
|
wk (week) |
0-53 |
|
dw (weekday) |
1-7 (Sun – Sut) |
|
yy (year) |
1753-9999 |