Разделы презентаций


Подзапросы

Содержание

База данных, используемая в примерахЗадание на объединение: вывести все путевки туриста Иванова (ПунктНазначения, Фамилия).

Слайды и текст этой презентации

Слайд 1Подзапросы

Подзапросы

Слайд 2База данных, используемая в примерах
Задание на объединение:

вывести все путевки

туриста Иванова
(ПунктНазначения, Фамилия).

База данных, используемая в примерахЗадание на объединение: вывести все путевки туриста Иванова (ПунктНазначения, Фамилия).

Слайд 3Подзапрос – это оператор SELECT, вложенный в:
предложение WHERE или HAVING

другого оператора SELECT;
оператор INSERT, UPDATE или DELETE;
другой подзапрос.

Подзапрос – это оператор SELECT, вложенный в:предложение WHERE или HAVING другого оператора SELECT;оператор INSERT, UPDATE или DELETE;другой

Слайд 4Подзапрос
Некорреллированный
(не зависит от внешнего запроса)
Корреллированный
(зависит от внешнего запроса)
Пример:
Вывести сумму, которую

заплатил за поездку турист Иванов

ПодзапросНекорреллированный(не зависит от внешнего запроса)Корреллированный(зависит от внешнего запроса)Пример:	Вывести сумму, которую заплатил за поездку турист Иванов

Слайд 5Некорреллированный подзапрос:
SELECT Сумма
FROM Оплата
WHERE КодТуриста IN
(SELECT КодТуриста
FROM Туристы
WHERE

Фамилия = ‘Иванов’);

Некорреллированный подзапрос:SELECT СуммаFROM ОплатаWHERE КодТуриста IN	(SELECT КодТуриста	 FROM Туристы	 WHERE Фамилия = ‘Иванов’);

Слайд 6Корреллированный подзапрос:
SELECT Сумма
FROM Оплата
WHERE ‘Иванов’ IN
(SELECT Фамилия
FROM Туристы
WHERE

Оплата.КодТуриста = Туристы.КодТуриста);

Корреллированный подзапрос:SELECT СуммаFROM ОплатаWHERE ‘Иванов’ IN	(SELECT Фамилия	 FROM Туристы	 WHERE Оплата.КодТуриста = 			Туристы.КодТуриста);

Слайд 7Большинство подзапросов могут быть заменены запросом на объединение таблиц
SELECT Сумма
FROM

Оплата, Туристы
WHERE Фамилия = ‘Иванов’ ;
Ошибка?
Запрос на объединение таблиц:

Большинство подзапросов могут  быть заменены запросом на объединение таблицSELECT СуммаFROM Оплата, ТуристыWHERE Фамилия = ‘Иванов’ ;Ошибка?Запрос

Слайд 8Некоторые выборки гораздо удобнее представлять в виде подзапросов, чем в

виде объединения, например, при необходимости самообъединения таблиц.
Пример:
Вывести всех туристов (фамилия,

имя и отчество), телефоны которых совпадают с телефоном Журавлева Юрия Петровича
Некоторые выборки гораздо удобнее представлять в виде подзапросов, чем в виде объединения, например, при необходимости самообъединения таблиц.Пример:Вывести

Слайд 9Самообъединение:
SELECT тур1.Фамилия, тур1.Имя, тур1.Отчество
FROM Туристы тур1, Туристы тур2
WHERE тур1.Телефон =

тур2.Телефон and тур2.Фамилия = ‘Журавлев’ and тур2.Имя = ‘Юрий’ and

тур2.Отчество = ‘Петрович’;
Самообъединение:SELECT тур1.Фамилия, тур1.Имя, тур1.ОтчествоFROM Туристы тур1, Туристы тур2WHERE тур1.Телефон = тур2.Телефон and тур2.Фамилия = ‘Журавлев’ and тур2.Имя

