Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемДарья Сыкчина
1 Язык SQL Вложенные запросы и внешние объединения
2 Обычно внутренний запрос генерирует значение, которое проверяется в предикате внешнего запроса (В предложении Where или Having) Обычно внутренний запрос генерирует значение, которое проверяется в предикате внешнего запроса (В предложении Where или Having) Допустимо, чтобы вложенный запрос использовал то же отношение, что и внешний. Допустимо, чтобы вложенный запрос использовал то же отношение, что и внешний. При этом необходимо использовать алиасы (в предложении From) При этом необходимо использовать алиасы (в предложении From) Пример FROM R1 as A, R2 as B Пример FROM R1 as A, R2 as B
3 Пример вложенного запроса
4 Использование предиката EXISTS Предикат EXISTS ( SubQuery) истинен, когда подзапрос SubQuery не пуст, то есть содержит хотя бы один кортеж, в противном случае предикат EXISTS ложен. Предикат EXISTS ( SubQuery) истинен, когда подзапрос SubQuery не пуст, то есть содержит хотя бы один кортеж, в противном случае предикат EXISTS ложен. Предикат NOT EXISTS обратно истинен только тогда, когда подзапрос SubQuery пуст. Предикат NOT EXISTS обратно истинен только тогда, когда подзапрос SubQuery пуст.
5 Список тех, кто должен был сдавать экзамен по ТИ, но пока еще не сдавал. Теория информации)
6 пример базы, которая моделирует поставку отдельных деталей отдельными поставщиками SP (Номер_поставщика. номер_детали) Р (номер_детали, наименование) SP (Номер_поставщика. номер_детали) Р (номер_детали, наименование) Найти поставщиков, которые поставляют все детали Найти поставщиков, которые поставляют все детали
7 Текст запроса Найти поставщиков таких, что не существует детали, которую бы они не поставляли
8 Другой способ сделать тот же запрос
9 Внешние объединения Часто необходимо объединять таблицы таким образом, чтобы в результат попали все строки из первой таблицы, а вместо тех строк второй таблицы, для которых не выполнено условие соединения, в результат попадали бы неопределенные значения. Или наоборот, включаются все строки из правой (второй) таблицы, а отсутствующие части строк из первой таблицы дополняются неопределенными значениями. Такие объединения были названы внешними Часто необходимо объединять таблицы таким образом, чтобы в результат попали все строки из первой таблицы, а вместо тех строк второй таблицы, для которых не выполнено условие соединения, в результат попадали бы неопределенные значения. Или наоборот, включаются все строки из правой (второй) таблицы, а отсутствующие части строк из первой таблицы дополняются неопределенными значениями. Такие объединения были названы внешними
10 синтаксис части FROM
11 Выражения объединения
12 Виды объединений INNER обычное прямое объединение INNER обычное прямое объединение LEFT левое объединение, то есть в результат входят все строки таблицы 1, а части результирующих кортежей, для которых не было соответствующих значений в таблице 2, дополняются значениями NULL LEFT левое объединение, то есть в результат входят все строки таблицы 1, а части результирующих кортежей, для которых не было соответствующих значений в таблице 2, дополняются значениями NULL
13 Виды объединений RIGHT означает правое внешнее объединение, и в отличие от левого объединения в этом случае в результирующее отношение включаются все строки таблицы 2, а недостающие части из таблицы 1 дополняются неопределенными значениями RIGHT означает правое внешнее объединение, и в отличие от левого объединения в этом случае в результирующее отношение включаются все строки таблицы 2, а недостающие части из таблицы 1 дополняются неопределенными значениями FULL определяет полное внешнее объединение: и левое и правое. При полном внешнем объединении выполняются и правое и левое внешние объединения и в результирующее отношение включаются все строки из таблицы 1» дополненные неопределенными значениями, и все строки из таблицы 2, также дополненные неопределенными значениями FULL определяет полное внешнее объединение: и левое и правое. При полном внешнем объединении выполняются и правое и левое внешние объединения и в результирующее отношение включаются все строки из таблицы 1» дополненные неопределенными значениями, и все строки из таблицы 2, также дополненные неопределенными значениями
14 Пример Создадим отношение, в котором будут стоять все оценки, полученные всеми студентами по всем экзаменам, которые они должны были сдавать. Если студент не сдавал данного экзамена, то вместо оценки у него будет стоять неопределенное значение. Для этого выполним последовательно естественное внутреннее объединение таблиц R2 и R3 по атрибуту Группа, а полученное отношение соединим левым внешним естественным объединением с- таблицей R1, используя столбцы ФИО и Дисциплина. Создадим отношение, в котором будут стоять все оценки, полученные всеми студентами по всем экзаменам, которые они должны были сдавать. Если студент не сдавал данного экзамена, то вместо оценки у него будет стоять неопределенное значение. Для этого выполним последовательно естественное внутреннее объединение таблиц R2 и R3 по атрибуту Группа, а полученное отношение соединим левым внешним естественным объединением с- таблицей R1, используя столбцы ФИО и Дисциплина. SELECT R1.ФИО. R1.Дисциплина, R1.Оценка FROM (R2 NATURAL INNER JOIN R3 ) LEFT JOIN Rl USING ( ФИО. Дисциплина)
15 Результат запроса
16 Пример БД Библиотека
17 Reader Таблица READER хранит сведения обо всех читателях библиотеки, и она содержит следующие атрибуты: Таблица READER хранит сведения обо всех читателях библиотеки, и она содержит следующие атрибуты: NUM_READER уникальный номер читательского билета; NUM_READER уникальный номер читательского билета; NAME_READER фамилию и инициалы читателя; NAME_READER фамилию и инициалы читателя; ADRESS адрес читателя; ADRESS адрес читателя; HOOM_PHONE номер домашнего телефона; HOOM_PHONE номер домашнего телефона; WORK_PHONE номер рабочего телефона; WORK_PHONE номер рабочего телефона; BIRTHDAY дату рождения читателя. BIRTHDAY дату рождения читателя.
18 EXEMPLARE Таблица EXEMPLARE содержит сведения о текущем состоянии всех экземпляров всех книг. Она включает в себя следующие столбцы: Таблица EXEMPLARE содержит сведения о текущем состоянии всех экземпляров всех книг. Она включает в себя следующие столбцы: INV уникальный инвентарный номер экземпляра книги; a ISBN - шифр книги, который определяет, какая это книга, и ссылается на сведения из первой таблицы; INV уникальный инвентарный номер экземпляра книги; a ISBN - шифр книги, который определяет, какая это книга, и ссылается на сведения из первой таблицы; YES_NO - признак наличия или отсутствия в библиотеке данного экземпляра в текущий момент; YES_NO - признак наличия или отсутствия в библиотеке данного экземпляра в текущий момент; NUMREADER номер читательского билета, если книга выдана читателю, и Null в противном случае; NUMREADER номер читательского билета, если книга выдана читателю, и Null в противном случае; DATEIN если книга у читателя, то это дата, когда она выдана читателю; DATEIN если книга у читателя, то это дата, когда она выдана читателю; DATEOUT дата, когда читатель должен вернуть книгу в библиотеку. DATEOUT дата, когда читатель должен вернуть книгу в библиотеку.
19 Пример 1 Определим перечень книг у каждого читателя; если у читателя пет книг, то номер экземпляра книги равен NULL. Определим перечень книг у каждого читателя; если у читателя пет книг, то номер экземпляра книги равен NULL. Для этого берем все строки из таблицы READER и соединяем со строками из таблицы EXEMPLARE
20 Пример 2 При этом для книг, ни один экземпляр которых не находится на руках у читателей, значения номера читательского билета и дат взятия и возврата книги будут неопределенными.
21 Перекрестное объединение Перекрестное объединение в трактовке стандарта SQL2 соответствует операции расширенного декартова произведения, то есть операции соединения двух таблиц, при которой каждая строка первой таблицы соединяется с каждой строкой второй таблицы. Перекрестное объединение в трактовке стандарта SQL2 соответствует операции расширенного декартова произведения, то есть операции соединения двух таблиц, при которой каждая строка первой таблицы соединяется с каждой строкой второй таблицы.
22 запрос на объединение Операция запроса па объединение эквивалентна операции теоретико- множественного объединения в алгебре. При этом требование эквивалентности схем исходных отношений сохраняется. Запрос на объединение выполняется по сле дующей схеме: Операция запроса па объединение эквивалентна операции теоретико- множественного объединения в алгебре. При этом требование эквивалентности схем исходных отношений сохраняется. Запрос на объединение выполняется по сле дующей схеме:
23 Читатели, имеющие на руках книги «идиот» и «преступление и наказание»
24 Упорядочивание при объединении Ни один из исходных запросов в операции UNION не должен содержать предложения упорядочения результата ORDER BY, однако результат объединения может быть упорядочен, для этого предложение ORDER BY с указанием списка столбцов упорядочения записывается после текста последнего исходного SELECT-запроса. Ни один из исходных запросов в операции UNION не должен содержать предложения упорядочения результата ORDER BY, однако результат объединения может быть упорядочен, для этого предложение ORDER BY с указанием списка столбцов упорядочения записывается после текста последнего исходного SELECT-запроса.
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.