- •Общие сведения Сведения об эумк
- •Методические рекомендации по изучению дисциплины
- •Рабочая учебная программа
- •Учреждение образования
- •«Белорусский государственный университет
- •Информатики и радиоэлектроники»
- •Пояснительная записка
- •Содержание дисциплины
- •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.25. Запросы на выборку к трём и более таблицам
SQL позволяет объединять данные из трёх или более таблиц, используя ту же самую методику, что и для объединения данных из двух таблиц. Вот простой пример объединения трёх таблиц. Вывести список заказов стоимостью выше $25000, включая имя служащего, принявшего заказ, и имя клиента, сделавшего его:
SELECT ORDER_NUM, AMOUNT, COMPANY, NAME FROM ORDERS, CUSTOMERS, SALESREPS WHERE CUST = CUST_NUM AND REP = EMPL_NUM AND AMOUNT > 25000.00
Как видно из рисунка, в этом запросе используются два внешних ключа таблицы ORDERS. Столбец CUST является внешним ключом для таблицы CUSTOMERS, он связывает каждый заказ с клиентом, сделавшим его. Столбец REP является внешним ключом для таблицы SALESREPS, связывая каждый заказ со служащим, принявшим его. Проще говоря, запрос связывает каждый заказ с соответствующим клиентом и служащим.
Рисунок 1.3.25.1 – Пример запроса
А вот ещё один запрос к трём таблицам, в котором используется другая комбинация отношений предок/потомок. Вывести список заказов стоимостью выше $25000, включая имя клиента, сделавшего заказ, и имя служащего, закреплённого за этим клиентом:
SELECT ORDER_NUM, AMOUNT, COMPANY, NAME FROM ORDERS, CUSTOMERS, SALESREPS WHERE CUST = CUST_NUM AND CUST_REP = EMPL_NUM AND AMOUNT > 25000.00
Прочие объединения таблиц по равенству
Огромное множество многотабличных запросов основано на отношениях предок/потомок, но в SQL не требуется, чтобы связанные столбцы представляли собой пару "внешний ключ - первичный ключ". Любые два столбца из двух таблиц могут быть связанными, если только они имеют сравнимые типы данных. Вот пример запроса, в котором связанными являются столбцы с датами.
Найти все заказы, полученные в тот день, когда на работу был принят новый служащий:
SELECT ORDER_NUM, AMOUNT, ORDEREDATE, NAME FROM ORDERS, SALESREPS WHERE ORDER_DATE = HIRE DATE
Результатами запроса являются пары строк из таблиц ORDERS и SALESREPS, имеющие одинаковые значения в столбцах ORDER_DATE и HIRE_DATE. Эти столбцы не являются ни внешним ключом, ни первичным ключом, да и вообще отношение между этими парами строк, надо признать, довольно странное: общее у заказов и служащих только то, что они появились в компании в один день. Тем не менее, СУБД с готовностью объединяет таблицы в соответствии с запросом.
Фактически, связанные столбцы, подобные приведённым в данном примере, создают между двумя таблицами отношение "многие-ко-многим". Может поступить много заказов в день приёма на работу какого-нибудь служащего, а также в день получения какого-нибудь заказа на работу может быть принято несколько служащих.
1.3.26. Объединение таблиц по неравенству
Термин "объединение" применяется к любому запросу, который объединяет данные из двух таблиц базы данных путем сравнения значений в двух столбцах этих таблиц. Самыми распространёнными являются объединения, созданные на основе равенства связанных столбцов (объединения по равенству). Кроме того, SQL позволяет объединять таблицы с помощью других операций сравнения. В приведённом ниже примере для объединения таблиц используется операция сравнения "больше чем" (>).
Получить все комбинации служащих и офисов, где плановый объём продаж служащего больше, чем план какого-либо офиса:
SELECT NAME, QUOTA, CITY, TARGET FROM SALESREPS, OFFICES WHERE QUOTA > TARGET
Как и во всех запросах к двум таблицам, каждая строка результатов запроса получается из пары строк, в данном случае содержащихся в таблицах SALESREPS и OFFICES.
Условие QUOTA > TARGET отбирает пары строк, в которых значение столбца QUOTA из таблицы SALESREPS превышает значение столбца TARGET из таблицы OFFICES.
Обратите внимание: выбранные из таблиц SALESREPS и OFFICES пары строк связаны только таким образом; в частности, не требуется, чтобы строка таблицы SALESREPS представляла служащего, который работает в офисе, представленном строкой таблицы OFFICES. Следует признать, что данный пример носит несколько искусственный характер и является иллюстрацией того, почему столь мало распространены объединения по неравенству. Однако они могут оказаться полезными в приложениях, предназначенных для поддержки принятия решений, и в других приложениях, исследующих более сложные взаимосвязи в базе данных.