Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD_KL_2010_14.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
28.97 Mб
Скачать

Правила выполнения внешних объединений

Можно привести следующее правило построения внешнего объединения.

1. Создать внутреннее объединение двух таблиц обычным способом.

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

Рис. 1.2. Результат выполнения запроса левого внешнего объединения

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

4. Результирующая таблица является внешним объединением двух таблиц.

Внешнее объединение, полученное при выполнении п.п. 1, 2, 3, называется полным внешним объединением. Оно симметрично по отношению к обеим таблицам. Однако существуют еще два типа внешних объединений, которые не симметричны относительно двух таблиц. Эти объединения называются левыми и правыми внешними объединениями.

На практике левые и правые объединения более полезны, чем полное объединение, особенно если таблицы связаны через первичный и вторичный ключи.

Левое внешнее объединение

Левое внешнее объединение, результат выполнения которого приведен на Рис. 1.2. , получается при выполнении п.п. 1 и 2 из приведенного выше правила. Всегда содержит как минимум один экземпляр каж­дой записи из набора, указанного слева от ключевого слова JOIN. Отсутствую­щие поля из правого набора заполняются значениями NULL.

В приведенном примере столбец ID_OFC таблицы является внешним ключом таблицы offisy; он содержит номера офисов, в которых работают служащие и допускает наличие значений NULL, если для нового офиса еще не набраны служащие. В нашей таблице offisy такой офис есть  это офис, расположенный в г. Омск.

Правое внешнее объединение

Правое внешнее объединение получается при выполнении п.п. 1 и 3 из приведенного выше правила. Всегда содержит как минимум один экземпляр каждой записи из набора, указанного справа от ключевого слова JOIN. Допускает наличие значения NULL. Если новому служащему еще не был назначен офис. В нашей таблице sluzhaschie такой служащий есть  это Уткин Денис. Запрос для выполнения правого внешнего объединения, целью которого является отображение сведений о служащих, которым еще не назначены офисы, имеет вид, приведенный на Рис. 1.3. .

SELECT *

FROM zakazy.offisy o

RIGHT JOIN zakazy.sluzhaschie s on o.id_ofc = s.id_ofc

Рис. 1.3. Результат выполнения запроса правого внешнего объединения

Полное внешнее объединение

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

SELECT *

FROM zakazy.offisy o

FULL JOIN zakazy.sluzhaschie s on o.id_ofc = s.id_ofc

Рис. 1.4. Результат выполнения запроса полного внешнего объединения

4.6. Операторы обновления данных

4.6.1.Оператор insert

Добавление строки в реляционную таблицу происходит тогда, когда во «внешнем мире» появляется новый объект, представляемый этой строкой. На примере учебной базы данных это выглядит следующим образом:

  • если вы принимаете на работу нового сотрудника, в таблицу СОТРУДНИКИ необходимо добавить новую строку с информацией о нем;

  • если служащий заключает договор с новым клиентом, в таблицу CLIENTY должна быть добавлена новая строка, представляющая этого клиента;

  • если клиент делает заказ, в таблицу ZAKAZY требуется добавить новую строку, содержащую сведения об этом заказе.

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

Для добавления строки в реляционную таблицу применяется инструкция INSERT. В качестве объекта может выступить таблица базы данных или просмотр (VIEW), созданный оператором CREATE VIEW. В последнем случае записи могут добавляться сразу в несколько таблиц. Формат оператора INSERT

INSERT INTO <объект> [(столбец1 [, столбец2 ...])]

{VALUES (<значение1> [, <значение2> ...])|<оператор SELECT>}

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

Поставить в соответствие столбцам списки значений можно двумя способами. Первый состоит в явном указании значений после слова VALUES, второй − в формировании значений при помощи оператора SELECT.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]