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

32

Click here to load reader

Upload: 7bits

Post on 08-Jul-2015

113 views

Category:

Education


1 download

TRANSCRIPT

Page 1: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 09

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

Спецкурс. Занятие 9

Page 2: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 09

Соединение таблиц –получение декартова произведения таблиц, ограниченного условием соединения

Соединения

Page 3: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 09

Пример:

select *from Group g, Department dwhere g.department_id = d.id;

1, ММ-01, 1, ИМИТ2, ФФ-01-О, 2, Физический3, МП-01, 1, ИМИТ

Соединения

Page 4: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 09

Алгоритмы соединения таблиц:1. вложенными циклами (nested loops) – самый универсальный2. хэшированием3. слиянием сортированных списков

Соединения

Page 5: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 09

Виды соединений:

1. внутреннее – inner join2. внешнее – outer join2.1 левое – left join2.1 правое – right join2.3 полное – full join

3. перекрестное – cross join (то же, что ‘,’ в примере выше)

Соединения

Page 6: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 09

Пример:

select c.namefrom Student s right join Chair c

on s.chair_id = c.idwhere s.chair_id is null;

При отсутствии нужной строки в таблице «Студент», на ее месте будет кортеж из null

Соединения

Page 7: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 09

Подзапрос:вложенный запрос в другом запросе, может быть внутри любого DML-оператора

Подзапросы

Page 8: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 09

Результат подзапроса в whereиспользуется:1. в операциях сравнения (скаляр)2. принадлежность/не принадлежность кортежа множеству – in/not in3. непустота/пустота множества –exists/not exists

Подзапросы

Page 9: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 09

Пример:

select c.namefrom Chair cwhere not exists (

select nullfrom Student swhere s.chair_id = c.id

);

Подзапросы

Page 10: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 09

Операции с результатами запросов:1. distinct – исключение повторов2. union [all] - объединение3. intersect – пересечение4. except – исключение строк 2-го множества из 1-го

Подзапросы

Page 11: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 09

Для дальнейшего изучения:1. хорошие упражнения по SQL2. хорошие лекции по БД

Подзапросы