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

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

Внешнее соединение таблиц

Внешнее соединение таблиц - раздел Программирование, Среда Delphi широко известна и не вызывает дополнительных трудностей при изучении и использовании   Рассмотренные Соединения Называют Внутренними (Inner Join). В...

 

Рассмотренные соединения называют внутренними (INNER JOIN). В некоторых случаях требуются соединения другого вида – внешние соединения (OUTER JOIN). Рассмотрим две таблицы A (Stud, Prep) и B (Prep, Kaf) с информацией о студентах-дипломниках и их руководителях. Здесь Stud – фамилия студента, Prep – фамилия руководителя диплома, Kaf – название кафедры, где работает руководитель. Будем для определенности считать, что однофамильцы отсутствуют.

Пусть, например, таблицы заполнены следующим образом

Таблица 8

Записи таблицы A

Stud Prep
Иванов Гусев
Петров Николаев
Сидоров NULL

 

Таблица 9

Записи таблицы B

Prep Kaf
Гусев Информатика
Николаев Математика

 

Значение NULL для студента Сидорова показывает, что данные о его руководителе отсутствуют.

Требуется дать полный список дипломников со сведениями об их руководителях. Составим запрос

SELECT Stud, A.Prep, Kaf FROM A, B WHERE A.Prep = B.Prep

Результатом будет таблица

Таблица 10

Результат запроса

Stud A.Prep Kaf
Иванов Гусев Информатика
Петров Николаев Математика

 

А где же Сидоров? Хотелось бы получить таблицу

Таблица 11

Желаемый результат

Stud A.Prep Kaf
Иванов Гусев Информатика
Петров Николаев Математика
Сидоров NULL NULL

 

Как это сделать?

Выходом является внешнее соединение таблиц A и B, которое будем обозначать пока символами ‘*=*’. Для получения полного внешнего соединения двух таблиц необходимо

1. Создать внутреннее соединение таблиц

2. Каждую строку первой таблицы, которая не имеет связи ни с одной строкой второй таблицы, добавить в результат, присваивая всем столбцам второй таблицы значение NULL.

3. Каждую строку второй таблицы, которая не имеет связи ни с одной строкой первой таблицы, добавить в результат, присваивая всем столбцам первой таблицы значение NULL.

В приведенном выше запросе достаточно заменить знак ‘=’, определяющий внутреннее соединение таблиц A и B, на операцию внешнего соединения ‘*=*’.

Добавим еще одну запись в таблицу A

Таблица 12

Записи таблицы A

Stud Prep
Иванов Гусев
Петров Николаев
Сидоров NULL
Волков Митрофанов

 

Результатом запроса с внешним соединением будет таблица

 

Таблица 13

Результат запроса с внешним соединением

Stud A.Prep Kaf
Иванов Гусев Информатика
Петров Николаев Математика
Сидоров NULL NULL
Волков Митрофанов NULL

 

Кафедра преподавателя Митрофанова неизвестна.

Добавим сейчас запись в таблицу B

Таблица 14

Записи таблицы B

Prep Kaf
Гусев Информатика
Николаев Математика
Кокорин Математика

 

В результате получим таблицу

Таблица 15

Результат запроса

Stud A.Prep Kaf
Иванов Гусев Информатика
Петров Николаев Математика
Сидоров NULL NULL
Волков Митрофанов NULL
NULL NULL Математика

 

В последней строке фамилия Кокорин отсутствует, так как в запросе указано поле A.Prep, а не B.Prep.

Предположим, что нас в первую очередь интересует информация о студентах, а не о преподавателях. Тогда нам не нужна последняя строка. Можно получить требуемый результат, используя операцию левого внешнего соединения ‘*=’. При выполнении этой операции третий пункт операции полного внешнего соединения не выполняется. Аналогично, при правом внешнем соединении ‘=*’ пропускается второй пункт полного внешнего соединения.

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

SELECT Stud, B.Prep, Kaf FROM A, B WHERE A.Prep =* B.Prep

Для таблиц, заполненных так же, как в последнем примере, в результате получим

Таблица 16

Результат запроса с правым внешним соединением

Stud A.Prep Kaf
Иванов Гусев Информатика
Петров Николаев Математика
NULL Кокорин Математика

 

Информации о студентах Сидорове и Волкове не будет, поскольку их руководители отсутствуют в таблице B.

По стандарту SQL соединения таблиц задаются в предложении FROM. Внутреннее соединение именуется INNER JOIN, полное внешнее соединение -FULL [OUTER] JOIN, левое и правое соединения – LEFT [OUTER] JOIN и RIGHT [OUTER] JOIN (слово OUTER может опускаться). Условие соединения определяется после слова ON. Соединение, как и прежде, возможно и по нескольким полям.

Например, рассмотренный выше запрос может быть задан в форме

SELECT Stud, A.Prep, Kaf FROM A LEFT JOIN B ON A.Prep = B.Prep

