Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИТУ_лаба №1.doc
Скачиваний:
4
Добавлен:
09.11.2019
Размер:
2.15 Mб
Скачать

З адание 2.14.

Отобразите инструкции SQL, соответствующие запросу.

1. Откройте запрос в режиме конструктора, выделив его имя в окне базы данных и нажав кнопку "Конструктор".

2. Нажмите кнопку "Представление запроса" на панели инструментов и выберите из списка команду "SQL" или выберите команду "Вид, Режим SQL"

  1. Окно SQL содержит только текст инструкций SQL.

Соединение таблиц для создания многотабличного запроса

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

Внутреннее соединение (или эквисоединение) обычно используется при создании запросов на выборку. Результирующее множество запроса содержит записи одной таблицы, имеющие совпадающие значения в связанных полях другой (where поле1 = поле2). В большинстве случаев соединения основываются на уникальном значении поля первичного ключа в одной таблице и значениями поля внешнего ключа в другой таблице, если таблицы связаны отношением "один-ко-многим". Если в таблице "многие" записи с заданной величиной отсутствуют, то соответствующие записи таблицы "один" в результирующее множество не включаются. Access автоматически создает соединения между таблицами, если в них имеются поля с одинаковыми именами, одно из которых является ключевым, либо если соединение было задано в окне связей.

Внешнее соединение используется для создания новой таблицы, которая содержит записи, исключая повторяющиеся, связанные поля которых совпадают. Внешнее соединение позволяет вывести данные одной из таблиц независимо от того, имеются ли соответствующие записи в другой таблице. Рекурсивное соединение связывает данные в одной таблице. Создание этого типа соединения выполняется путем добавления в запрос копии таблицы (Access назначает псевдоним для копии) и связывания полей идентичных таблиц. Соединение по отношению (или тэта-соединение) связывает данные некоторым отношением (это может быть любое отношение, исключая равенство). Соединение по отношению выполняется с помощью предложения where, а не с помощью ключевого слова SQL join. Кроме того, в окне конструктора запросов соединения по отношению не выводятся, также как они не отображаются в окне схемы данных. Важно отметить, что далеко не все возможности ACCESS SQL могут быть реализованы в окне запроса по образцу.

Создание внутреннего соединения по одному полю

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

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

Отношение "многие-ко-многим", например, связь между таблицами "Заказы" и "Товары", реализуется на основе промежуточной таблицы (в данном случае таблицы "Заказано"), которая связана с одной таблицей отношением "один-ко-многим" (таблица "Заказы" с таблицей "Заказано"), а с другой таблицей отношением "многие-к-одному" (таблица "Заказано" с таблицей "Товары").

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

Все соединения в базе данных "Борей", обозначенные линиями, которые соединяют имена полей, являются внутренними соединениями по одному полю, реализованные на основе отношений "один-ко-многим". В Access используются зарезервированные слова ANSI SQL-92 inner join для обозначения внутренних соединений, а слова left join или right join для указания внешних соединений.

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