- •Лабораторная работа 1
- •Лабораторная работа №2 Создание базы данных
- •Работа в среде Microsoft sql server 2008
- •Создание базы данных
- •Создание таблиц, входящих в бд. Задание для их атрибутов типов данных и ограничений целостности, соответствующих смыслу таблиц.
- •Присвоение имен ограничениям
- •Проверка ограничивающих условий с использованием составных полей
- •Values (111,'Петров','Александр', ‘Иванович’, ‘1994-05-05’, 23, 3,5);
- •Values (101, 'Иванов', null, 200, 3, 'Москва','6/10/1979', 15);
- •3. Модификация структуры таблицы (добавление и удаление нового столбца, добавление ограничений, изменение типа данных, ограничений целостности)
- •Лабораторная работа №3 Команды манипулирования данными
- •Values (111, 'Иванов', ‘Александр’);
- •Лабораторная работа №4 Проектирование запросов
- •Лабораторная работа №5 Создание запросов
- •Проектирование представлений, хранимых процедур, триггеров
- •Проектирование представлений
- •Примеры триггеров
- •Лабораторная работа №7 Представления
- •Обновление данных в представлениях
- •Тип, Цена, Цена*0.05 from Товар Модифицирование представлений
- •Операции модификации в представлениях, маскирующих строки и столбцы
- •Агрегированные представления
- •Представления, основанные на нескольких таблицах
- •Лабораторная работа №8 Разработка хранимых процедур Хранимые процедуры
- •Создание, изменение и удаление хранимых процедур
- •Drop procedure {имя_процедуры} [,...N]; Выполнение хранимой процедуры
- •Лабораторная работа №9 Создание триггеров
- •Компоненты триггера
- •Типы триггеров
- •Создание триггеров
- •Преимущества использования триггеров:
- •Программирование триггеров
- •Примеры использования триггеров
- •Insert into Students (fio, Nomer_zachetki, id_Group, Stipendiya) values ('Ильин с.В.', '08вп131', 2, 1250);
- •17.6. Использование хранимых процедур в триггерах
- •Insert into Students (fio, Nomer_zachetki, id_Group, Stipendiya) values ('Макарь в.А.', '06вп118', 4, 1200);
Присвоение имен ограничениям
Ограничениям таблиц можно присваивать уникальные имена. Преимущество явного задания имени ограничения состоит в том, что в этом случае при выдаче системой сообщения о нарушении установленного ограничения будет указано его имя, что упрощает обнаружение ошибок.
CREATE TABLE EXAM_MARKS
(EXAM_ID INTEGER NOT NULL,
STUDENT_ID INTEGER NOT NULL,
SUBJ_ID INTEGER NOT NULL,
MARK CHAR (1),
EXAM_DATE DATE NOT NULL,
CONSTRAINT STUD_SUBJ_CONSTR
UNIQUE (STUDENT_ID, EXAM_DATE);
В этом запросе STUD_SUBJ_CONSTR — это имя, присвоенное указанному ограничению таблицы.
Ограничение первичных ключей
Первичные ключи таблицы — это специальные случаи комбинирования ограничений UNIQUE и NOT NULL. Первичные ключи имеют следующие особенности:
• таблица может содержать только один первичный ключ;
• внешние ключи по умолчанию ссылаются на первичный ключ таблицы;
• первичный ключ является идентификатором строк таблицы (строки, однако, могут идентифицироваться и другими способами).
Улучшенный вариант создания таблицы STUDENTl с объявленным первичным ключом имеет теперь следующий вид:
CREATE TABLE STUDENT
(STUDENT_ID INTEGER PRIMARY KEY,
SURNAME CHAR (25) NOT NULL,
NAME CHAR (10) NOT NULL,
STIPEND INTEGER,
KURS INTEGER,
CITY CHAR (15),
BIRTHDAY DATE,
UNIV_ID INTEGER);
Составные первичные ключи
Ограничение PRIMARY KEY может также быть применено для нескольких полей, составляющих уникальную комбинацию значений — составной первичный ключ. Рассмотрим таблицу EXAM_MARKS. Очевидно, что ни к полю идентификатора студента (STUDENT_ID), ни к полю идентификатора предмета обучения (EXAM_ID) по отдельности нельзя предъявить требование уникальности. Однако для того, чтобы в таблице не могли появиться разные записи для одинаковых комбинаций значений полей STUDENT_ID И EXAM_ID (конкретный студент на конкретном экзамене не может получить более одной оценки), имеет смысл объявить уникальной комбинацию этих полей. Для этого мы можем применить ограничение таблицы PRIMARY KEY, объявив пару EXAM_ID И STUDENT_ID первичным ключом таблицы.
CREATE TABLE NEW_EXAM_MARKS
(STUDENT_ID INTEGER NOT NULL,
SUBJ_ID INTEGER NOT NULL,
MARK INTEGER,
DATA DATE,
CONSTRAINT EX_PR_KEY PRIMARY KEY (EXAM_ID, STUDENT_ID));
Проверка значений полей
Ограничение CHECK позволяет определять условие, которому должно удовлетворять вводимое в поле таблицы значение, прежде чем оно будет принято. Любая попытка обновить или заменить значение поля такими, для которых предикат, задаваемый ограничением CHECK, имеет значение ложь, будет отвергаться.
Рассмотрим таблицу STUDENT. Значение столбца STIPEND в этой таблице выражается десятичным числом. Наложим на значения этого столбца ограничение — величина размера стипендии должна быть меньше 200.
Соответствующий запрос имеет следующий вид:
CREATE TABLE STUDENT
(STUDENT_ID INTEGER PRIMARY KEY,
SURNAME CHAR (25) NOT NULL,
NAME CHAR (10) NOT NULL,
STIPEND INTEGER CHECK (STIPEND < 200),
KURS INTEGER,
CITY CHAR (15),
BIRTHDAY DATE,
UNIV_ID INTEGER);
