Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


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

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

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

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

Презентация на тему Подзапросы. База данных, используемая в примерах

Содержание

База данных, используемая в примерахЗадание на объединение: вывести все путевки туриста Иванова (ПунктНазначения, Фамилия).
Подзапросы База данных, используемая в примерахЗадание на объединение: вывести все путевки туриста Иванова (ПунктНазначения, Фамилия). Подзапрос – это оператор SELECT, вложенный в:предложение WHERE или HAVING другого оператора ПодзапросНекорреллированный(не зависит от внешнего запроса)Корреллированный(зависит от внешнего запроса)Пример:	Вывести сумму, которую заплатил за поездку турист Иванов Некорреллированный подзапрос:SELECT СуммаFROM ОплатаWHERE КодТуриста IN	(SELECT КодТуриста	 FROM Туристы	 WHERE Фамилия = ‘Иванов’); Корреллированный подзапрос:SELECT СуммаFROM ОплатаWHERE ‘Иванов’ IN	(SELECT Фамилия	 FROM Туристы	 WHERE Оплата.КодТуриста = 			Туристы.КодТуриста); Большинство подзапросов могут  быть заменены запросом на объединение таблицSELECT СуммаFROM Оплата, Некоторые выборки гораздо удобнее представлять в виде подзапросов, чем в виде объединения, Самообъединение:SELECT тур1.Фамилия, тур1.Имя, тур1.ОтчествоFROM Туристы тур1, Туристы тур2WHERE тур1.Телефон = тур2.Телефон and Подзапрос (какой?некорр/корр):SELECT Фамилия, Имя, ОтчествоFROM Туристы WHERE Телефон IN 	(SELECT Телефон	 FROM Обычно :	Подзапросы используются, когда необходимо сравнивать значения агрегирующей функции с другими значениями. Для написания подзапроса используются следующие операторы:IN (или NOT IN);операторы сравнения с использованием ANY и ALL> ALL означает больше самого большого> ANY - больше хотя SELECT Фамилия, Имя, ОтчествоFROM Оплата, ТуристыWHERE Оплата.КодТуриста = Туристы.КодТуриста and  Сумма При использовании операторов сравнения без ANY или ALL необходимо, чтобы подзапрос возвращал Гарантии выборки единственного значения может дать применение агрегирующих функций, например вывести коды Кроме того, при использовании операторов сравнения (с использованием или без использования ALL EXISTSЭто запросы, выполняющие проверку на существование.Например запрос «Вывести фамилию, имя и отчество SELECT Фамилия, Имя, ОтчествоFROM ТуристыWHERE EXISTS 	(SELECT *	 FROM Оплата	 WHERE Туристы.Фамилия Или запрос «Вывести фамилию, имя и отчество туристов, если среди них нет Подзапросы с разным уровнем вложенияПример: Вывести фамилии туристов, которые отправились в Париж. SELECT ФамилияFROM ТуристыWHERE КодТуриста IN 		(SELECT КодТуриста 	 	FROM Оплата Подзапросы в операторе UPDATEПример: Уменьшить всем Ивановым сумму, оплаченную за путевку в Подзапросы в операторе DELETEПример: Удалить все оплаты за путевку в ЕгипетDELETE ОплатаWHERE
Слайды презентации

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

вывести

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

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


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

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

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

подзапрос.

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

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

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


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

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

Туристы
WHERE Фамилия = ‘Иванов’);


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

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

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


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

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

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

объединение таблиц:

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

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

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

всех туристов (фамилия, имя и отчество), телефоны которых совпадают с телефоном Журавлева Юрия Петровича

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

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

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

= ‘Юрий’ and тур2.Отчество = ‘Петрович’;

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

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

IN
(SELECT Телефон
FROM Туристы
WHERE Фамилия =

‘Журавлев’ and Имя = ‘Юрий’ and Отчество = ‘Петрович’);

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

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

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

из нескольких таблиц

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

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

IN);
операторы сравнения с использованием или без использования ANY или

ALL ;
EXISTS (или NOT EXISTS).

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

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

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

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

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

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

Туристы.КодТуриста and Сумма > ALL (SELECT Сумма FROM Оплата,

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

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


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

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

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

запрос этого не гарантирует:

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


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

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

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

сумму за путевку можно так:

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


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

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

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

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

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

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

фамилию, имя и отчество туристов, если среди них есть

турист Иванов» можно выполнить следующим образом:

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

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

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

не хватает?

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

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

если среди них нет должников» можно выполнить следующим образом:
SELECT

Фамилия, Имя, Отчество
FROM Туристы
WHERE NOT EXISTS
(SELECT *
FROM Оплата
WHERE Cумма == 0 or Сумма == NULL);
А что в этом запросе неправильно?

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

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

которые отправились в Париж.


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

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

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

FROM Путевка
WHERE ПунктНазначения = ‘Париж’));

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

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

оплаченную за путевку в 2 раза
UPDATE Оплата
SET Сумма =

Сумма / 2
WHERE КодТуриста IN
(SELECT КодТуриста
FROM Туристы
WHERE Фамилия = ‘Иванов’);

  • Имя файла: podzaprosy-baza-dannyh-ispolzuemaya-v-primerah.pptx
  • Количество просмотров: 104
  • Количество скачиваний: 0