
- •Информационное обеспечение систем управления Построение запросов при работе с базой данных (Учебное пособие)
- •Тестовая база данных
- •Выборка данных. Команда select
- •Синтаксис оператора select
- •Простые варианты поиска данных
- •Упорядочение результата запроса. Предложение order by
- •Использование ключевого слова distinct
- •Предложение where
- •Синтаксис предложения where
- •Использование операторов сравнения
- •Использование варианта between
- •Проверка на присутствие в списке значений (вариант in)
- •Проверка на пустое значение
- •Поиск в строковых столбцах
- •Вариант like
- •Использование логических операций в условиях поиска
- •Порядок выполнения логических операций
- •Преобразование данных при выборке
- •Обобщение Данных с помощью Агрегатных Функций
- •Использование distinct с count
- •Предложение group by
- •Предложение having
- •Соединение таблиц
- •Внутренние соединения (связывание по равенству)
- •Внешние соединения
- •Левое внешнее соединение
- •Правое внешнее соединение
- •Полное внешнее соединение
- •Более сложные примеры соединений
- •Рефлексивное соединение, или самосоединение
- •Использование подзапросов в операторах sql
- •Выбор одного
- •Использование в подзапросе агрегатных функций
- •Связанные подзапросы
- •Использование оператора exists
- •Использование варианта in с подзапросами
- •Использование not exists
- •Объединение запросов
- •Команда union
- •Добавление данных. Команда insert
- •Добавление отдельной строки
- •Добавление группы строк
- •Обновление уже имеющихся данных. Команда update
- •Удаление данных из таблиц. Команда delete
- •Генераторы и их использование
- •Создание генераторов
- •Использование генераторов
- •Увеличение значения генератора
- •Получение значения генератора в приложение
- •Триггер
Министерство образования Российской федерации
Пермский государственный технический университет
И. А. Шмидт
Информационное обеспечение систем управления Построение запросов при работе с базой данных (Учебное пособие)
Тестовая база данных 4
Выборка данных. Команда SELECT 8
Синтаксис оператора SELECT 8
Простые варианты поиска данных 10
Упорядочение результата запроса. Предложение ORDER BY 13
Использование ключевого слова DISTINCT 16
Предложение WHERE 17
Синтаксис предложения WHERE 17
Использование операторов сравнения 18
Использование варианта BETWEEN 20
Проверка на присутствие в списке значений (вариант IN) 21
Проверка на пустое значение 22
Поиск в строковых столбцах 22
Вариант LIKE 22
Использование логических операций в условиях поиска 24
Порядок выполнения логических операций 26
Преобразование данных при выборке 26
Обобщение Данных с помощью Агрегатных Функций 26
Использование DISTINCT с COUNT 27
Предложение GROUP BY 28
Предложение HAVING 30
Соединение таблиц 31
Внутренние соединения (связывание по равенству) 32
Внешние соединения 34
Левое внешнее соединение 34
Правое внешнее соединение 35
Полное внешнее соединение 36
Более сложные примеры соединений 36
Рефлексивное соединение, или самосоединение 40
Использование подзапросов в операторах SQL 41
Выбор одного 41
Использование в подзапросе агрегатных функций 42
Связанные подзапросы 42
Использование оператора EXISTS 45
Использование варианта IN с подзапросами 46
Использование NOT EXISTS 46
Объединение запросов 47
Команда UNION 47
Добавление данных. Команда INSERT 49
Добавление отдельной строки 49
Добавление группы строк 50
Обновление уже имеющихся данных. Команда UPDATE 50
Удаление данных из таблиц. Команда DELETE 51
Генераторы и их использование 52
Создание генераторов 52
Использование генераторов 53
Увеличение значения генератора 53
Получение значения генератора в приложение 53
Триггер 54
Тестовая база данных
Перед изучением языка SQL необходимо рассмотреть тестовую базу данных на которой будут отрабатываться все запросы. Наша тестовая база данных полностью соответствует рассмотренной в учебном пособии по нормализации данных и создании базы данных. Напоминаю, что эта база данных описывает сферу воздушных перевозок. Все пояснения к модели даны в пособии по нормализации данных и создании базы данных
Для начала приведем логическую модель БД, где каждый информационный объект отображается реляционной таблицей, а связи между таблицами соответствуют связям между информационными объектами. Модель представлена в виде диаграммы
Последний этап моделирования БД - переход к физическому уровню модели, на котором модель также представлена в виде диаграммы
Приведем соответствие имен таблиц и полей на логическом и физическом уровне.
Вид объекта |
Название на логическом уровне |
Название на физическом уровне |
Таблица |
Авиамаршрут |
AIRLINE |
Поле |
Номер маршрута |
AL_NUM |
Поле |
Код Типа Самолета |
AL_PL_CODE |
Поле |
Код Авиакомпании |
AL_AC_CODE |
Поле |
Откуда |
AL_AP_FROM |
Поле |
Куда |
AL_AP_TO |
Таблица |
Аэропорт |
AIRPORT |
Поле |
Код аэропорта |
AP_CODE |
Поле |
Название аэропорта |
AP_NAME |
Поле |
Код Города |
AP_CT_CODE |
Таблица |
Авиакомпания |
AIRCOMPANY |
Поле |
Код Авиакомпании |
AC_CODE |
Поле |
Название Авиакомпании |
AC_NAME |
Таблица |
Борт |
BOARD |
Поле |
Борт номер |
BRD_NUM |
Поле |
Код Типа Самолета |
BRD_PL_CODE |
Поле |
Код Авиакомпании |
BRG_AC_CODE |
Таблица |
Город |
CITY |
Поле |
Код Города |
CT_CODE |
Поле |
Название Города |
CT_NAME |
Таблица |
Член Экипажа |
EQUIPAGE |
Поле |
Код Члена Экипажа |
EQ_CODE |
Поле |
Дата вылета |
EQ_FL_DATE |
Поле |
Номер маршрута |
EQ_FL_NUM |
Поле |
Код Личности |
EQ_PR_CODE |
Поле |
Код роли |
EQ_RNK_CODE |
Таблица |
Рейс |
FLIGHT |
Поле |
Дата вылета |
FL_DATE |
Поле |
Номер маршрута |
FL_NUM |
Поле |
Борт номер |
FL_BRD_NUM |
Таблица |
Личность |
PERSON |
Поле |
Код Личности |
PR_CODE |
Поле |
ФИО |
PR_NAME |
Таблица |
Тип Самолета |
PLANE |
Поле |
Код Типа Самолета |
PL_CODE |
Таблица |
Роль члена экипажа |
RANK |
Поле |
Код роли |
RNK_CODE |
Поле |
Роль |
RNK_NAME |
Таблица |
Тип Салона |
SALON |
Поле |
Код Типа Салона |
SL_TYPE |
Поле |
Название Типа Салона |
SL_NAME |
Таблица |
Салон в Самолете |
SALON_IN_PLANE |
Поле |
Код Типа Салона |
SP_SL_TYPE |
Поле |
Код Типа Самолета |
SP_PL_CODE |
Поле |
Количество мест |
SP_COUNT |
Таблица |
Расписание |
TIMETABLE |
Поле |
Код аэропорта |
TBL_AP_CODE |
Поле |
Номер маршрута |
TBL_AL_NUM |
Поле |
Время Прилета |
TBL_DOWN_TIME |
Поле |
Время Вылета |
TBL_START_TIME |
Поле |
Номер в Маршруте |
TBL_NUMBER |
Таблица |
Тариф |
TARIFF |
Поле |
Код Тарифа |
TR_CODE |
Поле |
Код Типа Салона |
TR_SL_TYPE |
Поле |
Номер маршрута |
TR_AL_NUM |
Поле |
Цена билета |
TR_COST |
Поле |
Аэропорт Откуда |
TR_AP_FROM |
Поле |
Аэропорт Куда |
TR_AP_TO |
Таблица |
Билет |
TICKET |
Поле |
Номер билета |
TC_NUM |
Поле |
Код Личности |
TC_PR_CODE |
Поле |
Код Тарифа |
TC_TR_CODE |
Поле |
Дата вылета |
TC_FL_DATE |
Поле |
Номер маршрута |
TC_FL_NUM |
В таблицы тестовой базы данных занесена информация в количестве достаточном для прослеживания основных закономерностей, конечно этих данных намного меньше чем может содержатся в реальной базе данных, посвященной воздушным перевозкам. Все примеры запросов приведенные ниже выполнялись именно на этой базе данных.