- •Оглавление
- •Глава 1 Представление данных 6
- •Глава 2 Реляционные базы данных 10
- •Глава 3 Язык структурированных запросов 42
- •Глава 4 Задание к выполнению лабораторных работ 72
- •Глава 5 Курсовая работа 97 Введение
- •Представление данных
- •Уровни представления данных
- •Инфологическая модель «сущность-связь»
- •Основные понятия
- •Характеристика связей
- •Вопросы для самопроверки
- •Реляционные базы данных
- •Основные понятия
- •Объекты реляционной структуры
- •Операции реляционной алгебры
- •Неопределенные значения
- •Ограничения целостности
- •Разработка реляционной базы данных
- •Основные предпосылки
- •Нормализация
- •Нормальные формы
- •Правила нормализации
- •Алгоритм нормализации
- •Нормализация в примерах.
- •Заключение
- •Вопросы для самопроверки
- •Язык структурированных запросов
- •Основные понятия
- •Типы данных
- •Операции над данными и null
- •Выбор данных из базы
- •Выбор данных из базы – оператор join
- •Выбор данных из базы – источник данных запрос
- •Управление структурой базы данных
- •Типы команд управления структурой
- •Типы объектов структуры
- •Создание таблицы
- •Удаление таблицы
- •Создание представления
- •Удаление представления
- •Изменение представления
- •Создание триггера
- •Изменение данных
- •Удаление данных
- •Ограничения целостности при манипулировании данными
- •Пример создания базы данных
- •Заключение
- •Вопросы для самопроверки
- •Задание к выполнению лабораторных работ
- •Лабораторная работа №1. Изучение команды select – простые запросы
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Содержание отчета
- •Лабораторная работа №2. Изучение команды select – запрос из нескольких источников
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Видео прокат
- •Вариант 2 Биржа
- •Вариант 3 Биржа труда
- •Вариант 4 Коктейли
- •Вариант 5 Урожай
- •Вариант 6 Фитнес центр
- •Вариант 7 Овощная база
- •Вариант 8 Оборудование
- •Вариант 9 Курортная карта
- •Вариант 10 осаго
- •Контрольные вопросы
- •Содержание отчета
- •Лабораторная работа №3. Разработка структуры базы данных. Вторая часть
- •Задания для самостоятельного решения
- •Контрольные вопросы
- •Содержание отчета
- •Лабораторная работа №3. Разработка системы протоколирования операций над данными реляционной таблицы с использованием триггеров
- •Задание для самостоятельного решения:
- •Контрольные вопросы:
- •Содержание отчета
- •Лабораторная работа №2. Разработка пользовательских функций и процедур
- •Задания для самостоятельного решения
- •Контрольные вопросы:
- •Содержание отчета
- •Лабораторная работа №2. Импорт данных
- •Задания для самостоятельного решения
- •Контрольные вопросы:
- •Содержание отчета
- •Курсовая работа
- •Библиографический список
Удаление таблицы
Удаление таблицы осуществляется командой вида:
DROP TABLE имя_таблицы
Таблица будет удалена, только если при этом не будет нарушена целостность базы данных. Это означает, что невозможно удалить родительскую таблицу раньше дочерней.
Создание представления
Далее приведен упрощенный синтаксис команды создания представления:
CREATE VIEW имя_представления [ (поле1 [ ,...полеn ] ) ] AS команда_select
Поле1 [ ,...полеn ] – имя, которое будет иметь столбец в представлении. Имя столбца требуется только в тех случаях, когда столбец формируется на основе арифметического выражения, функции или константы, если два или более столбцов могут по иной причине получить одинаковые имена (как правило, в результате соединения), или если столбцу представления назначается имя, отличное от имени столбца, от которого он произведен. Назначать столбцам имена можно также в инструкции SELECT.
Если аргумент полеn не указан, столбцам представления назначаются такие же имена, которые имеют столбцы в инструкции SELECT.
Команда_select – команда SELECT, которая определяет представление. Представление не обязательно является простым подмножеством строк и столбцов одной конкретной таблицы. С помощью предложения SELECT можно создавать представление, использующее более одной таблицы, или другие представления любой степени сложности. В команде нельзя использовать ключевое слово ORDER BY, кроме специального случая, не рассматриваемого в рамках данного материала.
Ниже приведен пример создания представления по запросу, выводящему на экран список рейсов (номер рейса) и пунктов прибытия этих рейсов (этот пример рассматривался ранее):
CREATE VIEW Представление_рейсы AS
SELECT Рейсы.№Рейса, Пункты.Пункт_прибытия
FROM Рейсы, Пункты
WHERE Рейсы.№Пункта = Пункты.№Пункта
В примере не указывается список полей представления, так как имена полей, которые формируются по умолчанию, не требуют переопределения. После создания представления, исходный запрос можно будет переписать в виде запроса из представления:
SELECT Представление_рейсы.№Рейса, Представление_рейсы.Пункт_прибытия
FROM Представление_рейсы
или
SELECT *
FROM Представление_рейсы
Удаление представления
Удаление представления осуществляется командой вида:
DROP VIEW имя_представления
Изменение представления
Внесение изменений в представление осуществляется командой ALTER VIEW. Формат команды полностью совпадает с форматом команды CREATE VIEW. И является фактически комбинацией удаления и создания представления.
Создание триггера
Ниже приведена упрощенная структура команды создания триггера:
CREATE TRIGGER Имя_тригера ON { таблица }
{ FOR | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] }
AS { sql-команда}
Имя_тригера – уникальное имя, удовлетворяющее стандарту названий SQL-объектов: комбинация латинских символов и цифр, исключая символы разделители: пробел, запятая, точка запятая и д.р. В дальнейшем, это имя будет использоваться для идентификации триггера в командах изменения и удаления.
Таблица – название таблицы, при изменении данных которой будет срабатывать триггер.
FOR | INSTEAD OF – признак момента исполнения триггера.
FOR - указывает, что триггер срабатывает только после успешного выполнения всех операций в инструкции SQL, запускаемой триггером. Все каскадные действия и проверки ограничений, на которые имеется ссылка, должны быть успешно завершены, прежде чем триггер сработает.
INSTEAD OF - указывает, что триггер срабатывает вместо инструкции SQL, используемой триггером, переопределяя действия выполняемой инструкции триггера. При использовании определения INSTEAD OF операция, вместо которой определен триггер, выполняться не будет. Если все же необходимо выполнить эту операцию, ее необходимо явно прописать в командах самого триггера, при этом повторного срабатывания триггера не будет.
[ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] - определяет команды изменения данных, по которым срабатывает триггер. Необходимо указать как минимум одну инструкцию. В определении триггера разрешены любые их сочетания в любом порядке.
SQL-команда - действия триггера, указанные в инструкциях языка Transact-SQL. Триггеры могут содержать любое количество инструкций языка Transact-SQL любого типа, за некоторыми исключениями.
Триггеры используют логические (концептуальные) таблицы deleted и inserted. По своей структуре они подобны таблице, на которой определен триггер, то есть таблице, к которой применяется действие пользователя. В таблицах deleted и inserted содержатся старые или новые значения строк, которые могут быть изменены действиями пользователя. При операции INSERT таблица inserted будет содержать строку с вводимой строкой, а таблица deleted будет пустой. При операции DELETE таблица deleted будет содержать удаляемую строку с вводимой строкой, а таблица inserted будет пустой. При операции UPDATE таблица deleted будет содержать строку со значениями до изменения, а таблица inserted содержать строку с новыми значениями.
Transact-SQL – расширенный язык SQL, требующий отдельного рассмотрения. Помимо команд SELECT, Команд управления структурой и манипулирования данными, для выполнения работы, приведенной в приложении, необходимы следующие конструкции:
внутренние переменные, их объявление и применение;
оператор сравнения.
Объявление внутренних переменных осуществляется в секции DECLARE. При этом указывается имя переменной, обязательно начинающееся с символа @ и тип переменной.
Например:
DECLARE
@id int,
@LAST_NAME varchar(100),
@floatdata float
Присвоение значений внутренних переменных осуществляется через команду select.
Присвоение константы:
SELECT @id = 12
Присвоение значения выражения:
SELECT @floatdata = @id+1.3
Присвоение нескольких значений одной командой:
SELECT @floatdata = 1, @id = @id +1
Присвоение значений из базы данных (пример по базе данных для лабораторной работы №1):
SELECT @floatdata = (COMMISSION+ SALARY), @id = JOB_ID FROM employee Where EMPLOYEE_ID = 1
При этом запрос должен возвращать либо одну строку, либо не одной. В случае, если запрос не возвращает строк, то внутренним переменным будет присвоено значение NULL.
Оператор сравнения
IF {условие}
{sql-команда}
[Else
{sql-команда}]
sql-команда – одна команда Transact-SQL, однако можно применять составную команду, образуемую оборачиванием группы команд в конструкцию BEGIN … END.
Команда, присваивающая значение внутренней переменной в зависимости от значений другой внутренней переменной:
IF @id > 10
SELECT @floatdata = 10
ELSE
SELECT @floatdata = 11
Ниже приведен пример триггера, выполняющегося вместо операции изменения данных. При срабатывании триггера осуществляется проверка нового значения поля intdata. Если его значение меньше 0, то вместо нового значения в таблицу заносится предыдущее значение, увеличенное на 1. В противном случае новое значение поля intdata не изменяется. Новое значение поля id записывается в таблицу безусловно.
Сначала определим команду создающую таблицу:
CREATE TABLE mydata_1 (
id INT PRIMARY KEY,
intdata INT NOT NULL);
Далее создадим триггер.
Create TRIGGER mydata_1_tr
ON mydata_1
INSTEAD OF UPDATE
AS
-- определим действие триггера – вместо операции изменения
DECLARE
@new_id int,
@new_intdata int
begin
--запросили новые значения полей
SELECT @new_id = id, @new_intdata = intdata from inserted
IF @new_intdata < 0 -- проверили значение поля inddata
-- вернули в переменную старое значение поля intdata
SELECT @new_intdata = intdata + 1 from deleted
--проведем реальное изменение значений записи
Update mydata1 set id = @new_id, intdata=@new_intdata
Where id = @new_id
end
Удаление триггера
Удаление триггера осуществляется командой вида:
DROP TRIGGER имя_триггера
Изменение триггера
Внесение изменений в представление осуществляется командой ALTER TRIGGER. Формат команды полностью совпадает с форматом команды CREATE TRIGGER. И является фактически комбинацией удаления и создания триггера.
Манипулирование данными
Ввод данных
Команда INSERT служит для добавления новых записей в таблицу базы данных. Формат команды:
INSERT INTO имя_таблицы [ ( поле1, поле2, поле3) ] VALUES ( знач1, знач2, знач3 );
Если после параметра имя_таблицы сразу следует ключевое слово VALUES, то система управления базами данных считает, что значения полей новой записи перечислены в том же порядке, что и поля таблицы при её создании – это неявное указание последовательности полей. Формат команды INSERT позволяет задать последовательность вводимых полей в явном виде перед ключевым полем VALUES.
Далее приведен пример заполнения таблицы «МАРКИ» с явным и неявным указанием последовательности полей. Пусть последовательность полей при создании таблицы совпадает с последовательностью, указанной на рисунке 6.
INSERT INTO Марки (Кол-во_мест, Марка_Cамолета, №Марки) VALUES(150,“ТУ-154”,1);
INSERT INTO Марки VALUES(2,“ТУ-134”,70);
В первой команде поля переставлены намеренно.
