ݺߣ

ݺߣShare a Scribd company logo
Базы данных (продолжение)
Разработчики. Занятие 12
Соединение таблиц –
получение декартова
произведения
таблиц, ограниченного
условием соединения
Соединения
Пример:
select *
from Group g, Department d
where g.department_id = d.id;
1, ММ-01, 1, ИМИТ
2, ФФ-01-О, 2, Физический
3, МП-01, 1, ИМИТ
Соединения
Алгоритмы соединения таблиц:
1. вложенными циклами (nested
loops) – самый универсальный
2. хэшированием
3. слиянием сортированных
списков
Соединения
Виды соединений:
1. внутреннее – inner join
2. внешнее – outer join
2.1 левое – left join
2.1 правое – right join
2.3 полное – full join
3. перекрестное – cross join (то же, что ‘,’ в
примере выше)
Соединения
Пример:
select c.name
from Student s right join Chair c
on s.chair_id = c.id
where s.chair_id is null;
При отсутствии нужной строки в таблице
«Студент», на ее месте будет кортеж из null
Соединения
Подзапрос:
вложенный запрос в другом
запросе, может быть внутри
любого DML-оператора
Подзапросы
Результат подзапроса в where
используется:
1. в операциях сравнения (скаляр)
2. принадлежность/не
принадлежность кортежа
множеству – in/not in
3. непустота/пустота множества –
exists/not exists
Подзапросы
Пример:
select c.name
from Chair c
where not exists (
select null
from Student s
where s.chair_id = c.id
);
Подзапросы
Операции с результатами
запросов:
1. distinct – исключение повторов
2. union [all] - объединение
3. intersect – пересечение
4. except – исключение строк 2-го
множества из 1-го
Подзапросы
Для дальнейшего изучения:
1. хорошие упражнения по SQL
2. хорошие лекции по БД
Подзапросы

More Related Content

Стажировка-2013, разработчики, занятие 12. Базы данных (продолжение)