Использование подзапросов

Содержание

Слайд 2

Использование подзапросов

Урок 2B / Слайд из 32

СРС 4_4
Запишите команду SQL для извлечения

Использование подзапросов Урок 2B / Слайд из 32 СРС 4_4 Запишите команду
имен всех работников из таблицы Employee записанныые строчными буквами.
Какая функция возвращает начальную позицию данного образца в строке?
Какая функция удаляет начальные пробелы из символьного выражения?
Записать функцию, которая добавит 10 дней к текущей дате.
Какие бывают различные типы соединений?

Слайд 3

Использование подзапросов

Урок 2B / Слайд из 32

Подзапросы
Подзапрос может быть определен как запрос

Использование подзапросов Урок 2B / Слайд из 32 Подзапросы Подзапрос может быть
SELECT возвращающий одно значение.
Подзапросы вкладываются в команду SELECT, INSERT, UPDATE или DELETE.
Подзапросы могут применятся для извлечения данных из нескольких таблиц и использоваться как альтернатива соединению.
Они также могут использоваться внутри выражения WHERE или HAVING команд SELECT, INSERT, UPDATE и DELETE.

Слайд 4

Использование подзапросов

Урок 2B / Слайд из 32

Пример применения одного запроса в
другом

Использование подзапросов Урок 2B / Слайд из 32 Пример применения одного запроса
запросе
Формулировка задачи
Вывести список вербовщиков, проживающих в том же городе, что и соискатель Барбара Джонсон.

Слайд 5

Использование подзапросов

Урок 2B / Слайд из 32

Решение
1. Создать формат выхода запроса.
2. Составить

Использование подзапросов Урок 2B / Слайд из 32 Решение 1. Создать формат
запрос.
3. Выполнить запрос.
4. Проверить, что выход запроса соответствует требуемым результатам.

Слайд 6

Использование подзапросов

Урок 2B / Слайд из 32

Создание формата выхода запроса
Результат
Требуемым выходом запроса

Использование подзапросов Урок 2B / Слайд из 32 Создание формата выхода запроса
является имена вербовщиков, которые проживают в том же городе, что и ‘Барбара Джонсон’
Требуемые данные представлены в таблицах ContractRecruiter (вербовщики) и ExternalCandidate (соискатель).

Слайд 7

Использование подзапросов

Урок 2B / Слайд из 32

Составление запроса
Результат
Требуемая информация доступна в таблицах

Использование подзапросов Урок 2B / Слайд из 32 Составление запроса Результат Требуемая
ExternalCandidate и ContractRecruiter.
Т.е. запрос, использующий команду SELECT, должен быть следующим:
SELECT cName
FROM ContractRecruiter
WHERE cCity = (SELECT cCity
FROM ExternalCandidate
WHERE vFirstName = 'Barbara'
AND vLastName = 'Johnson')

Слайд 8

Использование подзапросов

Урок 2B / Слайд из 32

Выполнение запроса
Действие
В окне Query Analyzer набрать

Использование подзапросов Урок 2B / Слайд из 32 Выполнение запроса Действие В
запрос
SELECT cName
FROM ContractRecruiter
WHERE cCity = (SELECT cCity FROM ExternalCandidate
WHERE vFirstName = 'Barbara'
AND vLastName = 'Johnson')
Выполнение запроса

Слайд 9

Использование подзапросов

Урок 2B / Слайд из 32

Проверка выхода запроса на соответствие требуемым

Использование подзапросов Урок 2B / Слайд из 32 Проверка выхода запроса на
результатам
Действие
Проверить, что:
Отображены требуемые столбцы

Слайд 10

Использование подзапросов

Урок 2B / Слайд из 32

Дополнительные сведения о подзапросах
Подзапросы с

Использование подзапросов Урок 2B / Слайд из 32 Дополнительные сведения о подзапросах
IN
Подзапрос, введенный с IN возвращает (не)нулевые значения.
Пример
SELECT Au_Id
FROM TitleAuthor
WHERE Title_Id IN
(SELECT Title_Id FROM Sales)

Слайд 11

Использование подзапросов

Урок 2B / Слайд из 32

Доп. сведения о подзапросах (продолжение)
Подзапросы

Использование подзапросов Урок 2B / Слайд из 32 Доп. сведения о подзапросах
с EXISTS
Подзапрос, используемый с выражением EXISTS, всегда возвращает данные в виде значения TRUE или FALSE.
Пример
SELECT Pub_Name
FROM Publishers
WHERE EXISTS (SELECT * FROM Titles
WHERE Type = 'business')

Слайд 12

Использование подзапросов

Урок 2B / Слайд из 32

Доп. сведения о подзапросах (продолжение)
Подзапросы

Использование подзапросов Урок 2B / Слайд из 32 Доп. сведения о подзапросах
с агрегированными (обобщенными) функциями
Агрегированные (обобщенные) функции также могут использоваться в подзапросах.
Пример
SELECT Title
FROM Titles
WHERE Advance > (SELECT AVG(Advance)
FROM Titles
WHERE Type = 'business')

Слайд 13

Использование подзапросов

Урок 2B / Слайд из 32

Доп. сведения о подзапросах (продолжение)
Ограничения

Использование подзапросов Урок 2B / Слайд из 32 Доп. сведения о подзапросах
подзапросов
SQL Server ограничивает использование некоторых методов и способов, и задает реализацию некоторых стандартов при использовании подзапросов. Налагаемыми ограничениями являются:
Список столбца команды SELECT в запросе, введенном с оператором сравнения, может включать только один столбец.
Столбец, используемый в выражении WHERE внешнего запроса должен быть совместимым со столбцом, используемым в списке SELECT внутреннего запроса.
Выражение ORDER BY и выражение GROUP BY не могут использоваться во внутреннем запросе, когда в основном запросе применяются =, !=, <, <=, > или >=, поскольку внутренний запрос может вернуть более чем одно значение, которое не сможет быть перехвачено внешним запросом.

Слайд 14

Использование подзапросов

Урок 2B / Слайд из 32

Доп. сведения о подзапросах (продолжение)
Вложенные подзапросы
Подзапрос

Использование подзапросов Урок 2B / Слайд из 32 Доп. сведения о подзапросах
может сам содержать один или более подзапросов.
Пример
SELECT 'Author Name' = SUBSTRING
(Au_Fname, 1, 1) + '. '+ Au_Lname
FROM Authors
WHERE Au_Id IN (SELECT Au_Id
FROM TitleAuthor
WHERE Title_Id =(SELECT
Title_Id FROM Titles
WHERE Title = 'Net Etiquette'))

Слайд 15

Использование подзапросов

Урок 2B / Слайд из 32

Доп. сведения о подзапросах (продолжение)
Связанные подзапросы
Могут

Использование подзапросов Урок 2B / Слайд из 32 Доп. сведения о подзапросах
быть определены как запросы, зависящие от внешнего запроса для своего вычисления
Пример
SELECT Title, Type, Advance
FROM Titles t1
WHERE t1.Advance > (SELECT AVG(t2.Advance)
FROM Titles t2 WHERE
t1.Type = t2.Type)
Запросы с модифицированными операторами сравнения
В SQL Server есть ключевые слова ALL и ANY, которые могут применяться для модификации существующих операторов сравнения.

Слайд 16

Использование подзапросов

Урок 2B / Слайд из 32

Пример выделения данных в
другую таблицу
Постановка задачи
Для

Использование подзапросов Урок 2B / Слайд из 32 Пример выделения данных в
проведения анализа биографий кандидатов, претендовавших на прием в мае 2010 года, необходимо скопировать их данные в новую таблицу.

Слайд 17

Использование подзапросов

Урок 2B / Слайд из 32

Решение
1. Установить требования выхода запроса.
2. Составить

Использование подзапросов Урок 2B / Слайд из 32 Решение 1. Установить требования
запрос.
3. Выполнить запрос.
4. Проверить, что выход запроса соответствует требуемым результатам.

Слайд 18

Использование подзапросов

Урок 2B / Слайд из 32

Установление требований запроса
Результат
Требуемым выходом запроса является

Использование подзапросов Урок 2B / Слайд из 32 Установление требований запроса Результат
передача данных из таблицы ExternalCandidate во временную таблицу, названную tempExternalCandidate.

Слайд 19

Использование подзапросов

Урок 2B / Слайд из 32

Составление запроса
Команда SELECT INTO
Команда SELECT с

Использование подзапросов Урок 2B / Слайд из 32 Составление запроса Команда SELECT
выражением INTO применяется для сохранения результирующего множества в новую таблицу без процесса описания данных. Команда SELECT INTO создает новую тааблицу.
Синтаксис
SELECT список_столбцов
INTO имя_новой_таблицы
FROM имя_таблицы1, имя_таблицы2,………,
имя_таблицы n
WHERE условие1, условие2,……….,
условие n
Пример
SELECT Title_Id, Title
INTO NewTitles
FROM Titles
WHERE Price > $15

Слайд 20

Использование подзапросов

Урок 2B / Слайд из 32

Составление запроса (продолжение)
Результат
Требуемая информация доступна

Использование подзапросов Урок 2B / Слайд из 32 Составление запроса (продолжение) Результат
в таблице ExternalCandidate
Т.е. запрос, использующий команду SELECT, должен быть следующим:
sp_dboption recruitment, 'select into/bulkcopy', true
SELECT * INTO tempExternalCandidate
FROM ExternalCandidate
WHERE DATEPART(mm,dDateOfApplication)= 5
AND DATEPART(yyyy,dDateOfApplication)= 2001

