
- •Оглавление
- •1. Основные понятия информационных систем
- •1.1. История возникновения информационных систем
- •1.2. Современное понятие информационной системы
- •2. Автоматизированные информационные системы
- •2.1. Преимущества автоматизированных информационных систем
- •2.2. Классификация аис
- •2.2.1. Классификация по типу хранимых данных.
- •2.2.2. Классификация по характеру обработки данных.
- •2.2.3. Классификация по степени интеграции данных и автоматизации управления.
- •2.2.4. Классификация по степени распределенности.
- •2.2.5 Классификация аис по другим признакам
- •3. Банки данных
- •3.1. Понятие банка данных
- •3.2. Преимущества банков данных
- •3.3. Предпосылки широкого использования банков данных
- •3.4. Общие требования к банкам данных
- •3.5. Компоненты банка данных
- •3.5.1. Информационная компонента
- •3.5.2. Программные средства банков данных
- •3.5.3. Языковые средства БнД
- •3.5.4. Технические средства банков данных
- •3.5.5. Организационно-методические средства.
- •4. Виды банков данных
- •4.1. Банки документов
- •4.2. Банки знаний
- •4.3. Экспертные системы
- •4.4. Хранилища данных
- •5. Системы управления базами данных (субд)
- •5.1. Назначение и состав субд
- •5.2. Классификация субд
- •5.3. Архитектура субд
- •5.4. Функции субд
- •5.5. Основные распространенные субд
- •6. Основы проектирования баз данных
- •6.1. Основные понятия в теории баз данных
- •6.2. Связи между сущностями
- •6.3. Этапы проектирования базы данных
- •6.3.1. Инфологическое моделирование
- •6.3.2. Даталогическое моделирование
- •6.3.3. Физическое моделирование
- •7. Модели данных
- •7.1. Иерархическая модель данных
- •7.2. Сетевая модель данных
- •7.3. Понятие реляционной модели данных
- •7.3. Постреляционная модель данных
- •7.4. Объектно-ориентированная модель данных
- •7.5. Объектно-реляционная модель данных
- •8. Реляционная модель данных
- •8.1. Понятие «отношения» в реляционной модели данных
- •8.2. Свойства отношений
- •8.3. Требования к реляционным базам данных
- •8.4. Основные математические понятия
- •9. Нормализация баз данных
- •9.1. Первая нормальная форма
- •9.2. Вторая нормальная форма
- •9.3. Третья нормальная форма
- •9.4. Нормальная форма Бойса – Кодда
- •9.5. Многозначные зависимости
- •9.6. Четвертая нормальная форма
- •9.7. Пятая нормальная форма
- •9.8. Принципы выбора нормальной формы для проектируемой базы данных
- •10. Введение в язык запросов sql
- •10.1. Назначение языка sql
- •10.2. Достоинства языка sql
- •10.3. Состав языка sql
- •10.4. Трехзначная логика
- •10.5. Основные типы данных языка sql
- •11. Sql. Некоторые Операторы языка определения данных
- •11.1. Оператор create table
- •11.2. Оператор alter table
- •11.3. Оператор drop table
- •12. Sql. Операторы изменения данных
- •12.1. Оператор insert into
- •12.2. Оператор update
- •12.3. Оператор delete from
- •13. Sql. Выбор информации из базы данных
- •13.1. Общее описание оператора select
- •13.1.1. Назначение оператора select
- •13.1.2. Синтаксическая диаграмма оператора select
- •13.2. Обязательные предложения оператора select
- •13.2.1. Предложение select.
- •13.2.2. Предложение from.
- •13.2.3. Примеры простейших запросов на выборку.
- •13.3. Отбор строк (предложение where)
- •13.3.1. Сравнение
- •13.3.2. Проверка на принадлежность диапазону значений (between)
- •13.3.3. Проверка на членство во множестве (in)
- •13.3.4. Проверка на соответствие шаблону (like)
- •13.3.5. Отслеживание отсутствия значений (null)
- •13.3.6. Составные условия отбора строк
- •13.4. Сортировка результатов запроса (предложение order by)
- •13.5 Примерный порядок выполнения простых однотабличных запросов
- •13.6. Многотабличные запросы
- •13.6.1. Полные имена столбцов.
- •13.6.2. Псевдонимы таблиц.
- •13.6.3. Особенности многотабличных запросов.
- •13.6.4. Примеры многотабличных запросов.
- •13.6.5. Соединение таблиц в предложении from.
- •13.6.6. Примерный порядок выполнения многотабличных запросов
- •13.7. Итоговые запросы на чтение
- •13.7.1. Агрегатные функции.
- •13.7.2. Группировка строк (предложение group by)
- •13.7.3. Отбор групп строк (предложение having)
- •13.7.4. Примерный порядок выполнения итоговых запросов
- •13.8. Вложенные запросы на чтение (подзапросы)
- •13.8.1. Использование вложенных запросов
- •13.8.2. Сравнение с результатом вложенного запроса
- •13.8.3. Проверка на принадлежность результатам вложенного запроса
- •13.8.4. Проверка на существование (exists)
- •13.8.5. Многократное сравнение (any, all)
- •13.9. Объединение результатов нескольких запросов
13.6.4. Примеры многотабличных запросов.
Пример 20. Вывести список контактов и номеров телефонов.
SELECT NAME1, NOMER
FROM KONTAKTY K, NOMERA
WHERE KONT_ID=K.ID
ORDER BY NAME1, NOMER
Пример 21. Вывести список контактов-женщин.
SELECT K.NAME1, P.NAZV
FROM KONTAKTY K, POL P
WHERE (K.POL_ID=P.ID) AND (P.NAZV= 'Женский ')
Пример 22. Вывести список контактов с указанием групп контактов.
SELECT K.NAME1, G.NAZV
FROM KONTAKTY K, GRUPPY G, KONT_GR
WHERE (K.ID=KONT_ID) AND (GR_ID=G.ID)
ORDER BY K.NAME1, G.NAZV
Пример 23. Вывести список вызовов определенного контакта.
SELECT V.ID, V.VREMYA, TV.NAZV, V.DLIT, V.STOIM
FROM VYZOVY V, TIPY_VYZ TV, NOMERA N, KONTAKTY K
WHERE (V.TIP_ID=TV.ID) AND (V.NOMER_ID=N.ID) AND (N.KONT_ID=K.ID)
AND K.NAME1= 'Иванов Александр Сергеевич '
ORDER BY V.VREMYA
Пример 24. Вывести список контактов, с которыми состоялся хотя бы один телефонный разговор.
SELECT DISTINCT K.NAME1
FROM VYZOVY V, TIPY_VYZ TV, NOMERA N, KONTAKTY K
WHERE (V.TIP_ID=TV.ID) AND (V.NOMER_ID=N.ID) AND (N.KONT_ID=K.ID)
AND TV.NAZV<> 'Пропущенный'
ORDER BY K.NAME1
Пример 25. Вывести подробную информацию о вызовах (в хронологическом порядке) с указанием типа вызова, номера телефона, типа номера телефона, контакта и мелодии контакта.
SELECT V.ID, TV.NAZV,K.NAME1, N.NOMER,TN.NAZV,V.VREMYA,V.DLIT, V.STOIM, M.NAZV
FROM VYZOVY V, TIPY_VYZ TV, NOMERA N, TIPY_NOM TN, KONTAKTY K, MELODII M
WHERE (V.TIP_ID=TV.ID) AND (V.NOMER_ID=N.ID) AND (N.TIP_ID=TN.ID)
AND (N.KONT_ID=K.ID) AND (K.MEL_ID=M.ID)
ORDER BY V.VREMYA
13.6.5. Соединение таблиц в предложении from.
Различные способы соединения таблиц можно выполнить в предложении FROM при помощи операции JOIN.
Синтаксис:
FROM <имя таблицы1> INNER|LEFT|RIGHT|FULL JOIN <имя таблицы2> ON <условие>.
В качестве условия чаще всего используется условие равенства связанных столбцов в соединяемых таблицах.
Существует четыре способа соединения: внутреннее (INNER JOIN), левое внешнее (LEFT JOIN), правое внешнее (RIGHT JOIN) и полное внешнее (FULL JOIN).
Примечание. В Microsoft Access операция FULL JOIN не работает!!!
В результаты любого способа соединения попадут строки, для которых выполняется условие.
Внутреннее соединение (INNER JOIN) эквивалентно использованию условия равенства связанных столбцов в предложении WHERE. Помимо этого:
в результаты левого соединения (LEFT JOIN) попадут строки из первой (левой) таблицы, для которых нет связанных строк во второй (правой) таблице;
в результаты правого соединения (RIGHT JOIN) попадут строки из второй (правой) таблицы, для которых нет связанных строк в первой (левой) таблице;
в результаты полного соединения (FULL JOIN) попадут строки из обеих таблиц, для которых нет связанных строк в другой таблице.
При этом отсутствие связанной строки из другой таблицы фиксируется наличием NULL в соответствующих столбцах таблицы результатов запроса.
Пример 26 (20). Вывести список контактов и номеров телефонов.
SELECT K.NAME1, N.NOMER
FROM KONTAKTY K INNER JOIN NOMERA N ON N.KONT_ID=K.ID
ORDER BY K.NAME1, K.NOMER
Пример 27. Вывести список контактов c указанием пола.
Некорректно:
SELECT K.NAME1, P.NAZV
FROM KONTAKTY K, POL P
WHERE K.POL_ID=P.ID
ORDER BY K.NAME1
Правильно:
SELECT K.NAME1, P.NAZV
FROM KONTAKTY K LEFT JOIN POL P ON K.POL_ID=P.ID
ORDER BY K.NAME1
Пример 28 (22). Вывести список контактов с указанием групп контактов.
SELECT K.NAME1, G.NAZV
FROM (KONTAKTY K LEFT JOIN KONT_GR KG ON K.ID = KG.KONT_ID)
LEFT JOIN GRUPPY G ON KG.GR_ID=G.ID
ORDER BY K.NAME1, G.NAZV