Для одноименных полей двух таблиц вместо условия со словом ON можно использовать форму USING (<список одноименных полей>) или просто слово NATURAL. В последнем случае соединение происходит по всем одноименным полям.

Полное внешнее соединение требуется редко и реализовано не во всех СУБД.

 

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

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

Среда Delphi широко известна и не вызывает дополнительных трудностей при изучении и использовании

В настоящее время список источников по теории и практике использования баз... В данном пособии подробно излагаются вопросы связанные с проектированием и нормализацией базы данных реляционной...

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

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

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

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

История создания баз данных
  Существуют различные определения базы данных. Обычно они либо неполны, либо слишком громоздки. Дадим простое определение, расширяя его по мере появления новых понятий.

Модели данных СУБД
  Коцептуальной моделью данных в БД называют глобальное логическое описание данных. Структуры данных коцептуальной модели влияют на все характеристики СУБД, охватывая · языки

Двенадцать правил Кодда для реляционных СУБД
В статье, опубликованной в 1985 году [3], Э. Кодд сформулировал двенадцать правил, которым должна соответствовать настоящая реляционная БД. Они являются полуофициальным определением понятия

Нормализация таблиц БД. Первая, вторая и третья нормальные формы
  При проектировании структуры БД естественным желанием бывает минимизировать количество таблиц, а в идеальном случае сосредоточить все данные в одной таблице. Однако это оказывается

Нормальная форма Бойса-Кодда
  Пусть в определенном выше отношении SP присутствует еще и имя поставщика Sname. Будем для удобства считать, что имя однозначно определяет поставщика. Тогда в отношении SP (Sn, Sname

Четвертая нормальная форма
  Рассмотрим таблицу R (Subj, Teach, Book), где Subj – учебный предмет, Teach- преподаватель по этому предмету, Book – книга, рекомендуемая преподавателем Teach для изучения предмета

Семантическое моделирование данных.
Элементы модели "сущность-связь" Семантическое моделирование данных на основе ER-диаграмм компактно и доступно изложено в [5], и мы будем следовать этому источни

В реляционной СУБД
  Одним из главных достоинств иерархических и сетевых СУБД считают естественность представления данных иерархической и сетевой природы. А как представлять такие данные в реляционных С

Основы реляционной алгебры
  Реляционная алгебра представляет собой совокупность операций над отношениями. Операндами и результатами операций являются отношения. Рассмотрим основные операции реляционной алгебры

Основы реляционного исчисления
  Реляционное исчисление это математический аппарат, который позволяет путем использования исчисления предикатов, кванторов и переменных описывать отношения и операции над ними в виде

Общая характеристика и стандарты языка SQL
  Язык SQL (Structered Query Language) впервые появился в рамках проекта разработки экспериментальной реляционной СУБД System R в исследовательской лаборатории фирмы IBM в 1975-1979 г

Многотабличные запросы SQL. Соединения таблиц. Самосоединения. Псевдонимы
  Запросы могут выбирать данные изнескольких таблиц. Эти таблицы должны быть перечислены после слова FROM. Если таблицы не связаны между собой, то результатом запроса будут всевозможн

Для реализации итоговых запросов в SQL имеются следующие стандартные функции, которые называют агрегатными
· MAX (поле) – максимальное значение поля; · MIN (поле) – минимальное значение поля; · AVG (поле) – среднее значение поля; · SUM (поле) – сумма значений поля; ·

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

Целостность данных
  Термин “целостность данных” относится к правильности и полноте информации, содержащейся в БД. Вероятно, корректнее говорить о непротиворечивости данных, поскольку невозможно предотв

Триггеры и хранимые процедуры
  Как уже говорилось, целостность данных часто связана с порядками и правилами в конкретной организации. Например: · клиенты не могут размещать заказы на сумму, превышающую и

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

Представления и работа с ними
  Представлением (VIEW) называется SQL-запрос на чтение, которому присвоили имя и сохранили в БД. Представление является виртуальной таблицей, то есть обеспечивает доступ к результата

Обеспечение безопасности баз данных в SQL
  Под безопасностью БД понимают защиту данных от несанкционированного чтения, изменения или уничтожения. Язык SQL позволяет индивидуально защищать как целые таблицы, так и отдельные и

Курсоры
  Когда результатом выполнения запроса SQL в программном режиме является не одна строка, а целая таблица, необходимо обеспечить для прикладной программы возможность построчного получе

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

Элементы языка QBE
  Язык QBE (Query By Example – запрос по образцу) был разработан в компании IBM в 1975 году. Это язык реляционного исчисления с переменными на доменах, рассчитанный на работу в интера

Подходы к оптимизации запросов
  Говоря про оптимизацию запросов в реляционных СУБД, обычно имеют в виду такой способ обработки, когда по начальному представлению запроса путем преобразований вырабатывается процеду

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

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