Язык SQL Вложенные запросы и внешние объединения.

Презентация:



Advertisements
Похожие презентации
Язык SQL Операторы манипулирования данными. Операции манипулирования данными DELETE операция удаления записей INSERT операция добавления или ввода новых.
Advertisements

СУБД 5. SQL для выборки данных. 2 SELECT Обработка элементов оператора SELECT выполняется в следующей последовательности: FROM – определяются имена используемых.
СУБД Microsoft Access 2003 Элементы языка SQL. Язык SQL SQL (Structured Query Language) – структурированный язык запросов Язык SQL применяется во многих.
Объединение таблиц Подзапросы. Оператор SELECT дает возможность выборки информации сразу из нескольких таблиц, которые перечислены в списке FROM. Такая.
Базы данных Лекция 4 Базисные средства манипулирования реляционными данными: реляционная алгебра Кодда.
СУБД 7. Использование подзапросов в языке запросов SQL.
Реляционная модель данных Определения Основные операции над отношениями (реляционная алгебра)
РЕЛЯЦИОННАЯ АЛГЕБРА. Элементы РМД и формы их представления Сущность – это объект любой природы. Данные о сущности хранятся в отношении (таблице). Атрибуты.
Определения Банк данных (БнД) это система специальным образом организованных дан­ных - баз данных, программных, технических, языковых, организационно-
Вставка INSERT INTO table (column, column,...) VALUES (expr, expr...) LOAD DATA INFILE "C:\\tmp\\file.txt" INTO TABLE table.
Выражения унарные (унарный минус) арифметические (+, -, *, /) сравнения (, =, =, , LIKE, BETWEEN...) конкатенации (||) логические (NOT, AND, OR)
Базы данных Язык запросов SQL. Команда SELECT. Команда SELECT – выборка данных Общий синтаксис: SELECT [{ ALL | DISTINCT }] { список_вывода | * } FROM.
СУБД 4. Основы проектирования баз данных. Этапы жизненного цикла базы данных 1 Этапы проектирования : 1.Системный анализ и словесное описание информационных.
Проектирование реляционных БД на основе принципов нормализации.
Презентация на тему: Ключевое слово TOP n [PERCENT] [WITH TIES]
БАЗЫ ДАННЫХ ЛЕКЦИЯ 12. тема: ОСНОВЫ ЯЗЫКА SQL Общие сведения SQL структурированный язык запросов (Structured Query Language)
Базы данных Лекция 5 Базисные средства манипулирования реляционными данными: алгебра A Дейта и Дарвена.
Реляционная алгебра – механизм манипулирования реляционными данными Все операции производятся над отношениями, и результатом операции является отношение.
1 Лекция 6 Команды категории извлечения данных языка структурированных запросов SQL План лекции Выборка определенных столбцов таблицы Устранение избыточных.
Модуль 1. Математические основы баз данных и знаний 1.
Транксрипт:

Язык SQL Вложенные запросы и внешние объединения

Обычно внутренний запрос генерирует значение, которое проверяется в предикате внешнего запроса (В предложении Where или Having) Обычно внутренний запрос генерирует значение, которое проверяется в предикате внешнего запроса (В предложении Where или Having) Допустимо, чтобы вложенный запрос использовал то же отношение, что и внешний. Допустимо, чтобы вложенный запрос использовал то же отношение, что и внешний. При этом необходимо использовать алиасы (в предложении From) При этом необходимо использовать алиасы (в предложении From) Пример FROM R1 as A, R2 as B Пример FROM R1 as A, R2 as B

Пример вложенного запроса

Использование предиката EXISTS Предикат EXISTS ( SubQuery) истинен, когда подзапрос SubQuery не пуст, то есть содержит хотя бы один кортеж, в противном случае предикат EXISTS ложен. Предикат EXISTS ( SubQuery) истинен, когда подзапрос SubQuery не пуст, то есть содержит хотя бы один кортеж, в противном случае предикат EXISTS ложен. Предикат NOT EXISTS обратно истинен только тогда, когда подзапрос SubQuery пуст. Предикат NOT EXISTS обратно истинен только тогда, когда подзапрос SubQuery пуст.

