- •Общие сведения Сведения об эумк
- •Методические рекомендации по изучению дисциплины
- •Рабочая учебная программа
- •Учреждение образования
- •«Белорусский государственный университет
- •Информатики и радиоэлектроники»
- •Пояснительная записка
- •Содержание дисциплины
- •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.21. Запросы на объединение и сортировка
Предложение ORDER BY нельзя использовать ни в одной из инструкций SELECT, объединённых операцией UNION. Нет смысла выполнять сортировку результатов таких запросов, поскольку пользователь всё равно не увидит их в чистом виде. Однако объединённые результаты запросов, возвращенные операцией UNION, можно отсортировать с помощью предложения ORDER BY, следующего за второй инструкцией SELECT. Поскольку столбцы таблицы результатов запроса на объединение не имеют имён, в этом предложении следует указывать номера столбцов.
Например:
SELECT MFR_ID, PRODUCT_ID FROM PRODUCTS WHERE PRICE > 2000.00 UNION
SELECT DISTINCT MFR, PRODUCT FROM ORDERS WHERE AMOUNT > 30000.00 ORDER BY 1, 2
1.3.22. Вложенные запросы на объединение
Операцию UNION можно использовать многократно, чтобы объединить результаты трёх или более запросов так, как изображено на рисунке. В результате объединения таблиц В и С получается одна объединённая таблица. Затем, с помощью другой операции UNION, эта таблица объединяется с таблицей А. Синтаксис запроса, представленного на рисунке, имеет следующий вид:
SELECT * FROM А UNION (SELECT * FROM В UNION SELECT * FROM C)
Рисунок 1.3.22.1 – Объединение
Скобки в запросе показывают, какая операция UNION должна выполняться первой. Независимо от того, удаляют ли все операции UNION повторяющиеся строки или сохраняют их, порядок выполнения инструкций не имеет значения. Следующие выражения полностью эквивалентны:
A UNION (В UNION С)
(A UNION В) UNION С
(A UNION С) UNION В
Однако если в запросы на объединения входят как операции UNION, так и операции UNION ALL, то порядок следования этих инструкций имеет значение. По этой причине всегда необходимо использовать круглые скобки, чтобы указать последовательность выполнения в запросах на объединение, содержащих три или более операций UNION.
1.3.23. Многотабличные запросы на выборку
Пример двухтабличного запроса
Чтобы понять, как в SQL реализуются многотабличные запросы, лучше всего начать с рассмотрения простого запроса, который объединяет данные из двух различных таблиц: вывести список всех заказов, включая номер и стоимость заказа, а также имя и лимит кредита клиента, сделавшего заказ.
Из рисунка видно, что четыре запрашиваемых элемента данных хранятся в двух различных таблицах:
В таблице ORDERS содержится номер и стоимость каждого заказа, но в ней отсутствуют имена клиентов и лимиты предоставленных им кредитов.
В таблице CUSTOMERS содержатся имена клиентов и данные о состоянии их счетов, но в ней нет информации о заказах
Рисунок 1.3.23.1 – Двухтабличный запрос
Однако между двумя этими таблицами существует связь. В каждой строке столбца CUST таблицы ORDERS содержится идентификатор клиента, сделавшего заказ, соответствующий значению одной из строк столбца CUST_NUM таблицы CUSTOMERS.
Существует много способов получить результаты данного запроса, но как бы вы их ни получали, всегда будут справедливы две вещи:
Каждая строка таблицы результатов запроса формируется из пары строк: одна строка находится в таблице ORDERS, а другая - в таблице CUSTOMERS.
Для нахождения данной пары строк производится сравнение содержимого соответствующих столбцов в этих таблицах.
Простое объединение таблиц (объединение по равенству)
Процесс формирования пар строк путём сравнения содержимого соответствующих столбцов называется объединением таблиц. Таблица, получающаяся в результате формирования пар строк и содержащая данные из обеих таблиц, называется объединением двух таблиц. Объединение на основе точного равенства между двумя столбцами более правильно называется объединением по равенству. Объединения могут быть основаны на других видах сравнения столбцов (рассмотрены ниже).
Объединения представляют собой основу многотабличных запросов в SQL. В реляционной базе данных вся информация хранится в виде явных значений данных в столбцах, так что все возможные отношения между таблицами можно сформировать, сопоставляя содержимое соответствующих столбцов. Таким образом, объединения являются мощным (и, к тому же, единственным, ввиду отсутствия указателей) средством выявления отношений, существующих между данными.
Так как в SQL многотабличные запросы выполняются путём сопоставления столбцов, инструкция SELECT для многотабличного запроса должна содержать условие отбора, которое определяет взаимосвязь между столбцами. Мы будем называть эти столбцы связанными. Данное условие отбора, как и любое другое, уменьшает число строк в таблице результатов запроса. А поскольку запрос двухтабличный, условие отбора на самом деле уменьшает число пар строк в таблице результатов.
Обратите внимание: в инструкции SELECT ничего не говорится о том, как должен выполняться запрос SQL. Там нет никаких упоминаний вроде "начните с заказов" или "начните с клиентов". Вместо этого в запросе сообщается, что должны представлять собой результаты запроса, а способ их получения оставлен на усмотрение СУБД.