- •Рецензенты:
- •Введение 11 Глава 1. Проектирование баз данных 14
- •Глава 2. Субд Visual FoxPro 114
- •Глава 3. Субд Access 202
- •Глава 4. Субд Microsoft sql Server 313
- •Глава 5. Субд Oracle 360
- •Глава 1. Проектирование баз данных
- •1.1. История развития баз данных и субд
- •1.2. Классификация субд, основные термины, понятия и определения
- •1) Сетевые, корпоративные, распределенные, клиент-серверные, полнофункциональные, масштабируемые, “большие” субд.
- •2) Локальные, персональные, настольные, файл-серверные, “малые” субд.
- •1.3. Модели данных
- •1.3.1. Уровни представления и независимости данных
- •1.3.2. Порядок взаимодействия пользователя, субд и ос
- •1.3.3. Типы связей между объектами
- •1.3.4. Контроль целостности связей
- •1.3.5. Формы записи концептуальной модели
- •1.3.6. Иерархическая модель
- •1.3.7. Сетевая модель
- •1.3.8. Реляционная модель
- •1.3.8.1. Индексирование таблиц
- •1.3.8.2. Связывание таблиц
- •1.3.9. Постреляционная модель
- •1.3.10. Многомерная модель
- •1.3.11. Объектно‑ориентированная модель
- •1.4. Модели использования баз данных в сети
- •1.4.1. Сеть
- •1.4.2. Модели использования баз данных
- •1.4.3. Мониторы обработки транзакций (tpm)
- •1.4.4. Децентрализованное управление базами данных
- •1.4.5. Таблицы в локальных сетях
- •1.5. Проектирование баз данных
- •1.5.1. Принципы и этапы проектирования и создания баз данных
- •2.6. Создание er‑диаграмм для отдельных пользователей.
- •3.4. Создание er‑диаграммы глобальной логической модели.
- •4. Создание глобальной логической модели в среде целевой субд.
- •1.5.2. Методы нормализации и денормализации отношений
- •1.5.3. Правила формирования взаимосвязанных таблиц
- •1.5.4. Модели жизненного цикла и проектирование баз данных
- •1.5.4.1. Модели жизненного цикла
- •1.5.4.2. Обследование, системный анализ и постановка задачи
- •1.5.4.3. Инфологическое проектирование
- •1.5.4.4. Датологическое проектирование
- •1.5.4.5. Проектирование физической модели
- •1.5.4.6. Реализация, интеграция и внедрение
- •1.5.5. Выбор субд
- •1.5.5.1. Сравнение Visual FoxPro, Access, sql Server, Oracle и Excel
- •1.5.5.2. Методика балловой оценки программных средств
- •1.5.6. Case‑средства автоматизации проектирования
- •1. Ориентация на этапы жизненного цикла
- •2. Функциональная полнота
- •3. Степень зависимости от субд
- •4. Тип используемой модели
- •1.6. Использование баз данных
- •1.6.1. Защита информации
- •1.6.2. Резервирование информации
- •1.6.3. Варианты разработки приложений
- •1.7. Стандартизация баз данных
- •1.8. Язык sql
- •1.8.1. Введение в sql
- •1.8.2. Типы данных sql
- •1.8.3. Оператор выбора данных select
- •1.8.3.1. Назначение и синтаксис оператора
- •1.8.3.2. Объединение таблиц
- •1.8.3.3. Вложенные и коррелированные запросы
- •1.8.3.4. Запросы, использующие exist, any, all
- •1.8.3.5. Стандартные функции
- •1.8.3.6. Запрос с группировкой
- •1.8.4. Операторы обновления базы
- •1.8.4.1. Оператор корректировки данных update
- •1.8.4.2. Оператор удаления записей delete
- •1.8.4.3. Оператор включения записей insert
- •1.8.5. Представления
- •1.8.6. Контроль целостности базы данных
- •1.8.6.1. Определение целостности
- •1.9. Перспективы развития субд
- •В опросы для самопроверки и контроля
- •Глава 2. Субд Visual FoxPro
- •2.1. Общепринятые обозначения
- •2.2. Основные ограничения
- •2.3. Компоненты Visual FoxPro
- •2.4. Язык программирования FoxPro
- •2.4.1. Создание, компиляция и выполнение программ, процедур и функций
- •2.4.2. Константы
- •2.4.3. Переменные
- •2.4.4. Массивы
- •2.4.5. Операции
- •2.4.6. Команды управления
- •2.4.6.1. Команда проверки условия (If)
- •2.4.6.2. Команда выбора (Do Case)
- •2.4.7. Организация циклов
- •2.4.7.1. Цикл (Do While)
- •2.4.7.2. Счетный цикл (For)
- •2.4.7.3. Цикл сканирования таблицы (Scan)
- •2.4.8. Создание свободных таблиц
- •2.4.8.1. Создание и изменение структуры таблиц
- •2.4.8.2. Заполнение таблиц
- •2.4.9. Редактирование таблиц в диалоговом режиме (Browse, Edit)
- •2.4.10. Перемещение по таблице (Go, Skip)
- •2.4.11. Просмотр таблиц (Display, List)
- •2.4.12. Удаление записей (Delete, Zap, Pack)
- •2.4.13. Редактирование полей в программном режиме (Replace)
- •2.4.14. Локализация и поиск записей в таблице
- •2.4.14.1. Фильтрация данных (Set Filter)
- •2.4.14.2. Последовательный поиск (Locate)
- •2.4.15. Индексирование и открытие таблиц
- •2.4.16. Прямой поиск
- •2.4.17. Одновременная работа с несколькими таблицами
- •2.4.17.1. Рабочие области
- •2.4.17.2. Команда установки связей между таблицами
- •2.4.18. Обмен данными между массивами и таблицами
- •2.4.19. Ввод‑вывод данных сообщений
- •2.4.19.1. Вывод данных на экран (?, ??, ???)
- •2.4.19.2. Вывод сообщения (Wait)
- •2.4.19.3. Вывод сообщения и кнопок (MessageBox)
- •2.4.20. Организация меню
- •2.4.20.1. Общий порядок создания и использования меню
- •2.4.20.2. Вертикальное Popup-меню
- •2.4.20.3. Горизонтальное Bar-меню
- •2.4.20.4. Двухуровневое Pulldown-меню
- •2.4.20.5. Управление доступом к меню
- •2.4.21. Манипулирование файлам и таблицами
- •2.4.22. Математическая обработка таблиц
- •2.4.23. Язык запросов sql
- •2.5. Настройка среды Visual FoxPro
- •2.6. Объекты и классы
- •2.7. События и методы
- •2.8. Общий порядок работы с Visual FoxPro
- •2.9. Создание проекта
- •2.10. Создание базы данных
- •Р ис. 2.10.2. Окно установки контроля целостности связей
- •2.11. Представления (View)
- •2.11.1. Мастер представлений
- •2.11.2. Конструктор представлений
- •2.11.3. Удаленные представления (Remote Views)
- •2.12. Запросы
- •2.12.1. Мастера запросов
- •2.12.2. Конструктор запросов
- •2.12.3. Функции сквозных запросов
- •2.13. Формы
- •2.13.1. Мастера форм
- •2.13.2. Конструктор форм
- •Р ис. 2.13.2.3. Вид отображаемых таблиц
- •2.14. Отчеты
- •2.14.1. Мастера отчетов
- •2.14.2. Конструктор отчетов
- •2.14.3. Команда вывода отчета
- •2.15. Меню
- •2.16. Управление проектом и создание приложения
- •2.16.1. Свойства проекта
- •2.16.2. Параметры проекта
- •2.16.3. Создание приложения
- •2.16.4. Галерея компонентов
- •2.17. Отладка программ
- •2.18. Хранимые процедуры
- •2.19. Классы
- •2.20. Создание класса панели инструментов
- •Р ис. 2.20.1. Вид формы, построенной на основе класса clFormNavigator
- •2.21. Включение в базу ole‑объектов
- •2.22. Обзор дополнительных возможностей
- •2.23. Среда быстрой разработки приложений ‑ пакет MacroFox
- •2.23.1. Назначение
- •2.23.2. Структура
- •2.23.3. Основные макрооператоры
- •2.23.3.1. Описание входного документа (Forma)
- •2.23.3.2. Описание формы отчета (Ofort)
- •2.23.3.3. Описание меню (Menu)
- •2.23.4. Словари баз, функций, форм, таблиц и условий
- •2.23.5. Управление сценариями
- •2.23.6. Ведение таблиц базы данных
- •2.23.7. Формирование отчетов и запросов‑отчетов
- •2.23.8. Сводная обработка данных
- •2.23.9. Супероболочка
- •2.23.10. Порядок работы
- •В опросы для самопроверки и контроля
- •Глава 3. Субд Access
- •3.1. Последовательность работ при создании новой базы данных
- •3.2. Создание базы данных
- •3.2.1. Запуск Access и открытие базы данных
- •3.2.2. Создание пустой базы данных
- •3.2.3. Рабочая среда Access
- •3.2.4. Работа с таблицами
- •3.2.4.1. Создание таблиц
- •3.2.4.2. Связывание таблиц
- •3.2.4.3. Сортировка, поиск и фильтрация записей
- •3.3. Формирование и использование внешних данных
- •3.4. Запросы
- •3.4.1. Запросы на выборку данных
- •3.4.1.1. Простой запрос
- •Р ис. 3.4.1.1.2. Окно конструктора запросов
- •3.4.1.2. Итоговый запрос
- •Р ис. 3.4.1.2.2. Окно конструктора запросов
- •3.4.1.3. Перекрестный запрос
- •3.4.1.4. Динамический запрос
- •3.4.2. Запросы на обновление данных
- •3.4.3. Параметрические запросы
- •3.4.4. Выражения
- •3.5. Формы
- •3.5.1. Автоформы
- •3.5.2. Мастер форм
- •3.5.3. Конструктор форм
- •3.5.3.1. Основные операции над объектами
- •3.5.3.2. Основные элементы управления
- •3.5.3.3. Создание формы
- •3.5.4. Редактирование данных в режиме формы
- •3.6. Отчеты
- •3.6.1. Автоотчеты
- •3.6.2. Мастер отчетов
- •3.6.3. Конструктор отчетов
- •3.6.3.1. Окно предварительного просмотра отчета
- •Р ис. 3.6.3.2. Окно конструктора отчетов
- •3.6.4. Диаграммы
- •3.6.5. Составные отчеты
- •3.6.6. Дополнительные возможности
- •3.7. Пользовательский интерфейс
- •3.7.1. Панель инструментов
- •3.7.2. Меню
- •3.7.3. Контекстные меню
- •3.7.4. Связывание меню и панелей с формами и отчетами
- •3.7.5. Кнопочная форма
- •3.7.6. Настройка параметров среды и запуска приложения
- •3.7.7. Изменение меню и панелей инструментов средствами Visual Basic
- •3.8. Макросы
- •3.9. Web‑страницы
- •3.9.1. Экспорт объектов в формат html
- •3.9.2. Страницы доступа
- •3.10. Интеграция Access с другими компонентами Office
- •3.10.1. Использование Microsoft Excel при работе Access
- •3.10.2. Использование Microsoft Word при работе с Access
- •3.10.3. Добавление ActiveX‑элементов
- •3.10.4. Использование Access в качестве сервера
- •3.11. Совместное использование баз данных в сети
- •3.12. Разработка клиент‑серверных приложений
- •3.12.1. Доступ к базам данных через odbc
- •3.12.2. Доступ к базам данных через ole db, ado
- •3.12.3. Способы работы с внешними данными
- •3.12.3.1. Присоединение таблиц
- •3.12.3.2. Сквозные запросы
- •3.12.3.3. Хранимые процедуры
- •3.12.3.4. Объектная модель dao
- •3.12.4. Проекты Access
- •3.12.4.1. Создание проектов
- •3.12.4.2. Изменение свойств таблиц
- •3.12.4.3. Схемы базы данных
- •3.12.4.4. Конструктор представлений
- •3.12.4.5. Хранимые процедуры
- •3.12.4.6. Сортировка и отбор записей в формах и отчетах
- •3.13. Репликация баз данных
- •3.13.1. Репликация баз данных Access
- •3.13.2. Репликация проектов Access
- •3.14. Администрирование баз данных и проектов
- •3.14.1. Архивирование, сжатие и восстановление
- •3.14.2. Стандартные средства субд защиты базы данных
- •3.14.3. Примеры оригинальных программные средств защиты базы данных
- •3.14.3.1. Регистрация пользователей и установка их полномочий
- •3.14.3.2. Формирование журнала аудита (изменений) базы данных
- •3.14.3.3. Защита параметров запуска приложений от изменений
- •3.15. Перенос базы данных Access на платформу sql Server
- •3.16. Обзор инструментальных средств Office Developer Edition
- •3.17.1. Быстрое отслеживание данных
- •3.17.2. Создание отчетов
- •3.17.3 Обмен с другими пользователями
- •3.17.4. Быстрые способы начала работы
- •3.17.5 Интерфейс пользователя
- •3.17.6 Средства создания объектов
- •3.17.7. Режимы отчета и макета
- •3.17.8 Разделенные формы
- •3.17.9 Внедренные макросы в формах и отчетах
- •3.17.10. Новые типы данных и элементы управления
- •3.17.11. Средства конструирования и анализа
- •3.17.12. Безопасность
- •3.17.13. Интеграция с Службы Windows SharePoint Services
- •3.17.14. Сбор данных с помощь форм InfoPath и Outlook
- •3.17.15. Экспорт в форматы pdf и xps
- •3.17.16. Работа с внешними данными
- •3.17.17. Способы устранения неполадок
- •3.17.18. Средства проверки орфографии
- •3.17.19. Создание ленты пользователя
- •3.18.1. Создание Web-базы данных для публикации в Интернете
- •Подготовка
- •Начало работы с пустой веб-базой данных
- •Создание веб-таблицы.
- •Добавление поля щелчком таблицы.
- •Изменение свойств поля.
- •Добавление вычисляемого поля.
- •Настройка правил проверки данных.
- •Создание правила проверки поля и соответствующего сообщения.
- •Создание правила проверки записи и соответствующего сообщения.
- •Создание веб-формы.
- •Создание веб-отчета
- •Сделайте форму навигации веб-формой, отображаемой по умолчанию.
- •Синхронизация веб-базы данных
- •Вопросы для самопроверки и контроля
- •Глава 4. Субд Microsoft sql Server
- •4.1. Характеристика
- •4.2. Старт, остановка и приостановка sql Server
- •4.2.1. Старт sql Server
- •4.2.2. Приостановка sql Server
- •4.2.3. Остановка sql Server
- •4.2.4. Регистрация сервера
- •4.2.4.1. Окно регистрации сервера
- •4.3. Работа с базой данных
- •4.3.1. Организация и создание базы данных
- •4.3.1.1. Физическая организация
- •4.3.1.2. Размещение файлов
- •4.3.1.3. Создание базы данных средствами sql Server Enterprise
- •4.3.2. Создание и настройка таблицы базы данных
- •4.3.3. Создание и настройка диаграмм
- •4.3.4. Заполнение таблиц
- •4.3.5. Создание и настройка представлений
- •4.3.6. Язык запросов Transact‑sql
- •4.3.6.1. Основные элементы
- •4.3.6.2. Операции
- •4.3.6.3. Операторы
- •4.3.6.4. Базы данных
- •4.3.6.5. Таблицы
- •4.3.6.6. Запросы
- •4.3.6.7. Представления
- •4.3.6.8. Индексы
- •4.3.6.9. Статистика
- •4.3.6.10. Фрагментация
- •4.3.6.11. Курсоры
- •4.3.6.12. Транзакции и блокировки
- •4.3.6.13. Системные переменные, функции и хранимые процедуры
- •4.3.7. Хранимые процедуры
- •4.3.8. Создание триггеров
- •4.3.9. Формирование правил контроля вводимых значений
- •4.3.10. Формирование стандартных значений
- •4.4. Администрирование sql Server
- •4.4.1. Настройка параметров
- •4.4.2. Системные базы данных и таблицы
- •4.4.3. Тестирование и сжатие баз данных
- •4.4.4. Обмен данными с внешними системами
- •4.4.5. Создание резервных копий и восстановление баз данных
- •4.4.6. Использование службы выполнения расписаний sql Server Agent
- •4.4.7. Защита данных
- •4.4.8. Репликация данных
- •4.4.9. Взаимодействие sql‑сервера с Excel и Word
- •4.4.10. Перенос приложения Access в среду sql Server
- •В опросы для самопроверки и контроля
- •Глава 5. Субд Oracle
- •5.1. Основные понятия
- •5.1.1. Файлы данных и табличные пространства
- •5.1.2. Таблицы и индексы
- •5.1.3. Кластеры
- •5.1.4. Словарь данных
- •5.1.5. Объекты базы данных
- •5.1.6. Виды
- •5.1.7. Триггеры
- •5.1.12. Журналы транзакций
- •5.1.13. Экземпляр базы данных
- •5.1.14. Типы данных
- •5.1.14.1. Строки
- •5.1.14.2. Числа
- •5.1.14.3. Битовые строки
- •5.1.14.4. Дата и время
- •5.3.1. Таблицы
- •5.3.2. Представления
- •5.3.3. Запросы
- •5.3.4. Средства разграничения доступа
- •5.3.4.1. Создание и удаление пользователя
- •5.3.4.2. Привилегии
- •5.4.1. Правила написания программы
- •5.4.2. Операторы управления
- •5.4.3. Выражения
- •5.4.4. Переменные
- •5.4.4.1. Скалярные переменные
- •5.4.4.2. Объектные переменные
- •5.4.4.3. Записи
- •5.4.4.4. Коллекции
- •5.4.5. Пакеты
- •5.4.6. Процедуры и функции
- •5.4.7. Курсоры
- •5.4.8. Транзакции
- •5.4.9. Обработка исключений
- •5.4.10. Динамический sql‑оператор
- •5.4.11. Внедрение sql, pl/sql в прикладные программы
- •В опросы для самопроверки и контроля
- •Глава 7. Практикум
- •7.1. Язык запросов sql
- •7.1.1. Запросы на чтение данных
- •7.1.2. Запросы на обновление данных
- •7.1.3. Представления
- •7.2. Работа с базами данных
- •7.3. Курсовые работы
- •1. Учет успеваемости студентов.
- •2. Учет обмена валюты.
- •3. Учет объектов строительства.
- •4. Учет выдачи и возврата книг.
- •5. Учет авиапассажиров.
- •6. Учет производства сельскохозяйственных культур.
- •7. Учет выпуска изделий.
- •8. Учет платежей налогов.
- •9. Учет поставок товаров.
- •10. Учет сбросов отравляющих веществ в окружающую среду.
- •11. Учет уволившихся с предприятия.
- •12. Учет призеров Олимпийских игр.
- •14. Учет участников олимпиады.
- •15. Учет проданных товаров.
- •16. Учет малых предприятий.
- •17. Учет больных в больнице.
- •18. Учет движения общественного транспорта.
- •19. Учет дорожно-транспортных происшествий.
- •20. Учет платежных поручений в банке.
- •21. Учет договоров займа.
- •22. Учет проданных ценных бумаг.
- •23. Учет кадров.
- •24. Учет очередников на получение жилья.
- •25. Учет исполнительской дисциплины.
- •26. Учет книг в библиотеке.
- •27. Учет переселенцев.
- •28. Учет успеваемости школьников.
- •29. Учет нарушителей трудовой дисциплины на предприятии.
- •30. Учет семейного бюджета.
- •Приложения Приложение 1. Ответы на вопросы для самопроверки
- •Глава 1. Проектирование баз данных
- •Глава 2. Субд Visual FoxPro
- •Глава 3. Субд Access
- •Глава 4. Субд Microsoft sql Server
- •Глава 5. Субд Oracle
- •Приложение 2. Вопросы для экзаменационных билетов
- •Приложение 3. Встроенные функции субд Visual FoxPro
- •Математические функции
- •Строковые функции
- •Функции работы с датами
- •Функции преобразования типов данных
- •Функции проверки файлов и дисков
- •Функции времени
- •Функции анализа условий, типов и наличия данных
- •Функции подстановки
- •Функции работы с массивами
- •Функции работы с цветом
- •Приложение 4. События, методы и свойства объектов субд Visual FoxPro События
- •Свойства
- •Приложение 5. Встроенные функции pl/sql субд Oracle
- •Символьные функции
- •Функции преобразования
- •Календарные функции
- •Смешанные функции
- •Предметный указатель
- •Библиографический список
- •Плещёв Владимир Васильевич Базы данных.
- •С примерами и упражнениями
В опросы для самопроверки и контроля
Вопросы для самопроверки
Укажите область допустимых значений для полей типа Varchar.
Каким образом представляются поля типа Int?
Укажите область допустимых значений для переменных типа Binary_Integer.
Укажите область допустимых значений для полей типа Numeric.
Для чего используется тип переменной Varray?
Что означает параметр %Type в операторе объявления переменной?
Для чего используется тип переменной Ref Cursor?
Что представляет собой коллекция?
Что представляет собой пакет в PL/SQL?
Какая форма записи параметров допускается в подпрограммах?
Что означает атрибут курсора %Isopen?
Что означает атрибут курсора %Rowcount?
Для чего предназначен оператор Fetch?
Что такое динамический SQL‑оператор?
Каково назначение оператора Savepoint?
Каково назначение оператора Rollback?
Каково назначение оператора Raise?
Каково назначение SQL‑команды Create View?
Каково назначение метода таблицы Limit?
Каково назначение метода таблицы Trim([n])?
Контрольные вопросы
Укажите область допустимых значений для полей типа Nvarchar2.
Укажите область допустимых значений для полей типа Char.
В чем заключается отличие типа Pls_Integer от типа Binary_Integer?
Укажите область допустимых значений для переменных типа Pls_Integer.
Укажите область допустимых значений для переменных типа Boolean.
Для чего используется тип переменной Record?
Для чего используется тип переменной Table?
Что означает параметр %Rowtype в операторе объявления переменной?
Что представляют собой перезагружаемые подпрограммы?
Что понимается под курсором?
Могут ли использоваться переменные курсоры в динамических SQL‑операторах?
Что означает атрибут курсора %Found?
Каково назначение SQL‑оператора Execute?
Каково назначение контрольной точки?
Каким оператором вызывается обработчик исключений?
Каково назначение SQL‑оператора Grant?
Каково назначение метода таблицы Exists?
Каково назначение метода таблицы Count?
Каково назначение хост‑переменных?
Каково назначение предкомпиляторов Oracle?
Глава 7. Практикум
7.1. Язык запросов sql
7.1.1. Запросы на чтение данных
В следующих упражнения из [18] используется базы данных «Поставки» с таблицами (ключевые поля подчеркнуты):
S – поставщики (Номер_поставщика, Фамилия, состояние, Город);
Р – детали (Номер_детали, Название, цвет, Вес, Город);
SP – поставки деталей (Номер_поставщика, Номер_детали, Количество);
J – изделия (Номер_изделия, Название, Город);
SPJ поставка деталей для изделий – (Номер_поставщика, Номер_детали, Номер_изделия, Количество).
Подзапросы
7.1.1.1 Выдать названия изделий, для которых поставляются детали поставщиком S1.
7.1.1.2. Выдать цвета деталей, поставляемых поставщиком S1.
7.1.1.3. Выдать номера деталей, поставляемых для какого-либо изделия в Лондоне.
7.1.1.4. Выдать номера изделий, использующих по крайней мере одну деталь, поставляемую поставщиком S1.
7.1.1.5. Выдать номера поставщиков, поставляющих по крайней мере одну деталь, поставляемую по крайней мере одним поставщиком, который поставляет по крайней мере одну красную деталь.
7.1.1.6. Выдать номера поставщиков, имеющих состояние меньшее, чем у поставщика S1.
7.1.1.7. Выдать номера поставщиков, поставляющих детали для какого-либо изделия с деталью Р1 в количестве, большем, чем средний объем поставок детали Р1 для этого изделия.
Квантор EXISTS
7.1.1.8. Повторите упражнение 7.1.1.3 и используйте в Вашем решении EXISTS.
7.1.1.9. Повторите упражнение 7.1.1.4 и используйте в Вашем решении EXISTS.
7.1.1.10. Выдать номера изделий, для которых не поставляет какой-либо красной детали поставщик из Лондона.
7.1.1.11. Выдать номера изделий, для которых детали полностью поставляет поставщик S1.
7. 1.1.12. Выдать номера деталей, поставляемых для всех изделий в Лондон.
7.1.1.13. Выдать номера поставщиков, поставляющих одну и ту же деталь для всех изделий.
7.1.1.14. Выдать номера изделий, для которых поставляются по крайней мере все детали, имеющиеся у поставщика S1.
Для следующих четырех упражнений преобразуйте приведенное предложение SELECT языка SQL обратно в его эквивалент на естественном языке.
7.1.1.15.
SELECT DISTINCT НОМЕР_ИЗДЕЛИЯ FROM SPJ SPJX WHERE NOT EXISTS (SELECT * FROM SPJ SPJY
WHERE SPJY.НОМЕР_ИЗДЕЛИЯ=SPJX. НОМЕР_ИЗДЕЛИЯ AND NOT EXISTS (SELECT * FROM SPJ SPJZ WHERE SPJZ. НОМЕР_ДЕТАЛИ = SPJY.НОМЕР–ДЕТАЛИ AND SPJZ.НОМЕР_ПОСТАВЩИКА='S1'));
7.1.1.16.
DISTINCT НОМЕР_ИЗДЕЛИЯ FROM SPJ SPJX WHERE NOT EXISTS (SELECT * FROM SPJ SPJY WHERE EXISTS (SELECT * FROM SPJ SPJX WHERE SPJ А. НОМЕР_ПОСТАВЩИКА = 'S1' AND SPJ А. НОМЕР_ДЕТАЛИ = SPJY.НОМЕР_ДЕТАЛИ) AND NOT EXISTS (SELECT * FROM SPJ SPJB WHERE SPJB. НОМЕР_ПОСТАВЩИКА='S1' AND SPJB. НОМЕР_ДETAЛИ=SPJY.НОМЕР_ДЕТАЛИ AND SPJB.НОМЕР_ИЗДEЛИЯ=SPJX..НОМЕР_ИЗДЕЛИЯ));
7.1.1.17.
SELECT DISTINCT НОМЕР_ИЗДЕЛИЯ FROM SPJ SPJX WHERE NOT EXISTS (SELECT * FROM SPJ SPJY WHERE EXISTS (SELECT * FROM SPJ SPJA WHERE SPJA. НОМЕР_ДЕТАЛИ = SPJY.НОМЕР_ДЕТАЛИ AND SPJA. НОМЕР_ИЗДЕЛИЯ = SPJX.НОМЕР_ИЗДЕЛИЯ) AND NOT EXISTS (SELECT * FROM SPJ SPJB WHERE SPJB. НОМЕР_ПОСТАВЩИКА= 'S1' AND SPJB. НОМЕР_ДЕТАЛИ = SPJY.НОМЕР_ДЕТАЛИ AND SPJB.НОМЕР_ИЗДЕЛИЯ=SPJX.НОМЕР_ИЗДЕЛИЯ));
7.1.1.18.
SELECT DISTINCT НОМЕР_ИЗДЕЛИЯ FROM SPJ SPJX WHERE NOT EXISTS (SELECT * FROM SPJ SPJY WHERE EXISTS (SELECT * FROM SPJ SPJA WHERE SPJA. НОМЕР_ПОСТАВЩИКА =PJY. НОМЕР_ПОСТАВЩИКА AND SPJA. НОМЕР_ДЕТАЛИ IN (SELECT НОМЕР_ДЕТАЛИ ROM P WHERE ЦВЕТ = 'Красный') AND NOT EXISTS (SELECT * FROM SPJ SPJB WHERE SPJB. НОМЕР_ПОСТАВЩИКА = SPJY. НОМЕР_ПОСТАВЩИКА AND SPJB. НОМЕР_ИЗДЕЛИЯ = SPJX. НОМЕР_ИЗДЕЛИЯ)));
Стандартные функции
7.1.1.19. Выдать общее число изделий, для которых поставляет детали поставщик S1.
7.1.1.20. Выдать общее количество деталей Р1, поставляемых поставщиком S1.
7.1.1.21. Для каждой поставляемой для некоторого изделия детали выдать ее номер, номер изделия и соответствующее общее количество деталей.
7.1.1.22. Выдать номера изделий, для которых город является первым в алфавитном списке таких городов.
7.1.1.23. Выдать номера изделий, для которых средний объем поставки деталей Р1 больше наибольшего объема поставки любой детали для изделия J 1.
7.1.1.24. Выдать номера поставщиков, поставляющих деталь Р1 для какого-либо изделия в количестве, большем среднего объема поставок детали Р1 для этого изделия.
Объединение
7.1.1.25. Постройте упорядоченный список всех городов, в которых размещаются по крайней мере один поставщик, деталь или изделие.
7.1.1.26. Приведите результат следующего предложения SELECT:
SELECT P.ЦВЕТ FROM P UNION SELECT P. ЦВЕТ FROM P;
Ответы к некоторым упражнениям
Следующие ответы не обязательно являются единственно возможными.
7.1.1.1.
SELECT НАЗВАНИЕ FROM J WHERE НОМЕР_ИЗДЕЛИЯ IN (SELECT НОМЕР_ИЗДЕЛИЯ FROM SPJ WHERE НОМЕР_ПОСТАВЩИКА =’S1’);
7.1.1.2.
SELECT DISTINCT ЦВЕТ FROM P WHERE НОМЕР_ДЕТАЛИ IN (SELECT НОМЕР_ДЕТАЛИ FROM SPJ WHERE НОМЕР_ПОСТАВЩИКА='Sl');
7.3.
SELECT DISTINCT Н ОМЕР_ДЕТАЛИ FROM SPJ WHERE НОМЕР_ИЗДЕЛИЯ IN (SELECT НОМЕР_ИЗДЕЛИЯ FROM J WHERE ГОРОД = 'Лондон');
7.1.1.4.
SELECT DISTINCT НОМЕР_ИЗДЕЛИЯ FROM SPJ WHERE НОМЕР_ДЕТАЛИ IN (SELECT НОМЕР_ДЕТАЛИ FROM SPJ WHERE НОМЕР_ПОСТАВЩИКА='Sl');
7.1.1.5.
SELECT DISTINCT НОМЕР_ПОСТАВЩИКА FROM SPJ WHERE НОМЕР–ДЕТАЛИ IN (SELECT НОМЕР_ДЕТАЛИ FROM SPJ WHERE НОМЕР_ПОСТАВЩИКА IN (SELECT НОМЕР_ПОСТАВЩИКА FROM SPJ WHERE НОМЕР_ДЕТАЛИ IN (SELECT НОМЕР–ДЕТАЛИ FROM Р WHERE ЦВЕТ = 'Красный')));
7.1.1.6.
SELECT НОМЕР–ПОСТАВЩИКА FROM S WHERE СОСТОЯНИЕ <
(SELECT СОСТОЯНИЕ FROM S WHERE НОМЕР_ПОСТАВЩИКА = 'Sl');
7.1.1.7.
SELECT DISTINCT НОМЕР_ПОСТАВЩИКА FROM SPJ SPJX WHERE НОМЕР_ДЕТАЛИ = 'Р1’ КОЛИЧЕСТВО > (SELECT AVG (КОЛИЧЕСТВО) FROM SPJ SPJY WHERE НОМЕР_ДЕТАЛИ = 'Р1'
AND SPJY.НОМЕР_ИЗДЕЛИЯ=SPJX.НОМЕР_ИЗДЕЛИЯ);
7.8
SELECT DISTINCT НОМЕР_ДЕТАЛИ FROM SPJ WHERE EXISTS (SELECT * FROM J WHERE НОМЕР_ИЗДЕЛИЯ = SPJ. НОМЕР–ИЗДЕЛИЯ AND ГОРОД = 'ЛОНДОН');
7.9.
SELECT DISTINCT SPJX. HOMEP_ИЗДЕЛИЯ FROM SPJ SPJX WHERE EXISTS (SELECT * FROM SPJ SPJY WHERE SPJY. HOMEP_ДЕТАЛИ=SPJX. HOMEP_ДЕТАЛИ AND SPJY. НОМЕР_ПОСТАВЩИКА = 'Sl');
7.1.1.10.
SELECT НОМЕР_ИЗДЕЛИЯ FROM J WHERE NOT EXISTS (SELECT * FROM SPJ WHERE НОМЕР_ИЗДЕЛИЯ = J. НОМЕР_ИЗДЕЛИЯ AND НОМЕР_ДЕТАЛИ IN (SELECT НОМЕР_ДЕТАЛИ FROM P WHERE ЦВЕТ = 'Красный') AND НОМЕР_ПОСТАВЩИКА IN (SELECT НОМЕР_ПОСТАВЩИКА FROM S WHERE ГОРОД = 'Лондон'));
7.1.1.11.
SELECT НОМЕР_ИЗДЕЛИЯ J FROM SPJ SPJX WHERE NOT EXISTS (SELECT * FROM SPJ SPJY WHERE SPJY. НОМЕР_ИЗДЕЛИЯ =SPJX. НОМЕР_ИЗДЕЛИЯ AND SPJY. НОМЕР_ПОСТАВЩИКА<> ‘S1’);
7.1.1.12.
SELECT DISTINCT НОМЕР_ДЕТАЛИ FROM SPJ SPJX WHERE NOT EXISTS (SELECT * FROM J WHERE ГОРОД == 'Лондон');
7.1.1.13.
SELECT DISTINCT НОМЕР_ПОСТАВЩИКА FROM SPJ SPJX WHERE EXISTS
(SELECT НОМЕР_ДЕТАЛИ FROM P WHERE NOT EXISTS (SELECT НОМЕР_ИЗДЕЛИЯ FROM J WHERE NOT EXISTS (SELECT * FROM SPJ SPJZ WHERE SPJZ. НОМЕР_ПОСТАВЩИКА =
SPJX. HOMEP_ ПОСТАВЩИКА AND SPJZ. НОМЕР_ДЕТАЛИ = P. НОМЕР_ДЕТАЛИ AND SPJZ. НОМЕР_ИЗДЕЛИЯ= J. НОМЕР_ИЗДЕЛИЯ)));
7.1.1.14
SELECT DISTINCT НОМЕР_ИЗДЕЛИЯ FROM SPJ SPJX WHERE NOT EXISTS (SELECT НОМЕР_ДЕТАЛИ FROM SPJ SPJY WHERE SPJY. НОМЕР–ПОСТАВЩИКА = 'Sl' AND NOT EXISTS (SELECT * FROM SPJ SPJZ WHERE SPJZ. НОМЕР_ДЕТАЛИ = SPJY.НОМЕР_ДЕТАЛИ AND SPJZ. НОМЕР_ИЗДЕЛИЯ = SPJX.НОМЕР_ИЗДЕЛИЯ));
7.1.1.15. Выдать номера изделий, использующих только детали, поставляемые поставщиком S1.
7.1.1.16. Выдать номера изделий, для которых поставщик S1 поставляет несколько деталей каждого из поставляемых им типов.
7.1.1.17. Выдать номера деталей, таких, что по крайней мере несколько деталей каждого типа, которые в них используются, поставляется для них поставщиком S1.
7.1.1.18. Выдать номера изделий, детали для которых поставляет каждый поставщик, поставляющий какую-либо красную деталь.
7.1.1.19.
SELECT COUNT (DISTINCT НОМЕР–ИЗДЕЛИЯ) FROM SPJ WHERE НОМЕР_ПОСТАВЩИКА == 'S1';
7.1.1.20.
SELECT SUM (КОЛИЧЕСТВО) FROM SPJ WHERE НОМЕР_ДЕТАЛИ = 'P1’AND НОМЕР_ПОСТАВ ЩИКА = 'S1';
7.1.1.21.
SELECT НОМЕР_ДЕТАЛИ, НОМЕР_ИЗДЕЛИЯ, SUM (КОЛИЧЕСТВО) FROM SPJ GROUP BY НОМЕР_ДЕТАЛИ, НОМЕР_ИЗДЕЛИЯ;
7.1.1.22.
SELECT НОМЕР_ИЗДЕЛИЯ FROM J
WHERE ГОРОД =(SELECT MIN (ГОРОД) FROM J);
7.1.1.23.
SELECT НОМЕР_ИЗДЕЛИЯ FROM SPJ WHERE НОМЕР_ДЕТАЛИ = 'PI' GROUP BY НОМЕР_ИЗДЕЛИЯ HAVING AVG (КОЛИЧЕСТВО) > (SELECT MAX (КОЛИЧЕСТВО) FROM SPJ WHERE НОМЕР_ ИЗДЕЛИЯ = 'J1');
7.1.1.24.
SELECT DISTINCT НОМЕР_ПОСТАВЩИКА FROM SPJ SPJX WHERE НОМЕР_ДЕТАЛИ = 'PI' AND КОЛИЧЕСТВО > (SELECT AVG (КОЛИЧЕСТВО) FROM SPJ SPJY WHERE НОМЕР_ДЕТАЛИ ='Р1’
AND SPJY.НОМЕР_ИЗДЕЛИЯ=SPJX.НОМЕР_ИЗДЕЛИЯ);
7.1.1.25.
SELECT ГОРОД FROM S UNION
SELECT ГОРОД FROM P UNION SELECT ГОРОД FROM J ORDER BY 1;
7.1.1.26. Список наименований цветов деталей без повторения.
