- •Общие сведения Сведения об эумк
- •Методические рекомендации по изучению дисциплины
- •Рабочая учебная программа
- •Учреждение образования
- •«Белорусский государственный университет
- •Информатики и радиоэлектроники»
- •Пояснительная записка
- •Содержание дисциплины
- •1. Название тем лекционных занятий, их содержание, объем в часах.
- •2 Перечень тем ипр их наименование и объем в часах
- •3 Перечень тем контрольных работ их наименование и объем в часах
- •4. Курсовая работа, ее характеристика
- •Перечень тем курсовых работ
- •5. Литература
- •5.1 Основная
- •5.2 Дополнительная
- •6. Перечень компьютерных программ, наглядных и других пособий, методических указаний и материалов и технических средств обучения
- •7. Учебно-методическая карта дисциплины
- •1.1.2. Классификация субд
- •1.2. Субд начального уровня – MySql
- •1.2.1. Введение в MySql
- •1.2.2. Подготовка к работе с MySql
- •1.2.3. Создание базы данных, основы работы с таблицами MySql
- •1.2.4. Типы данных столбцов MySql
- •1.2.5. Работа с таблицами MySql
- •1.2.6. Логические операторы MySql
- •1.2.7. Команды обработки данных MySql
- •1.2.8. Математические функции MySql
- •1.2.9. Работа с датой и временем в MySql
- •1.2.10. Работа со строками в MySql
- •1.2.11. Дополнительные функции MySql
- •1.3. Субд корпоративного уровня – ms sql Server
- •1.3.1. Общая теория запросов sql
- •1.3.2. Имена в sql
- •1.3.3. Типы данных
- •1.3.4. Константы
- •1.3.5. Выражения
- •1.3.6. Встроенные функции
- •1.3.7. Отсутствующие значения (значения null)
- •1.3.8. Простые запросы sql на выборку данных
- •1.3.9. Предложение select
- •1.3.10. Предложение from
- •1.3.11. Вычисляемые столбцы
- •1.3.12. Выборка всех столбцов (инструкция select *)
- •1.3.13. Повторяющиеся строки (предикат distinct)
- •1.3.14. Отбор строк (предложение where)
- •1.3.15. Условия отбора
- •1.3.16. Составные условия отбора (операторы and, or и not)
- •1.3.17. Сортировка результатов запроса (предложение order by)
- •1.3.18. Правила выполнения однотабличных запросов
- •1.3.19. Сложные запросы
- •1.3.20. Запросы на объединение и повторяющиеся строки
- •1.3.21. Запросы на объединение и сортировка
- •1.3.22. Вложенные запросы на объединение
- •1.3.23. Многотабличные запросы на выборку
- •1.3.24. Запросы с использованием отношения предок/потомок
- •1.3.25. Запросы на выборку к трём и более таблицам
- •1.3.26. Объединение таблиц по неравенству
- •1.3.27. Особенности многотабличных запросов
- •1.3.28. Самообъединения
- •1.3.29. Производительность при обработке многотабличных запросов
- •1.3.30. Умножение таблиц
- •1.3.31. Правила выполнения многотабличных запросов на выборку
- •1.3.32. Внешнее объединение таблиц
- •1.3.33. Левое и правое внешние объединения
- •1.4. Способы взаимодействия программных средств в субд
- •1.4.1. Доступ к базе данных на стороне сервера
- •1.4.2. Доступ к базе данных на стороне клиента
- •1.5. Современные тенденции развития субд
- •1.5.1. Введение
- •1.5.2. Как предсказать тенденции развития субд
- •1.5.3. Эволюционный подход
- •1.5.4. Тенденции развития
- •1. Виртуализация ресурсов и grid-технологии
- •2. Встраивание Information Life Cycle Management (ilm) в субд
- •3. Самоуправление, самодиагностика, самолечение
- •4. Real Application Testing – механизмы промышленного тестирования версий и изменений
- •5. Совершенствование архитектур максимальной доступности
- •6. Включение измерения времени в субд
- •7. Поддержка новых типов данных (xml, rfid, Semantic Web, геном, медицина, быстрые lob и т.Д.)
- •8. Умные механизмы сжатия и дедублирования
- •9. Совершенствование методов защиты данных
- •11. Облачные вычисления (Cloud computing)
- •12. Машины баз данных
- •2.1.2. Администрирование ms sql Server
- •2.2. Повышение надёжности баз данных
- •2.2.1. Обеспечение сохранности данных в MySql
- •2.2.2. Обеспечеие сохранности данных в ms sql Server
- •2.3. Повышение производительности баз данных
- •2.3.1. Повышение производительности MySql
- •2.3.2. Повышение производительности ms sql Server
- •2.4. Повышение безопасности бд
- •2.4.1. Безопасность MySql
- •2.4.2. Безопасность ms sql Server
- •2.5. Модернизация бд в процессе эксплуатации
- •2.5.1. Расширение возможностей MySql
- •2.5.2. Распределённые базы данных
- •Указания по выбору варианта
- •Курсовое проектирование Методические указания по выполнению
- •Цель проектирования
- •Теоретические положения Основные понятия баз данных
- •Этапы проектирования базы данных
- •Модели данных
- •Нормальные формы отношений
- •Задания к выполнению курсового проекта
- •Указания по выбору варианта
- •Правила оформления выполненных заданий
- •Пример проектирования базы данных
1.3.19. Сложные запросы
Объединение результатов нескольких запросов (операция UNION)
Иногда появляется необходимость объединения результатов двух или более запросов в одну таблицу. SQL поддерживает такую возможность с помощью операции UNION.
Рисунок иллюстрирует использование операции UNION для выполнения следующего запроса на объединение: вывести за один раз список всех товаров, цена которых превышает $2000 или которых было заказано более чем на $30000.
Рисунок 1.3.19.1 – Сложный запрос
Первой части основного запроса удовлетворяет запрос, изображенный в верхней части рисунка:
SELECT MFR_ID, PR0DUCT_ID FROM PRODUCTS WHERE PRICE > 2000.00
Подобным же образом вторую часть основного запроса можно выполнить с помощью запроса, изображенного в нижней части рисунка:
SELECT DISTINCT MFR, PRODUCT FROM ORDERS WHERE AMOUNT > 30000.00
Чтобы таблицы результатов запроса можно было объединить с помощью операции UNION, они должны соответствовать следующим требованиям:
две таблицы должны содержать одинаковое число столбцов;
тип данных каждого столбца первой таблицы должен совпадать с типом данных соответствующего столбца во второй таблице;
ни одна из двух таблиц не может быть отсортирована с помощью предложения ORDER BY; однако объединённые результаты запроса можно отсортировать.
Обратите внимание на то, что имена столбцов в двух запросах, объединённых с помощью операции UNION, не обязательно должны быть одинаковыми. В предыдущем примере в первой таблице результатов запроса имеются столбцы с именами MFR_ID и PRODUCT_ID, в то время как во второй таблице результатов запроса соответствующие им столбцы имеют имена MFR и PRODUCT. Поскольку столбцы в двух таблицах могут иметь различные имена, столбцы результатов запроса, возвращенные операцией UNION, являются безымянными.
Стандарт ANSI/ISO накладывает дополнительные ограничения на инструкции SELECT, участвующие в операции UNION. Он разрешает использовать в списке возвращаемых столбцов только имена столбцов или указатель на все столбцы (SELECT *) и запрещает использовать выражения. В большинстве СУБД, тем не менее, это ограничение ослаблено, и в списке возвращаемых столбцов разрешено использовать простые выражения. Однако во многих СУБД не разрешается включать в инструкции SELECT предложения GROUP BY или HAVING, а в некоторых не разрешается использовать в списке возвращаемых столбцов статистические функции. Более того, есть СУБД, не поддерживающие саму операцию UNION.
1.3.20. Запросы на объединение и повторяющиеся строки
Поскольку операция UNION объединяет строки из двух результатов запросов, вполне вероятно, что в полученной таблице будут содержаться повторяющиеся строки. По умолчанию операция UNION в процессе своего выполнения удаляет повторяющиеся строки.
Если в таблице результатов операции UNION необходимо сохранить повторяющиеся строки, сразу за ключевым словом UNION следует указать предикат ALL. Эта форма запроса вернёт таблицу с повторяющимися строками.
Обратите внимание на то, что обработка повторяющихся строк в операции UNION и инструкции SELECT осуществляется по-разному. Инструкция SELECT по умолчанию оставляет такие строки (SELECT ALL). Чтобы удалить их, необходимо явно указать предикат DISTINCT. Операция UNION по умолчанию удаляет повторяющиеся строки. Чтобы оставить их, следует явно задать предикат ALL.
Специалисты по работе с базами данных критиковали обработку повторяющихся строк в SQL и указывали на эту "непоследовательность" языка как на одну из проблем. Причина такой "непоследовательности" заключается в том, что в SQL в качестве установок по умолчанию выбираются наиболее часто используемые варианты: на практике большинство простых инструкций SELECT не возвращает повторяющихся строк, поэтому по умолчанию принято не удалять их, в то время как большинство операций UNION возвращает повторяющиеся строки, что нежелательно, поэтому по умолчанию такие строки удаляются. Удаление повторяющихся строк из таблицы результатов запроса занимает много времени, особенно если таблица содержит большое количество строк. Если известно, что операция UNION не возвратит повторяющихся строк, необходимо явно указать предикат ALL, тогда запрос будет выполняться быстрее.