Список тех, кто должен был сдавать экзамен по ТИ, но пока еще не сдавал. Теория информации)

пример базы, которая моделирует поставку отдельных деталей отдельными поставщиками SP (Номер_поставщика. номер_детали) Р (номер_детали, наименование) SP (Номер_поставщика. номер_детали) Р (номер_детали, наименование) Найти поставщиков, которые поставляют все детали Найти поставщиков, которые поставляют все детали

Текст запроса Найти поставщиков таких, что не существует детали, которую бы они не поставляли

Другой способ сделать тот же запрос

Внешние объединения Часто необходимо объединять таблицы таким образом, чтобы в результат попали все строки из первой таблицы, а вместо тех строк второй таблицы, для которых не выполнено условие соединения, в результат попадали бы неопределенные значения. Или наоборот, включаются все строки из правой (второй) таблицы, а отсутствующие части строк из первой таблицы дополняются неопределенными значениями. Такие объединения были названы внешними Часто необходимо объединять таблицы таким образом, чтобы в результат попали все строки из первой таблицы, а вместо тех строк второй таблицы, для которых не выполнено условие соединения, в результат попадали бы неопределенные значения. Или наоборот, включаются все строки из правой (второй) таблицы, а отсутствующие части строк из первой таблицы дополняются неопределенными значениями. Такие объединения были названы внешними

синтаксис части FROM

Выражения объединения

Виды объединений INNER обычное прямое объединение INNER обычное прямое объединение LEFT левое объединение, то есть в результат входят все строки таблицы 1, а части резуль­тирующих кортежей, для которых не было соответствующих значений в таб­лице 2, дополняются значениями NULL LEFT левое объединение, то есть в результат входят все строки таблицы 1, а части резуль­тирующих кортежей, для которых не было соответствующих значений в таб­лице 2, дополняются значениями NULL

Виды объединений RIGHT означает правое внешнее объединение, и в отличие от левого объединения в этом случае в результирующее отношение включаются все строки таблицы 2, а не­достающие части из таблицы 1 дополняются неопределенными значениями RIGHT означает правое внешнее объединение, и в отличие от левого объединения в этом случае в результирующее отношение включаются все строки таблицы 2, а не­достающие части из таблицы 1 дополняются неопределенными значениями FULL определяет полное внешнее объединение: и левое и правое. При полном внешнем объединении выполняются и правое и левое внешние объеди­нения и в результирующее отношение включаются все строки из таблицы 1» до­полненные неопределенными значениями, и все строки из таблицы 2, также до­полненные неопределенными значениями FULL определяет полное внешнее объединение: и левое и правое. При полном внешнем объединении выполняются и правое и левое внешние объеди­нения и в результирующее отношение включаются все строки из таблицы 1» до­полненные неопределенными значениями, и все строки из таблицы 2, также до­полненные неопределенными значениями

Пример Создадим отношение, в котором будут стоять все оценки, полученные всеми студентами по всем экзаменам, которые они должны были сдавать. Если студент не сдавал данного экзамена, то вместо оценки у него будет стоять не­определенное значение. Для этого выполним последовательно естественное внут­реннее объединение таблиц R2 и R3 по атрибуту Группа, а полученное отношение соединим левым внешним естественным объединением с- таблицей R1, исполь­зуя столбцы ФИО и Дисциплина. Создадим отношение, в котором будут стоять все оценки, полученные всеми студентами по всем экзаменам, которые они должны были сдавать. Если студент не сдавал данного экзамена, то вместо оценки у него будет стоять не­определенное значение. Для этого выполним последовательно естественное внут­реннее объединение таблиц R2 и R3 по атрибуту Группа, а полученное отношение соединим левым внешним естественным объединением с- таблицей R1, исполь­зуя столбцы ФИО и Дисциплина. SELECT R1.ФИО. R1.Дисциплина, R1.Оценка FROM (R2 NATURAL INNER JOIN R3 ) LEFT JOIN Rl USING ( ФИО. Дисциплина)

