рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Многотабличные запросы и стандарт SQL2

Многотабличные запросы и стандарт SQL2 - раздел Программирование, Многотабличные запросы на чтение и объединение таблиц В Стандарте Sql1 Дано Определение Только Внутреннего Соединения Таблиц, Понят...

В стандарте SQL1 дано определение только внутреннего соединения таблиц, понятие внешнего соединения в нем отсутствует. Однако внешнее соединение таблиц является полезной частью реляционной модели данных и реализовано во многих СУБД (SQL Server, Oracle, SQLBase). Способы представления внешних соединений в различных программных продуктах сильно отличались друг от друга и выбирались по принципу их наименьшего влияния на язык SQL, поэтому в стандарте SQL2 был определен совершенно новый метод поддержки внешних соединений, не опирающийся ни на одну из популярных СУБД. В спецификации стандарта SQL2 поддержка внешних соединений осуществляется в предложении FROM, синтаксис которой позволяет точно определить, каким образом исходные таблицы должны быть соединены в запросе. Oracle SQL имеет полную поддержку расширенного предложения FROM, начиная с версии Oracle9i.

Результатом соединения, реализованного в предложении FROM, является порожденная таблица, которая и должна обрабатываться остальными операторами запроса. Можно совмещать в одном запросе соединения, заданные посредством расширенного предложения FROM, и соединения, определенные условием соединения WHERE, однако сложность логики исполнения оператора превышает полученные преимущества. Стандарт SQL2 предусматривает использование только одной встроенной операции соединения в каждом предложении FROM.

Для всех соединений, исключая перекрестные соединения и соединения объединения, поддерживаются следующие типы соединения:

тип_соединения = INNER | {LEFT [OUTER] | RIGHT [OUTER] | FULL [OUTER]}

Внутреннее соединение (INNER). Это тип соединения по умолчанию. Соединяются только те строки, где найдены совпадающие значения столбцов.

Левое внешнее соединение (LEFT [OUTER]).Это соединение включает в себя все строки из первой таблицы (совпадающие и несовпадающие) и совпадающие значения из второй таблицы. Для строк из первой таблицы, которым не найдено соответствие, в столбцы, извлекаемые из второй таблицы, заносятся значения NULL.

Правое внешнее соединение (RIGHT [OUTER]). Это соединение является обратным предыдущему, оно включает в себя все строки из второй таблицы (совпадающие и несовпадающие) и совпадающие значения из первой таблицы. Для строк из второй таблицы, которым не найдено соответствие, в столбцы, извлекаемые из первой таблицы, заносятся значения NULL.

Полное внешнее соединение (FULL [OUTER]).Это комбинация левого и правого внешних соединений. Присутствуют все строки из обеих таблиц. Если значения столбцов совпадают, то столбцы заполнены реальными значениями. В противном случае столбцы заполняются значениями NULL.

В расширенном предложении FROM используются следующие синтаксические конструкции:

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

… FROM таблица1 CROSS JOIN таблица2

Соединение объединения отличается от оператора UNION, который служит для объединения выходной информации нескольких запросов. Соединение объединения является обратным по отношению к типу соединения INNER. Оно включает только те строки из таблиц, для которых не найдено совпадений. Если взять полное внешнее объединение и удалить из него строки, полученные путем внутреннего соединения тех же таблиц, получится соединение объединения.

… FROM таблица1 UNION JOIN таблица2

Естественное соединение – операция соединения по нескольким столбцам с одинаковыми именами. Определяются и выделяются только те строки декартова произведения таблиц, в которых значения этих столбцов одинаковы, и эти столбцы затем объединяются в один общий столбец.

… FROM таблица1 [NATURAL] [тип_соединения] JOIN таблица2

Соединение посредством предиката. Значение предиката вычисляется с использованием значений, взятых из строки-кандидата соединения (строки, полученной в результате декартова произведения соединяемых таблиц). В результирующую таблицу попадают строки, для которых значением предиката является TRUE.

… FROM таблица1 [тип_соединения] JOIN таблица2 ON предикат

Соединение посредством имен столбцов. USING определяет имена столбцов, значения в которых должны совпадать. USING отличается от NATURAL (естественного соединения) тем, что USING позволяет соединять в таблицах заданное подмножество столбцов с совпадающими именами, а NATURAL автоматически соединяет все столбцы, имеющие одинаковые имена.

… FROM таблица1 [тип_соединения] JOIN таблица2 USING (столбец1[, столбец2, …]) …

– Конец работы –

Эта тема принадлежит разделу:

Многотабличные запросы на чтение и объединение таблиц

На сайте allrefs.net читайте: "Многотабличные запросы на чтение и объединение таблиц"

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Многотабличные запросы и стандарт SQL2

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Многотабличные запросы на чтение и объединение таблиц
Выборка данных из нескольких таблиц Декартово произведение Многотабличные запросы Псевдонимы таблиц Чтение всех столбцов Порядок выполнения многотабличн

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

Декартово произведение
В связи с тем, что многотабличные запросы выполняются путем сравнения столбцов, оператор SELECT должен содержать условие поиска, которое определяет соотношение столбцов. Если условие поиска опущено

SELECT [ALL | DISTINCT] список_выбора
FROM таблица1 [псевдоним1], таблица2 [псевдоним2], … [WHERE условие_соединения] [ORDER BY {столбец

Псевдонимы таблиц
Имена таблиц могут оказаться слишком длинными. В этом случае при составлении корректного запроса код SQL может оказаться очень большим, что увеличит время отклика, т.к. на обработку такого запроса

Порядок выполнения многотабличного запроса
1. Формируется декартово произведение таблиц, перечисленных в предложении FROM. 2. Условие соединения, заданное в предложении WHERE, применяется ко всем строкам декартова произведения табл

Не-эквисоединения
Достаточно часто возникает ситуация, когда необходимо получить информацию из разных таблиц, причем ни один столбец таблицы не соответствует в точности ни одному столбцу другой таблицы. Например (Ри

Соединение таблицы с самой собой
Отношения могут существовать не только между таблицами, но и внутри одной таблицы (рекурсивная связь). Например (Рисунок 3), таблица EMP содержит список сотрудников, каждый

Внешнее соединение
Если строка из одной таблицы не имеет пары из другой таблицы, она не включается в результирующее множество, возвращаемое многотабличным запросом. Может возникнуть ситуация, когда результат запроса

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги