Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД вопросы.doc
Скачиваний:
41
Добавлен:
26.03.2015
Размер:
424.96 Кб
Скачать
                  1. 14. Sql-команды: union (all, order by), intersect, except.

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

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

SELECT * FROM pupils UNION SELECT * FROM people

SELECT * FROM pupils UNION ALL SELECT * FROM people

Необходимо отметить, что UNION сам по себе не гарантирует порядок строк. Строки из второго запроса могут оказаться в начале, в конце или вообще перемешаться со строками из первого запроса. В случаях, когда требуется определенный порядок, необходимо использовать выражение ORDER BY.

Intersect — пересечение (возвращает все значения, которые содержатся как в первом, так и во втором запросах).

Except — разность (возвращает все уникальные значения одного запроса, которые также не находятся во втором запросе).

SELECT * FROM pupils INTERSECT SELECT * FROM people

SELECT * FROM pupils EXCEPT SELECT * FROM people

                  1. 15. Внутреннее соединение таблиц: естественное, inner join, многотабличный запрос.

Естественное соединение – соединение, которое строит декартово произведение, а потом строки отбирает по некоторому условию.

Внутреннее соединение — соединение, в котором отображаются только строки, имеющие соответствие в обеих соединенных таблицах.

Естесстваенное соединение:

SELECT users.name, phones.phone FROM users, phones

WHERE users.id = phones.id

Inner join

SELECT users.name, phones.phone

FROM users JOIN phones ON users.id = phones.id

Сложные (многотабличные запросы)

В SQL сложные запросы являются комбинацией простых SQL-запросов.

В SQL сложные запросы получаются из других запросов следующими способами:

  • вложением SQL-выражения запроса в SQL-выражение другого запроса. Первый из них называют подзапросом, а второй — внешним или основным запросом;

  • применением к SQL-запросам операторов объединения и соединения наборов записей, возвращаемых запросами. Эти операторы называют теоретико-множественными или реляционными.

Многотабличный запрос:

SELECT topics.title, posts.content

FROM topics, posts

                  1. 16. Внешнее соединение таблиц: outher join (left, right, full, cross).

Внешние соединения возвращают все строки, удовлетворяющие условиям поиска. Все строки, получаемые из левой таблицы, образуют левое внешнее соединение (LEFT OUTER JOIN), а строки, получаемые из правой таблицы, — правое внешнее соединение (RIGHT OUTER JOIN - Берём все строки правой таблицы и присоединяем в соответствии с условием все строки, которые есть в левой, а те строки, для которых не выполняется условие, заполняем null). Все строки их обеих таблиц возвращаются в полном внешнем соединении.

SELECT * FROM nameone

SELECT * FROM surnameone

SELECT n.name, s.surname FROM nameone n

RIGHT OUTER JOIN surnameone s ON n.id = s.id

SELECT n.name, s.surname FROM nameone n

LEFT OUTER JOIN surnameone s ON n.id = s.id

SELECT n.name, s.surname FROM nameone n

FULL OUTER JOIN surnameone s ON n.id = s.id

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

SELECT * FROM nameone

SELECT * FROM surnameone

SELECT n.name, s.surname FROM nameone n CROSS JOIN surnameone s