Результат запроса

Пример БД Библиотека

Reader Таблица READER хранит сведения обо всех читателях библиотеки, и она содержит следующие атрибуты: Таблица READER хранит сведения обо всех читателях библиотеки, и она содержит следующие атрибуты: NUM_READER уникальный номер читательского билета; NUM_READER уникальный номер читательского билета; NAME_READER фамилию и инициалы читателя; NAME_READER фамилию и инициалы читателя; ADRESS адрес читателя; ADRESS адрес читателя; HOOM_PHONE номер домашнего телефона; HOOM_PHONE номер домашнего телефона; WORK_PHONE номер рабочего телефона; WORK_PHONE номер рабочего телефона; BIRTHDAY дату рождения читателя. BIRTHDAY дату рождения читателя.

EXEMPLARE Таблица EXEMPLARE содержит сведения о текущем состоянии всех экземпля­ров всех книг. Она включает в себя следующие столбцы: Таблица EXEMPLARE содержит сведения о текущем состоянии всех экземпля­ров всех книг. Она включает в себя следующие столбцы: INV уникальный инвентарный номер экземпляра книги; a ISBN - шифр книги, который определяет, какая это книга, и ссылается на сведения из первой таблицы; INV уникальный инвентарный номер экземпляра книги; a ISBN - шифр книги, который определяет, какая это книга, и ссылается на сведения из первой таблицы; YES_NO - признак наличия или отсутствия в библиотеке данного экземпляра в текущий момент; YES_NO - признак наличия или отсутствия в библиотеке данного экземпляра в текущий момент; NUMREADER номер читательского билета, если книга выдана читателю, и Null в противном случае; NUMREADER номер читательского билета, если книга выдана читателю, и Null в противном случае; DATEIN если книга у читателя, то это дата, когда она выдана читателю; DATEIN если книга у читателя, то это дата, когда она выдана читателю; DATEOUT дата, когда читатель должен вернуть книгу в библиотеку. DATEOUT дата, когда читатель должен вернуть книгу в библиотеку.

Пример 1 Определим перечень книг у каждого читателя; если у читателя пет книг, то номер экземпляра книги равен NULL. Определим перечень книг у каждого читателя; если у читателя пет книг, то номер экземпляра книги равен NULL. Для этого берем все строки из таблицы READER и соединяем со строками из таблицы EXEMPLARE

Пример 2 При этом для книг, ни один экземпляр которых не находится на руках у читателей, значения номера читательского билета и дат взятия и возврата книги будут неопределенными.

Перекрестное объединение Перекрестное объединение в трактовке стандарта SQL2 соответствует операции расширенного декартова произведения, то есть операции соединения двух таблиц, при которой каждая строка первой таблицы соединяется с каждой строкой второй таблицы. Перекрестное объединение в трактовке стандарта SQL2 соответствует операции расширенного декартова произведения, то есть операции соединения двух таблиц, при которой каждая строка первой таблицы соединяется с каждой строкой второй таблицы.

запрос на объединение Операция запроса па объединение эквивалентна операции теоретико- множест­венного объединения в алгебре. При этом требование эквивалентности схем ис­ходных отношений сохраняется. Запрос на объединение выполняется по сле­ дующей схеме: Операция запроса па объединение эквивалентна операции теоретико- множест­венного объединения в алгебре. При этом требование эквивалентности схем ис­ходных отношений сохраняется. Запрос на объединение выполняется по сле­ дующей схеме:

Читатели, имеющие на руках книги «идиот» и «преступление и наказание»

Упорядочивание при объединении Ни один из исходных запросов в операции UNION не должен содержать предло­жения упорядочения результата ORDER BY, однако результат объединения может быть упорядочен, для этого предложение ORDER BY с указанием списка столбцов упорядочения записывается после текста последнего исходного SELECT-запроса. Ни один из исходных запросов в операции UNION не должен содержать предло­жения упорядочения результата ORDER BY, однако результат объединения может быть упорядочен, для этого предложение ORDER BY с указанием списка столбцов упорядочения записывается после текста последнего исходного SELECT-запроса.