Скачать презентацию Использование подзапросов Цели урока В этом уроке вы Скачать презентацию Использование подзапросов Цели урока В этом уроке вы

IDD1_2B_Russian.ppt

  • Количество слайдов: 31

Использование подзапросов Цели урока В этом уроке вы узнаете как: • • ©NIIT Использовать Использование подзапросов Цели урока В этом уроке вы узнаете как: • • ©NIIT Использовать подзапросы в выражении IN Использовать подзапросы в выражении EXISTS Использовать вложенные запросы Использовать связанные подзапросы Использовать команду SELECT INTO Использовать оператор UNION Использование подзапросов Урок 2 B / Слайд 1 из 32

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

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

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

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

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

Использование подзапросов Составление запроса Результат • Требуемая информация доступна в таблицах External. Candidate и Использование подзапросов Составление запроса Результат • Требуемая информация доступна в таблицах External. Candidate и Contract. Recruiter. • Т. е. запрос, использующий команду SELECT, должен быть следующим: SELECT c. Name FROM Contract. Recruiter WHERE c. City = (SELECT c. City FROM External. Candidate WHERE v. First. Name = 'Barbara' AND v. Last. Name = 'Johnson') ©NIIT Использование подзапросов Урок 2 B / Слайд 7 из 32

Использование подзапросов Выполнение запроса Действие • В окне Query Analyzer набрать запрос SELECT c. Использование подзапросов Выполнение запроса Действие • В окне Query Analyzer набрать запрос SELECT c. Name FROM Contract. Recruiter WHERE c. City = (SELECT c. City FROM External. Candidate WHERE v. First. Name = 'Barbara' AND v. Last. Name = 'Johnson') • ©NIIT Выполнение запроса Использование подзапросов Урок 2 B / Слайд 8 из 32

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

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

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

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

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

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

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

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

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

Использование подзапросов Установление требований запроса Результат • Требуемым выходом запроса является передача данных из Использование подзапросов Установление требований запроса Результат • Требуемым выходом запроса является передача данных из таблицы External. Candidate во временную таблицу, названную temp. External. Candidate. ©NIIT Использование подзапросов Урок 2 B / Слайд 18 из 32

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

Использование подзапросов Составление запроса (продолжение) Результат • • Требуемая информация доступна в таблице External. Использование подзапросов Составление запроса (продолжение) Результат • • Требуемая информация доступна в таблице External. Candidate Т. е. запрос, использующий команду SELECT, должен быть следующим: sp_dboption recruitment, 'select into/bulkcopy', true SELECT * INTO temp. External. Candidate FROM External. Candidate WHERE DATEPART(mm, d. Date. Of. Application)= 5 AND DATEPART(yyyy, d. Date. Of. Application)= 2001 ©NIIT Использование подзапросов Урок 2 B / Слайд 20 из 32

Использование подзапросов Выполнение запроса Действие • В окне Query Analyzer набрать запрос sp_dboption recruitment, Использование подзапросов Выполнение запроса Действие • В окне Query Analyzer набрать запрос sp_dboption recruitment, 'select into/bulkcopy', true SELECT * INTO temp. External. Candidate FROM External. Candidate WHERE DATEPART(mm, d. Date. Of. Application)= 5 AND DATEPART(yyyy, d. Date. Of. Application)= 2001 • ©NIIT Выполнить запрос Использование подзапросов Урок 2 B / Слайд 21 из 32

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

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

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

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

Использование подзапросов Составление запроса Команда UNION • используется для комбинации результирующего множества двух или Использование подзапросов Составление запроса Команда 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] ©NIIT Использование подзапросов Урок 2 B / Слайд 26 из 32

Использование подзапросов Составление запроса (продолжение) Результат • Требуемая информация доступна в таблицах Contract. Recruiter Использование подзапросов Составление запроса (продолжение) Результат • Требуемая информация доступна в таблицах Contract. Recruiter и Recruitment. Agencies. • Т. е. запрос, использующий команду SELECT, должен быть следующим: SELECT c. Name, c. Phone FROM Contract. Recruiter UNION SELECT c. Name, c. Phone FROM Recruitment. Agencies ©NIIT Использование подзапросов Урок 2 B / Слайд 27 из 32

Использование подзапросов Выполнение запроса Действие • В окне Query Analyzer набрать запрос SELECT c. Использование подзапросов Выполнение запроса Действие • В окне Query Analyzer набрать запрос SELECT c. Name, c. Phone FROM Contract. Recruiter UNION SELECT c. Name, c. Phone FROM Recruitment. Agencies • Выполнить запрос ©NIIT Использование подзапросов Урок 2 B / Слайд 28 из 32

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

Использование подзапросов Выводы Из этого урока Вы узнали, что: • Подзапросы вкладываются в оператор Использование подзапросов Выводы Из этого урока Вы узнали, что: • Подзапросы вкладываются в оператор SELECT, INSERT, UPDATE или DELETE. • Они также могут использоваться внутри выражений WHERE или HAVING внешних команд SELECT, INSERT, UPDATE и DELETE. • Подзапрос, введенный с IN или NOT IN возвращает (не)нулевые значения. • Подзапрос, применяемый с выражением EXISTS возвращает данные в виде значения TRUE или FALSE. • Подзапрос может сам содержать один или более подзапросов. • На количество подзапросов, которые можно включить с командами SELECT, INSERT, UPDATE или DELETE, ограничений нет. • Связанный подзапрос может быть определен как запрос, зависящий от внешнего запроса для своего вычисления. ©NIIT Использование подзапросов Урок 2 B / Слайд 30 из 32

Использование подзапросов Выводы (продолжение) • • • ©NIIT Команда SELECT с выражением INTO может Использование подзапросов Выводы (продолжение) • • • ©NIIT Команда SELECT с выражением INTO может применяться для сохранения результирующего множества в новую таблицу, без какого либо процесса описания данных. Оператор UNION используется для объединения результирующего множества одного или более запросов в одно. По умолчанию, результирующее множество оператора UNION удаляет дублирующиеся строки из объединяемых запросов, если только с оператором UNION не задано выражение ALL. Использование подзапросов Урок 2 B / Слайд 31 из 32