- •Основные понятия
- •1.1.Состав субд
- •1.2. Классификация баз данных
- •1. 3. Архитектура баз данных
- •Глава 2 проектирование баз данных
- •2.1. Этапы проектирования базы данных
- •2.2. Моделирование локальных представлений
- •3.1 Иерархические модели
- •3.2. Сетевые модели
- •3.3. Реляционные базы данных
- •Реляционные основы концептуального проектирования
- •4.1. Нормализация отношений
- •4.2. Проектирование реляционных баз данных (рбд)
- •5. Агрегированные объекты могут быть сведены в одно реляционное отношение в том случае, если те объекты, с которыми связан каждый из них, полностью совпадают (рис.4.13).
- •Упражнения к главе 4
- •Операции над отношениями
- •5.1. Выполнение операций над отношениями
- •На рис.5.1 приведены примеры операций реляционной алгебры над отноше
- •Реляционные языки запросов
- •6.1. Язык sql (Structured Query Language)
- •6.2. Операторы манипулирования данными
- •Поставщики (s)Tаблица 6.1
- •6.3.Выборки
- •Результат: номер поставщикасостояние
- •Результат: номер_деталивес
- •Р6 Шайба Красный 19 Липецк
- •6.4.3Апросы, использующие соединения
- •6.5.Подзапросы
- •6.6. Подзапросы с несколькими уровнями вложения
- •6.7. Коррелированный подзапрос.
- •6.8. Квантор существования. Запрос, использующий exists
- •6.9. Стандартные функции
- •6.10. Использование группировок (group by)
- •6.11. Объединение с использованием union
- •6.12. Многоаспектный запрос
- •6.13. Операции обновления
- •6.14. Представления
- •Упражнения к главе 6
- •Субд foxpro 2.0
- •7.1. Системный интерфейс FoxPro, главное меню
- •7.2. Архитектура субд FoxPro 2.0
- •Типы и размеры полей (в байтах).
- •Поле дат 8.
- •7.3. Основные команды FoxPro 2.0
- •7.4. Создание и редактирование бд
- •Антонов 4
- •7.5. Команды просмотра и редактирования записей
- •7.6. Создание командных файлов
- •Сведения о сотрудниках
- •7.7. Команды управления
- •7.8. Циклы в FoxPro
- •7.9. Построение экранных форм
- •Карта ввода
- •Карта ввода
- •7.10. Работа с массивами
- •Фио Должность Оклад
- •7.11. Построение меню
- •Пример составления меню
- •7.12. Модульное программирование
- •7.13.Изобразительные средства субд
- •7.14. Функции в FoxPro
- •7.15. Работа с несколькими бд, связывание бд
- •7.16. Работа с окнами
- •Упражнения к главе 7
- •Создание базы данных в среде Microsoft Access
- •8.1. Создание и открытие базы данных
- •8.2. Конструирование форм в среде Microsoft Access
- •8.3. Связывание таблиц в Microsoft Access
- •8.4. Запросы к связанным таблицам
- •8.5. Отчеты
- •8.6. Рисунки и другие объекты в среде Microsoft Access
- •Приложение 1 База данных поставок
- •Приложение 2 Список вопросов для повторения учебного материала
- •Приложение 3 Задания для самостоятельного выполнения
- •Список литературы
- •Оглавление
- •Глава 7. Субд foxpro 2.0................................................…….........………… 54
- •Глава 8. Создание базы данных в среде Microsoft Access .........……................88
6.8. Квантор существования. Запрос, использующий exists
Пример 6.21. Выдать фамилии поставщиков, которые поставляют деталь Р2:
46
SELECT ИМЯ
FROM S
WHERE EXISTS
(SELECT *
FROM SP
WHERE НОМЕР_ПОСТАВЩИКА = S.НОМЕР_ПОСТАВЩИКА AND НОМЕР_ДЕТАЛИ='Р2')
EXISTS (существует) представляет здесь квантор существования - понятие, заимствованное из формальной логики.
Пример 6.22. Запрос, использующий NOT EXISTS. Выдать имена поставщиков, которые не поставляют деталь Р2:
SELECT ИМЯ
FROM S
WHERE NOT EXISTS
(SELECT *
FROM SP
WHERE НОМЕР_ПОСТАВЩИКА = S.НОМЕР_ПОСТАВЩИКА AND НОМЕР_ДЕТАЛИ = 'P2')
6.9. Стандартные функции
В запросах могут использоваться следующие стандартные функции: COUNT число значений в столбце; SUM сумма значений какого-либо столбца; AVG среднее значение; MAX самое большое значение в столбце; MIN самое малое значение в столбце.
Пример 6.23. Выдать общее количество поставщиков:
SELECT СOUNT (*)
FROM S
Результат: 5
Пример 6.24. Выдать общее количество поставляемых деталей P2:
SELECT SUМ
FROM SP
WHERE НОМЕР_ДЕТАЛИ = ‘P2’
Результат: 1000
Пример 6.25. Функция в подзапросе. Выдать номера поставщиков со значением поля СОСТОЯНИЕ меньшим, чем текущее максимальное состояние в таблице S:
47
SELECT НОМЕР_ПОСТАВЩИКА
FROM S
WHERE СОСТОЯНИЕ <
(SELECT MAX (СОСТОЯНИЕ)
FROM S)
Результат: НОМЕР ПОСТАВЩИКА
S1
S2
S3
6.10. Использование группировок (group by)
Пример 6.26. Вычислить общий объем поставок для каждой детали:
SELECT НОМЕР_ДЕТАЛИ, SUM (КОЛИЧЕСТВО)
FROM SP
GROUP BY НОМЕР_ДЕТАЛИ
Результат: НОМЕР ДЕТАЛИ
Р1 600
Р2 1000
РЗ 400
Р4 500
Р5 500
Р6 100
Пример6.27. Запрос с использованием HAVING (Исключение всех групп, для которых не выполняется заданное условие). Выдать номера деталей, поставляемых более чем одним поставщиком:
SELECT НОМЕР_ДЕТАЛИ
FROM SP
GROUP BY НОМЕР_ДЕТАЛИ
HAVING COUNT (*) > 1
Результат: НОМЕР ДЕТАЛИ
Р1
Р2
Р4
Р5
6.11. Объединение с использованием union
Пример 6.28. Выдать номера деталей, которые имеют вес больше 16, либо поставляются поставщиком S2 (либо то и другое):
SELECT НОМЕР_ДЕТАЛИ
FROM P
WHERE ВЕС > 16
UNION
SELECT НОМЕР_ДЕТАЛИ
48
FROM SP
WHERE НОМЕР_ПОСТАВЩИКА = 'S2'
Результат: НОМЕР ДЕТАЛИ
Р1
Р2
РЗ
Р6