
- •1. Основные понятия реляционной модели данных.
- •2. Отношения, атрибуты, кортежи отношения.
- •3. Внешние ключи. Целостность внешних ключей.
- •4. Теоретико-множественные операторы. Декартово произведение.
- •5. Теоретико-множественные операторы. Объединение. Пересечение.
- •6. Теоретико-множественные операторы. Вычитание. Декартово произведение.
- •7. Специальные реляционные операторы. Выборка. Проекция. Деление.
- •8. Специальные реляционные операторы. Соединение (общая операция соединения, тэта-соединение, экви-соединение, естественное соединение).
- •9. Псевдонимы таблиц (в запросах на sql).
- •10. Синтаксис оператора выбора select. Применение агрегатных функций и вложенных запросов в операторе выбора. Синтаксис оператора select
- •11. Соединения. Внутреннее соединение (inner join). Перекрестное соединение (cross join). Полное внешнее соединение (full join).
- •12. Левое (left [outer] join) и правое (right [outer] join) внешние соединения. Объединение результатов нескольких запросов (операция union).
12. Левое (left [outer] join) и правое (right [outer] join) внешние соединения. Объединение результатов нескольких запросов (операция union).
OUTER JOIN
Соединение двух таблиц, в результат которого в обязательном порядке входят строки либо одной, либо обеих таблиц.
Оператор левого внешнего соединения LEFT OUTER JOIN соединяет две таблицы. Порядок таблиц для оператора важен, поскольку оператор не является симметричным.
Заголовок таблицы-результата является объединением (конкатенацией) заголовков соединяемых таблиц.
Тело результата логически формируется следующим образом. Пусть выполняется соединение левой и правой таблиц по предикату (условию) p.
В результат включается внутреннее соединение (INNER JOIN) левой и правой таблиц по предикату p.
Затем в результат добавляются те записи левой таблицы, которые не вошли во внутреннее соединение на шаге 1. Для таких записей поля, соответствующие правой таблице, заполняются значениями NULL.
SELECT *
FROM
Person
LEFT OUTER JOIN
City
ON Person.CityId = City.Id
Оператор правого внешнего соединения RIGHT OUTER JOIN соединяет две таблицы. Порядок таблиц для оператора важен, поскольку оператор не является симметричным.
Заголовок таблицы-результата является объединением (конкатенацией) заголовков соединяемых таблиц.
Тело результата логически формируется следующим образом. Пусть выполняется соединение левой и правой таблиц по предикату (условию) p.
В результат включается внутреннее соединение (INNER JOIN) левой и правой таблиц по предикату p.
Затем в результат добавляются те записи правой таблицы, которые не вошли во внутреннее соединение на шаге 1. Для таких записей поля, соответствующие левой таблице, заполняются значениями NULL.
SELECT *
FROM
Person
RIGHT OUTER JOIN
City
ON Person.CityId = City.Id
В языке SQL ключевое слово UNION применяется для объединения результатов двух SQL-запросов в единую таблицу, состоящую из схожих строк. Оба запроса должны возвращать одинаковое число столбцов и совместимые типы данных в соответствующих столбцах.
Оператор указывается между запросами. В упрощенном виде это выглядит следующим образом:
<запрос1>
UNION [ALL]
<запрос2>
UNION [ALL]
<запрос3>
.....;
По умолчанию любые дублирующие записи автоматически скрываются, если не использовано выражение UNION ALL.
Необходимо отметить, что UNION сам по себе не гарантирует порядок строк. Строки из второго запроса могут оказаться в начале, в конце или вообще перемешаться со строками из первого запроса. В случаях, когда требуется определенный порядок, необходимо использовать выражение ORDER BY.
Полезное в интернете:
http://www.intuit.ru/department/database/dbmdi/ - курс Карповой по БД.
http://www.cyberguru.ru/database/database-theory/data-relational-model.html - неплохая теория по реляционным БД
http://denizzone.com/baset2r2part1.html - очень лаконичная теория
http://ru.wikipedia.org/wiki/Join_%28SQL%29 – для двух последних вопросов