Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторные_задания / Лабораторная работа 4

.docx
Скачиваний:
18
Добавлен:
15.06.2014
Размер:
6.05 Кб
Скачать
    1. Лабораторная работа №9. Объединение таблиц

      1. Цель работы

Научиться использовать предложение SELECT для выборки данных из нескольких таблиц.

      1. Указания к работе

Декартово произведение n таблиц – это таблица, содержащая все возможные строки r, такие, что r является сцеплением какой-либо строки из первой таблицы, строки из второй таблицы, ... и строки из n-й таблицы. Для получения декартова произведения надо указать в предложении SELECT все столбцы таблиц, указанных в операторе FROM. Так, для получения декартова произведения таблиц goods и vendors сформируем следующий запрос:

SELECT goods.*, vendors.* FROM goods, vendors;

Получим таблицу, содержащую 5 х 8 = 40 строк и 7 + 2 = 9 столбцов.

Из полученного набора данных актуальными будут только несколько строк, а именно – те, где совпадают идентификаторы производителя (goods.vendor = vendors.code).

Изменение приведенного запроса так, чтобы получить результаты, имеющие практическую значимость, приведет к формированию эквисоединения таблиц:

SELECT goods.*, vendors.* FROM goods, vendors WHERE goods.vendor = vendors.code

Легко заметить, что эквисоединение дает некоторую избыточность выборки - в результат запроса попадут дубликаты столбцов, по которым производилось объединение. Исключение подобной избыточности дает естественное соединение таблиц, реализуемое, в нашем примере, таким запросом:

SELECT goods.code, goods.name, goods.coast, goods.count, vendors.code, vendors.vendor, goods.description FROM goods, vendors WHERE goods.vendor = vendors.code;

Последним типом соединения является композиция таблиц, которая может быть получена из предыдущего запроса путем полного исключения столбцов, по которым производилось связывание. Т.е., запрос примет такой вид:

SELECT goods.code, goods.name, goods.coast, goods.count, vendors.vendor, goods.description FROM goods, vendors WHERE goods.vendor = vendors.code;

      1. Задания к лабораторной работе

Выполнить по 2-4 запроса (каждого из рассмотренных выше видов) к созданным в предыдущих работах таблицам.

ВАЖНО! В декартово произведение включайте таблицы с небольшим количеством записей для ускорения обработки и вывода результатов.