Спецкурс "Современные практики разработки ПО",...

Post on 08-Jul-2015

120 Views

Category:

Education

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Базы данных (продолжение)

Спецкурс. Занятие 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. хорошие лекции по БД

Подзапросы

top related