Слайд 10Подзапрос (какой?некорр/корр):
SELECT Фамилия, Имя, Отчество
FROM Туристы
WHERE Телефон IN
(SELECT

Телефон
FROM Туристы
WHERE Фамилия = ‘Журавлев’ and Имя

= ‘Юрий’ and Отчество = ‘Петрович’);
Подзапрос (какой?некорр/корр):SELECT Фамилия, Имя, ОтчествоFROM Туристы WHERE Телефон IN 	(SELECT Телефон	 FROM Туристы 	 WHERE Фамилия =

Слайд 11Обычно :
Подзапросы используются, когда необходимо сравнивать значения агрегирующей функции с

другими значениями.
Объединения используются, когда отображается информация из нескольких таблиц

Обычно :	Подзапросы используются, когда необходимо сравнивать значения агрегирующей функции с другими значениями.  Объединения используются, когда отображается

Слайд 12Для написания подзапроса используются следующие операторы:
IN (или NOT IN);
операторы сравнения

с использованием или без использования ANY или ALL ;
EXISTS (или

NOT EXISTS).
Для написания подзапроса используются следующие операторы:IN (или NOT IN);операторы сравнения с использованием или без использования ANY или

Слайд 13ANY и ALL
> ALL означает больше самого большого
> ANY -

больше хотя бы одного из значений
< ALL – меньше самого

меньшего
< ANY – меньше хотя бы одного из значений
= ANY – равно одному из значений (аналогичен оператору IN)
ANY и ALL> ALL означает больше самого большого> ANY - больше хотя бы одного из значений< ALL

Слайд 14SELECT Фамилия, Имя, Отчество
FROM Оплата, Туристы
WHERE Оплата.КодТуриста = Туристы.КодТуриста and

Сумма > ALL (SELECT Сумма FROM Оплата, Туристы WHERE

Оплата.КодТуриста = Туристы.КодТуриста and Фамилия = ‘Иванов’);

Пример : Кто из туристов заплатил за путевку больше, чем любой из Ивановых

SELECT Фамилия, Имя, ОтчествоFROM Оплата, ТуристыWHERE Оплата.КодТуриста = Туристы.КодТуриста and  Сумма > ALL  (SELECT Сумма

Слайд 15При использовании операторов сравнения без ANY или ALL необходимо, чтобы

подзапрос возвращал только единственное значение. Например, следующий запрос этого не

гарантирует:

SELECT Фамилия, Имя, Отчество
FROM Туристы
WHERE Телефон =
(SELECT Телефон
FROM Туристы
WHERE Фамилия = ‘Журавлев’);
Исправить!

При использовании операторов сравнения без ANY или ALL необходимо, чтобы подзапрос возвращал только единственное значение. Например, следующий

Слайд 16Гарантии выборки единственного значения может дать применение агрегирующих функций, например

вывести коды туристов, которые заплатили самую большую сумму за путевку

можно так:

SELECT КодТуриста
FROM Оплата
WHERE Сумма =
(SELECT max(Сумма)
FROM Оплата);

Гарантии выборки единственного значения может дать применение агрегирующих функций, например вывести коды туристов, которые заплатили самую большую

Слайд 17Кроме того, при использовании операторов сравнения (с использованием или без

использования ALL или ANY) нужно гарантировать, что в подзапросе не

будет нулевых значений, т.к. их нельзя сравнивать с другими значениями.
Кроме того, при использовании операторов сравнения (с использованием или без использования ALL или ANY) нужно гарантировать, что

Слайд 18EXISTS
Это запросы, выполняющие проверку на существование.
Например запрос «Вывести фамилию, имя

и отчество туристов, если среди них есть турист Иванов» можно

выполнить следующим образом:
EXISTSЭто запросы, выполняющие проверку на существование.Например запрос «Вывести фамилию, имя и отчество туристов, если среди них есть

Слайд 19SELECT Фамилия, Имя, Отчество
FROM Туристы
WHERE EXISTS
(SELECT *
FROM Оплата

WHERE Туристы.Фамилия = ‘Иванов’);
Чего в этом запросе не хватает?

SELECT Фамилия, Имя, ОтчествоFROM ТуристыWHERE EXISTS 	(SELECT *	 FROM Оплата	 WHERE Туристы.Фамилия = 			‘Иванов’);Чего в этом запросе

Слайд 20Или запрос «Вывести фамилию, имя и отчество туристов, если среди

них нет должников» можно выполнить следующим образом:
SELECT Фамилия, Имя, Отчество
FROM

Туристы
WHERE NOT EXISTS
(SELECT *
FROM Оплата
WHERE Cумма == 0 or Сумма == NULL);
А что в этом запросе неправильно?
Или запрос «Вывести фамилию, имя и отчество туристов, если среди них нет должников» можно выполнить следующим образом:SELECT

Слайд 21Подзапросы с разным уровнем вложения
Пример: Вывести фамилии туристов, которые отправились

в Париж.

Подзапросы с разным уровнем вложенияПример: Вывести фамилии туристов, которые отправились в Париж.

Слайд 22SELECT Фамилия
FROM Туристы
WHERE КодТуриста IN
(SELECT КодТуриста
FROM Оплата


WHERE КодПутевки IN
(SELECT КодПутевки
FROM Путевка
WHERE

ПунктНазначения = ‘Париж’));
SELECT ФамилияFROM ТуристыWHERE КодТуриста IN 		(SELECT КодТуриста 	 	FROM Оплата 	 	 		WHERE КодПутевки IN			(SELECT КодПутевки

Слайд 23Подзапросы в операторе UPDATE
Пример: Уменьшить всем Ивановым сумму, оплаченную за

путевку в 2 раза
UPDATE Оплата
SET Сумма = Сумма / 2
WHERE

КодТуриста IN
(SELECT КодТуриста
FROM Туристы
WHERE Фамилия = ‘Иванов’);
Подзапросы в операторе UPDATEПример: Уменьшить всем Ивановым сумму, оплаченную за путевку в 2 разаUPDATE ОплатаSET Сумма =

Слайд 24Подзапросы в операторе DELETE
Пример: Удалить все оплаты за путевку в

Египет
DELETE Оплата
WHERE КодПутевки IN
(SELECT КодПутевки
FROM Путевка
WHERE ПунктНазначения

= ‘Египет’);
Подзапросы в операторе DELETEПример: Удалить все оплаты за путевку в ЕгипетDELETE ОплатаWHERE КодПутевки IN	(SELECT КодПутевки 	 FROM

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика