Click here to load reader
Upload
7bits
View
113
Download
1
Embed Size (px)
Citation preview
Базы данных (продолжение)
Спецкурс. Занятие 9
Соединение таблиц –получение декартова произведения таблиц, ограниченного условием соединения
Соединения
Пример:
select *from Group g, Department dwhere g.department_id = d.id;
1, ММ-01, 1, ИМИТ2, ФФ-01-О, 2, Физический3, МП-01, 1, ИМИТ
Соединения
Алгоритмы соединения таблиц:1. вложенными циклами (nested loops) – самый универсальный2. хэшированием3. слиянием сортированных списков
Соединения
Виды соединений:
1. внутреннее – inner join2. внешнее – outer join2.1 левое – left join2.1 правое – right join2.3 полное – full join
3. перекрестное – cross join (то же, что ‘,’ в примере выше)
Соединения
Пример:
select c.namefrom Student s right join Chair c
on s.chair_id = c.idwhere s.chair_id is null;
При отсутствии нужной строки в таблице «Студент», на ее месте будет кортеж из null
Соединения
Подзапрос:вложенный запрос в другом запросе, может быть внутри любого DML-оператора
Подзапросы
Результат подзапроса в whereиспользуется:1. в операциях сравнения (скаляр)2. принадлежность/не принадлежность кортежа множеству – in/not in3. непустота/пустота множества –exists/not exists
Подзапросы
Пример:
select c.namefrom Chair cwhere not exists (
select nullfrom Student swhere s.chair_id = c.id
);
Подзапросы
Операции с результатами запросов:1. distinct – исключение повторов2. union [all] - объединение3. intersect – пересечение4. except – исключение строк 2-го множества из 1-го
Подзапросы
Для дальнейшего изучения:1. хорошие упражнения по SQL2. хорошие лекции по БД
Подзапросы