Язык запросов SQL. Оператор объединения Union

Содержание

Слайд 2

Оператор UNION используется для объединения выходных данных двух или более SQL-запросов в

Оператор UNION используется для объединения выходных данных двух или более SQL-запросов в
единое множество строк и столбцов.

Слайд 3

пример

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

пример получить в одной таблице фамилии и идентификаторы студентов и преподавателей из
Москвы
SELECT 'Студент ', фамилия, код_студента
FROM СТУДЕНТЫ
WHERE город = 'Москва'
UNION
SELECT 'Преподаватель', фамилия, код_преподавателя
FROM ПРЕПОДАВАТЕЛИ
WHERE город = 'Москва';

Слайд 4

Соединение таблиц с использованием оператора JOIN

Если в операторе SELECT после ключевого слова

Соединение таблиц с использованием оператора JOIN Если в операторе SELECT после ключевого
FROM указывается не одна, а две таблицы, то в результате выполнения запроса, в котором отсутствует предложение WHERE, каждая строка одной таблицы будет соединена с каждой строкой второй таблицы.

Слайд 5

ПРИМЕР

Если необходимо получить фамилии студентов (таблица СТУДЕНТЫ), и для каждого студента –

ПРИМЕР Если необходимо получить фамилии студентов (таблица СТУДЕНТЫ), и для каждого студента
название университетов (таблица УЧЕБНЫЕ_ЗАВЕД), расположенных в городе, где живет студент, то необходимо получить все комбинации записей о студентах и университетах в обеих таблицах, в которых значение поля ГОРОД совпадает.
SELECT СТУДЕНТЫ.фамилия, УЧЕБНЫЕ_ЗАВЕД.название, СТУДЕНТЫ.город
FROM СТУДЕНТЫ, УЧЕБНЫЕ_ЗАВЕД
WHERE СТУДЕНТЫ.город = УЧЕБНЫЕ_ЗАВЕД. Город;

Слайд 6

внутреннее(INNER) соединение

При этом соединяются только те строки таблиц, для которых истинным является

внутреннее(INNER) соединение При этом соединяются только те строки таблиц, для которых истинным
предикат, задаваемый в предложении ON выполняемого запроса.
Приведенный ниже запрос может быть записан иначе, с использованием ключевого слова JOIN.
SELECT СТУДЕНТЫ.фамилия, УЧЕБНЫЕ_ЗАВЕД.название, СТУДЕНТЫ.город
FROM СТУДЕНТЫ INNER JOIN УЧЕБНЫЕ_ЗАВЕД
ON СТУДЕНТЫ.город = УЧЕБНЫЕ_ЗАВЕД. Город;
Ключевое слово INNER в этом запросе может быть опущено, так как эта опция в операторе JOIN действует по умолчанию

Слайд 7

ПРИМЕР

Пусть требуется найти фамилии всех студентов, получивших неудовлетворительную оценку, вместе с

ПРИМЕР Пусть требуется найти фамилии всех студентов, получивших неудовлетворительную оценку, вместе с
названиями предметов обучения, по которым получена эта оценка.
SELECT наименование, фамилия, оценка
FROM СТУДЕНТЫ, ПРЕДМЕТЫ, ОЦЕНКИ
WHERE
СТУДЕНТЫ.код_студента = ОЦЕНКИ. код_студента
AND
ПРЕДМЕТЫ.код_предмета = ОЦЕНКИ. код_предмета
AND ОЦЕНКИ.оценка = 2;

Слайд 8

То же самое с использованием оператора JOIN

SELECT наименование, фамилия, оценка
FROM СТУДЕНТЫ JOIN

То же самое с использованием оператора JOIN SELECT наименование, фамилия, оценка FROM
ПРЕДМЕТЫ JOIN ОЦЕНКИ
ON СТУДЕНТЫ.код_студента = ОЦЕНКИ. код_студента
AND ПРЕДМЕТЫ.код_предмета = ОЦЕНКИ.код_предмета
AND ОЦЕНКИ.оценка = 2;

Слайд 9

Внешнее объединение

Часто бывает полезна операция объединения двух запросов, в которой второй запрос

Внешнее объединение Часто бывает полезна операция объединения двух запросов, в которой второй
выбирает строки, исключенные первым. Такая операция называется внешним объединением. Как отмечалось ранее, при использовании внутреннего (INNER) соединения таблиц соединяются только те их строки, в которых совпадают значения полей, задаваемые в запросе предложением WHERE. Однако во многих случаях этом может привести к нежелательной потере информации. Рассмотрим еще раз приведенный выше пример запроса на выборку списка фамилий студентов с полученными ими оценками и идентификаторами предметов. При использовании, как это было сделано в рассматриваемом примере, внутреннего соединения в результат запроса не попадут студенты, которые еще не сдавали экзамен, и которые следовательно отсутствуют в таблице ОЦЕНКИ. Если же необходимо иметь записи об этих студентах в выдаваемом запросом списке, то можно присоединить сведения о студентах, не сдавших экзамен, путем использования оператора UNION с соответствующим запросом.
Имя файла: Язык-запросов-SQL.-Оператор-объединения-Union.pptx
Количество просмотров: 43
Количество скачиваний: 0