- •Оано впо «волжский университет им. В.Н. Татищева»
- •Содержание
- •Используемые сокращения
- •1 Основные понятия системы баз данных
- •2 История развития систем управления базами данных
- •3 Модели данных
- •3.1 Иерархическая модель
- •3.2 Сетевая модель
- •3.3 Реляционная модель
- •3.3.1 Терминология и базовые понятия реляционных бд
- •3.3.2 Целостность и сохранность баз данных
- •4 Архитектура субд
- •4.1 Типовая организация современной субд
- •4.2 Основные функции субд.
- •5 Язык sql
- •5.1 Оператор select
- •5.1.1 Особенности использования предложения select
- •5.1.2 Особенности использования предложения where
- •5.1.3 Сортировка результатов запроса
- •5.1.4 Группировка записей
- •5.1.5 Ограничение на группировку записей
- •5.2 Объединение однотипных запросов
- •5.3 Структурированные, или вложенные, запросы
- •5.4 Запросы на удаление
- •5.5 Запросы на обновление данных
- •5.6 Запросы на добавление данных
- •6.2 Теоретико-множественные отношения
- •6.3 Соединения
- •6.4 Деление
- •7 Проектирование реляционной базы данных
- •7.1 Существующие подходы к проектированию баз данных
- •7.2 Этапы проектирования баз данных
- •7.2.1 Формирование и анализ требований к системе
- •7.2.1.1 Функциональное моделирование
- •7.2.1.2 Состав функциональной модели
- •7.2.1.3 Типы связей между функциями
- •7.2.1.4 Декомпозиция отношений
- •7.2.2 Проектирование с использованием метода «сущность-связь»
- •7.2.3 Переход от er–модели к реляционной
- •7.3 Проектирование реляционных баз данных с использованием нормализации
- •7.3.1 Функциональные зависимости
- •7.3.2 Пример нормализации отношений
- •Накладная № 123
- •8 Физическая организация базы данных
- •8.1 Структура данных в файлах с различной организацией
- •8.1.1 Основные понятия
- •8.1.2 Неупорядоченные и упорядоченные файлы
- •8.1.3 Хешированные файлы
- •8.2 Индексированные файлы
- •9 Защита баз данных
- •9.1 Потенциальные опасности
- •9.2 Основные типы угроз
- •9.3 Контрмеры – компьютерные средства контроля
- •Вопросы для самоконтроля
- •Используемая литература
5 Язык sql
SQL (Structure Query Language – Структурированный Язык Запросов) – стандартный язык запросов для работы с базами данных. SQL содержит примерно 40 операторов для выполнения различных действий внутри СУБД. Рассмотрим некоторые из них. Категория операторов Data Manipulation Language (DML) содержит операторы, позволяющие выбирать, добавлять, удалять и модифицировать данные. Операторы DML представлены в таблице 1.
Таблица 1 - Операторы языка SQL категории DML
Оператор |
Описание |
SELECT |
Применяется для выбора данных |
INSERT |
Применяется для добавления кортежа к таблице |
DELETE |
Применяется для удаления кортежа из таблицы |
UPDATE |
Применяется для изменения данных |
Иногда оператор SELECT относят к отдельной категории, называемой Data Query Language (DQL).
Примеры использования SQL языка в СУБД Microsoft Access будут приводиться на основе базы данных Магазин. Схема базы данных приведена на рисунке 1.
Рисунок 1 - Схема данных БД Магазин
При использовании SQL языка в СУБД Microsoft Access название таблиц отделяется от названия полей точкой или восклицательным знаком. Если название поля или таблицы состоит из нескольких слов, разделенных пробелом, то название берется в квадратные скобки.
При создании запроса на основе полей нескольких таблиц данные таблицы необходимо объединить. Существует несколько правил объединения. Рассмотрим внешнее соединение на основе INNER JOIN. Синтаксис данного объединения двух таблиц:
…
From<таблица_1> INNER JOIN<таблица_2> ON таблица_1.Поле_связи = таблица_2. Поле_связи
…
Синтаксис объединения трех таблиц:
…
From<таблица_1> INNER JOIN<таблица_2> (<таблица_2> INNER JOIN<таблица_3> ON таблица_2.Поле_связи = таблица_3. Поле_связи) ON таблица_1.Поле_связи = таблица_2. Поле_связи
…
Например. Показать информацию о заказах с номером счета и датой счета.
SELECT Заказ. КодЗаказа, Заказ. НазваниеКомпании, Заказ. ДатаИсполнения, Счет. КодСчета, Счет. ДатаСчета
FROM Заказ INNER JOIN Счет ON Заказ.КодЗаказа = Счет.[Код заказа];
Рисунок 2 - Пример запроса с объединением двух таблиц
5.1 Оператор select
Формат оператора SELECT:
Select [all |*|distinct] <список полей>
From<список таблиц>
Where<условия выборки строк>
Group by<список полей группировки>
Having<условия для групп>
Order by<список полей для сортировки>
5.1.1 Особенности использования предложения select
1. Вычисления в запросах и переименование столбцов.
Арифметические выражения используются для расчета значений вычисляемых столбцов результирующего набора данных. При их формировании придерживаются общих правил формирования арифметических выражений, принятых в алгоритмических языках. В случае присвоения имени столбцу, содержащему результаты выражения, это имя необходимо указать после выражения вслед за ключевым словом AS.
Пример. Показать общую стоимость каждого заказа.
SELECT Заказ.КодЗаказа, Заказ.НазваниеКомпании, Заказ.ДатаИсполнения, Товары.ТипТовара, Товары.МаркаТовара, Заказ.Количества, Товары.Цена, Заказ.СтоимостьДоставки, (Товары.Цена * Заказ.Количества) + Заказ.СтоимостьДоставки AS [Общая стоимость заказа]
FROM Товары INNER JOIN Заказ ON Товары.КодТовара = Заказ.КодТовара;
Рисунок 3 - Пример запроса с вычисляемым полем
2. Использование операции сцепление строк.
Операция & соединяет два строковых значения, которые могут быть представлены выражениями: <строковое значение 1> & <строковое значение 2>.
Пример. Показать информацию о сотрудниках с указанием их домашних телефонов:
SELECT [Сотрудники]![Фамилия] & " " & [Сотрудники]![Имя] & " (домашний_телефон " & [Сотрудники]![ДомашнийТелефон] & ")" AS Информация
FROM Сотрудники;
Рисунок 4 - Пример запроса с операцией сцепления строк
3. Устранение повторяющихся значений производится через ключевое слово DISTINCT.
Пример. Показать все заказанные товары.
SELECT DISTINCT Товары.ТипТовара, Товары.МаркаТовара
FROM Товары INNER JOIN Заказ ON Товары.КодТовара = Заказ.КодТовара;
4. Отображение всех полей таблицы возможно при использовании * или ALL.
Пример. Показать информацию о товарах.
SELECT Товары.*
FROM Товары;
или
SELECT Товары. All
FROM Товары;