Слайд 21

Использование подзапросов

Урок 2B / Слайд из 32

Выполнение запроса
Действие
В окне Query Analyzer набрать

Использование подзапросов Урок 2B / Слайд из 32 Выполнение запроса Действие В
запрос
sp_dboption recruitment, 'select into/bulkcopy', true
SELECT * INTO tempExternalCandidate
FROM ExternalCandidate
WHERE DATEPART(mm,dDateOfApplication)= 5
AND DATEPART(yyyy,dDateOfApplication)= 2001
Выполнить запрос

Слайд 22

Использование подзапросов

Урок 2B / Слайд из 32

Проверка выхода запроса соответствует требуемым результатам
Действие
Проверить,

Использование подзапросов Урок 2B / Слайд из 32 Проверка выхода запроса соответствует
что:
В конечной таблице имеются все данные из исходной таблицы.

Слайд 23

Использование подзапросов

Урок 2B / Слайд из 32

Пример объединения данных из двух
таблиц
задачи
Требуется

Использование подзапросов Урок 2B / Слайд из 32 Пример объединения данных из
вывести список вербовщиков и кадровых агентств вместе с контактными телефонами.

Слайд 24

Использование подзапросов

Урок 2B / Слайд из 32

Решение
1. Создать формат выхода запроса.
2. Составить

Использование подзапросов Урок 2B / Слайд из 32 Решение 1. Создать формат
запрос.
3. Выполнить запрос.
4. Проверить, что выход запроса соответствует требуемым результатам.

Слайд 25

Использование подзапросов

Урок 2B / Слайд из 32

Создание формата выхода запроса
Результат
Требуемым выходом запроса

Использование подзапросов Урок 2B / Слайд из 32 Создание формата выхода запроса
является единый список имен и номеров телефонов вербовщиков и кадровых агентств.

Слайд 26

Использование подзапросов

Урок 2B / Слайд из 32

Составление запроса
Команда UNION
используется для комбинации

Использование подзапросов Урок 2B / Слайд из 32 Составление запроса Команда UNION
результирующего множества двух или более запросов.
Синтаксис
SELECT column_list [INTO new_table_name]
[FROM clause] [WHERE clause]
[GROUP BY clause][HAVING clause]
[UNION [ALL]
SELECT column_list
[FROM clause] [WHERE clause]
[GROUP BY clause][HAVING clause]...]
[ORDER BY clause]
[COMPUTE clause]

Слайд 27

Использование подзапросов

Урок 2B / Слайд из 32

Составление запроса (продолжение)
Результат
Требуемая информация доступна

Использование подзапросов Урок 2B / Слайд из 32 Составление запроса (продолжение) Результат
в таблицах ContractRecruiter и RecruitmentAgencies.
Т.е. запрос, использующий команду SELECT, должен быть следующим:
SELECT cName,cPhone
FROM ContractRecruiter
UNION
SELECT cName, cPhone
FROM RecruitmentAgencies

Слайд 28

Использование подзапросов

Урок 2B / Слайд из 32

Выполнение запроса
Действие
В окне Query Analyzer

Использование подзапросов Урок 2B / Слайд из 32 Выполнение запроса Действие В
набрать запрос
SELECT cName,cPhone
FROM ContractRecruiter
UNION
SELECT cName, cPhone
FROM RecruitmentAgencies
Выполнить запрос

Слайд 29

Использование подзапросов

Урок 2B / Слайд из 32

Проверка выхода запроса на соответствие требуемым

Использование подзапросов Урок 2B / Слайд из 32 Проверка выхода запроса на
результатам
Действие
Проверить, что:
Отображены все требуемые столбцы.
Все строки из обоих таблиц выведены в виде одного списка.

Слайд 30

Использование подзапросов

Урок 2B / Слайд из 32

Выводы
Из этого урока Вы узнали, что:

Использование подзапросов Урок 2B / Слайд из 32 Выводы Из этого урока

Подзапросы вкладываются в оператор SELECT, INSERT, UPDATE или DELETE.
Они также могут использоваться внутри выражений WHERE или HAVING внешних команд SELECT, INSERT, UPDATE и DELETE.
Подзапрос, введенный с IN или NOT IN возвращает (не)нулевые значения.
Подзапрос, применяемый с выражением EXISTS возвращает данные в виде значения TRUE или FALSE.
Подзапрос может сам содержать один или более подзапросов.
На количество подзапросов, которые можно включить с командами SELECT, INSERT, UPDATE или DELETE, ограничений нет.
Связанный подзапрос может быть определен как запрос, зависящий от внешнего запроса для своего вычисления.
Имя файла: -Использование-подзапросов-.pptx
Количество просмотров: 212
Количество скачиваний: 0