В начало
Введение
Основные операции с базами данных
Структура таблиц и баз данных
Операции с файлами
Запросы и фильтры
Формы и отчеты
Вычисления
Вывод результатов
Дополнительные возможности и программирование
Корпоративная работа
Access SQL
|
Access SQL
Язык SQL (Structured Query Language, язык структурированных
запросов) представляет собой наиболее распространенный язык управления базами
данных типа клиент-сервер. Основное достоинство SQL заключается в том, что
он унифицирован: стандартный набор инструкций SQL можно использовать в любой
совместимой с SQL системе управления базами данных.
При разработке баз данных Access знание языка SQL желательно,
но не обязательно. Тем не менее, знакомство даже с основными принципами
этого языка поможет сделать управление вашей базой данных более гибким и
универсальным.
Нужно отметить, что существует несколько разновидностей языка
SQL, между которыми хотя и есть некоторые различия, но основа у них общая
— это пять команд: SELECT , INSERT , DELETE ,
UPDATE , CREATE .
В терминологии SQL запрос представляет собой инструкцию, то
есть набор команд, определенным образом влияющий на отбор данных. Каждая
инструкция начинается командой, например одной из вышеперечисленных, и заканчивается
точкой с запятой, указывающей на ее окончание. Между командой и концом инструкции
находятся предложения со своими аргументами и аргументами инструкции. Предложения
— это отдельные команды, которые позволяют выполнять те или иные операции
с данными, включенными в инструкции.
В этой главе будут рассмотрены ключевые слова SQL, синтаксис,
правила написания основных инструкций, способы объединения таблиц, создание
запросов на изменение.
Запрос: Создание в режиме SQL
Язык SQL является универсальным средством создания запросов
любой сложности. В то же время для создания запроса в режиме SQL необходимо
хотя бы минимальное знакомство с языком и его структурой.
(См. также разделы «Запрос: Создание в режиме конструктора»
и «Запрос: Создание с помощью мастера» главы «Запросы и фильтры».)
Шаг за шагом
- Нажмите кнопку Запросы (Queries) на левой панели окна базы
данных.
- Нажмите кнопку Создать (New) на панели инструментов окна
базы данных.
- В списке открывшегося окна диалога выберите пункт Конструктор
(Design View) и нажмите кнопку ОК. Откроется окно конструктора
запроса, в котором будет открыто окно диалога Добавление таблицы
(Show Table).
- В окне диалога Добавление таблицы (Show Table) нажмите кнопку
Закрыть (Close).
- Нажмите кнопку Вид (View) на панели инструментов Access.
Откроется окно запроса в режиме SQL.
- Удалите заготовку инструкции
SELECT; , если создаваемая
инструкция не предназначена для выборки или запроса на создание таблицы
(см. разделы «Инструкция: SELECT» и «Инструкция: SELECT...INTO»).
- Введите команду инструкции, которую необходимо выполнить первой.
Введите все необходимые аргументы и предложения. Завершите инструкцию
точкой с запятой (
; ).
- Нажмите кнопку Запуск (Run) на панели инструментов Access.
- Просмотрите результат выполнения запроса и нажмите кнопку Сохранить
(Save) на панели инструментов Access.
СОВЕТ
Чтобы упростить себе задачу, на шаге 4 в окне диалога Добавление
таблицы (Show Table) можно выбрать и перетащить на бланк запроса таблицы,
на основе которых будет строиться новый запрос.
СОВЕТ
Удобнее всего создавать запросы с использованием стандартных
инструментов (см. разделы «Запрос: Создание в режиме конструктора» и «Запрос:
Создание с помощью мастера» главы «Запросы и фильтры»), а затем редактировать
их в режиме SQL.
ВНИМАНИЕ
Все имена полей, которые содержат пробелы или запятые, необходимо
заключать в квадратные скобки ([] ).
Инструкция: CREATE TABLE
Инструкция CREATE TABLE предназначена для создания
новой таблицы.
Синтаксис:
CREATE [TEMPORARY]
TABLE таблица (
поле1 тип [(размер)] [NOT NULL]
[WITH COMPRESSION | WITH COMP]
[индекс1] [, поле2 тип [(размер)]
[NOT NULL] [индекс2] [, ...]]
[, CONSTRAINT СоставнойИндекс [, ...]]
);
Аргументы:
таблица — имя создаваемой таблицы;
поле1, поле2 и т. д. — имена полей, создаваемых
в новой таблице;
тип — тип полей в новой таблице;
размер — размер поля в знаках (только для текстовых
и числовых полей);
индекс1 , индекс2 — указывает на создание
простого индекса;
СоставнойИндекс — указывает на создание составного
индекса.
Атрибуты:
NOT NULL — указывает на то, что поле является обязательным;
TEMPORARY — позволяет создать временную таблицу, которая
обладает всеми свойствами обычной таблицы, но удаляется по завершении
сеанса работы с базой данных;
WITH COMPRESSION — используется только с типами данных
CHARACTER, MEMO (TEXT) и их аналогов, позволяя сжимать
двухбайтовые знаки в формате Unicode в однобайтовые, уменьшая тем самым
размер базы данных.
ПРИМЕЧАНИЕ
Предложение CONSTRAINT предназначено для задания
разного рода ограничений. Однако основной функцией этого предложений является
создание ключа. Аналогичные функции выполняет инструкция CREATE INDEX .
ВНИМАНИЕ
В базах данных, которые не поддерживают инструкций DDL (Data
Definition Language, язык определения данных) ядра базы данных Microsoft
Jet, инструкцию CREATE TABLE использовать нельзя.
Шаг за шагом
- Нажмите кнопку Запросы (Queries) на левой панели окна базы
данных.
- Нажмите кнопку Создать (New) на панели инструментов окна
базы данных.
- В списке открывшегося окна диалога выберите пункт Конструктор
(Design View) и нажмите кнопку ОК. Откроется окно конструктора
запроса, в котором будет открыто окно диалога Добавление таблицы
(Show Table).
- В окне диалога Добавление таблицы (Show Table) нажмите кнопку
Закрыть (Close).
- Нажмите кнопку Вид (View) на панели инструментов Access.
Откроется окно запроса в режиме SQL.
- Удалите заготовку инструкции
SELECT; .
- Введите команду
CREATE , нажмите клавишу Пробел
и, если таблица является временной, введите ключевое слово TEMPORARY .
Нажмите клавишу Enter.
- Введите ключевое слово
TABLE , нажмите клавишу Пробел
и введите имя новой таблицы. Нажмите клавишу Пробел.
- Введите имя поля, его тип, задайте необходимость обязательного заполнения,
сжатия данных и индекса поля. Повторите шаг для всех требуемых полей.
Разделителем между полями является запятая (
, ).
- Введите команду
CONSTRAINT и задайте составной индекс.
- Введите точку с запятой (
; ).
- Нажмите кнопку Запуск (Run) на панели инструментов Access.
- Просмотрите результат выполнения запроса и нажмите кнопку Сохранить
(Save) на панели инструментов Access.
Инструкция: DELETE
Инструкция DELETE позволяет создать запрос на
удаление записей из одной или нескольких таблиц. Таблицы, из которых должно
производиться удаление, включаются в предложение FROM (см.
раздел «Предложение: FROM»), a условие для удаления — в предложение
WHERE (см. раздел «Предложение: WHERE»).
Синтаксис:
DELETE [таблица.*]
FROM таблица
WHERE УсловиеОтбора;
Аргументы:
таблица — обозначает таблицы, из которых производится
удаление данных;
УсловиеОтбора - определяет условие удаления записей.
ПРИМЕЧАНИЕ
В инструкции DELETE аргумент в команде DELETE
не обязателен, поскольку он фактически дублируется аргументом в предложении
FROM .
Шаг за шагом
- Нажмите кнопку Запросы (Queries) на левой панели окна базы
данных.
- Нажмите кнопку Создать (New) на панели инструментов окна
базы данных.
- В списке открывшегося окна диалога выберите пункт Конструктор
(Design View) и нажмите кнопку ОК. Откроется окно конструктора
запроса, в котором будет открыто окно диалога Добавление таблицы
(Show Table).
- В окне диалога Добавление таблицы (Show Table) нажмите кнопку
Закрыть (Close).
- Нажмите кнопку Вид (View) на панели инструментов Access.
Откроется окно запроса в режиме SQL.
- Удалите заготовку инструкции
SELECT; .
- Введите команду
DELETE , нажмите клавишу Пробел
и введите имя таблицы, в которой необходимо обновить данные. Нажмите
клавишу Enter.
- Введите ключевое слово
FROM , нажмите клавишу Пробел
и введите имя таблицы, в которой необходимо удалить записи. Нажмите
клавишу Enter.
- Введите ключевое слово
WHERE и выражение, определяющее
условие отбора записей, в которых будут удалены данные.
- Введите точку с запятой (
; ).
- Нажмите кнопку Запуск (Run) на панели инструментов Access.
- Просмотрите результат выполнения запроса и нажмите кнопку Сохранить
(Save) на панели инструментов Access.
ПРИМЕЧАНИЕ
Для связанных таблиц удаление записи из основной таблицы приведет
к их каскадному удалению из всех дочерних таблиц.
СОВЕТ
Для удаления не всей записи, а только ее поля можно воспользоваться
запросом на обновление, который позволяет заменить исходные значения полей
на значения Null.
ВНИМАНИЕ
Записи, удаленные с помощью запроса на удаление, не подлежат
восстановлению. Убедитесь в корректности этого запроса с помощью запроса
на выборку с теми же условиями отбора (см. раздел Инструкция: SELECT»).
Инструкция: INSERT INTO
Инструкция INSERT INTO предназначена для добавления
одной или нескольких записей в конец таблицы. Данная инструкция, если она
присутствует, должна находиться перед инструкцией SELECT .
Синтаксис инструкции для добавления нескольких записей:
INSERT INTO назначение [(поле1[, поле2[, ...]])]
[IN ВнешняяБазаДанных]
SELECT [источник.]поле1[, поле2[,
...]
FROM выражение;
Синтаксис инструкции для добавления одной записи:
INSERT INTO назначение [(поле1[, поле2[, ...]])]
VALUES (значение1[, значение2[, ...]);
Аргументы:
назначение — имя таблицы (или запроса), в которую добавляются
записи;
поле1 , поле2 и т. д. — имена полей, в
которые добавляются данные, если они следуют за командой INSERT
INTO , или имена полей, из которых извлекаются данные, если они
следуют за командой SELECT; .
источник — имя таблицы, из которой копируются записи;
значение1 , значение2 и т. д. — значения,
добавляемые в указанные ноля новой записи. Каждое значение вставляется
в соответствующее поле в списке: значение1 — в поле1 ,
значение2 — в поле2 и т. д. Значения текстовых
полей заключаются в кавычки, а для разделения значений необходимо использовать
запятые;
ВнешняяБазаДанных — путь и имя внешней базы данных,
в которой содержатся таблицы. Если все таблицы находятся в текущей базе
данных, аргумент можно опустить;
выражение — имя таблицы или имена таблиц, откуда вставляются
данные. Может быть именем отдельной таблицы, результатом операции или
сохраненным запросом.
ВНИМАНИЕ
Все поля записи, в которые будет помещено значение, и значения
для этих полей должны быть определены. Если поля не определены, им будут
присвоены значения по умолчанию или значение Null.
ВНИМАНИЕ
Если таблица, в которую добавляются записи, имеет ключевое
поле, то в него должны добавляться непустые уникальные значения. В противном
случае запись не будет вставлена.
Шаг за шагом
- Нажмите кнопку Запросы (Queries) на левой панели окна базы
данных.
- Нажмите кнопку Создать (New) на панели инструментов окна
базы данных.
- В списке открывшегося окна диалога выберите пункт Конструктор
(Design View) и нажмите кнопку ОК. Откроется окно конструктора
запроса, в котором будет открыто окно диалога Добавление таблицы
(Show Table).
- В окне диалога Добавление таблицы (Show Table) нажмите кнопку
Закрыть (Close).
- Нажмите кнопку Вид (View) на панели инструментов Access.
Откроется окно запроса в режиме SQL.
- Удалите заготовку инструкции
SELECT; .
- Введите команду
INSERT INTO и имена таблиц и полей,
в которые необходимо поместить отобранные записи. Нажмите клавишу
Пробел.
- Введите команду
SELECT , нажмите клавишу Пробел
и введите имена таблиц и полей, из которых необходимо отобрать данные.
Нажмите клавишу Enter.
- Введите ключевое слово
FROM и выражение, на основе
которого будут отбираться данные.
- Введите точку с запятой (
; ).
- Нажмите кнопку Запуск (Run) на панели инструментов Access.
- Просмотрите результат выполнения запроса и нажмите кнопку Сохранить
(Save) на панели инструментов Access.
СОВЕТ
Для создания нового вычисляемого поля нужно указать его в предложении
VALUES .
Инструкция: SELECT
Как правило, все запросы начинаются с инструкции SELECT ,
которая является одной из базовых команд и используется для получения выборки
из базы данных.
Синтаксис:
SELECT [предикат] {*[таблица.*|[таблица.]
поле1 [AS псевдоним1] [.[таблица.]
поле2 [AS псевдоним2] [, ...]]}
FROM выражение [, ...] [IN ВнешняяБазаДанных]
[WHERE ...]
[GROUP BY ...]
[HAVING ...]
[ORDER BY ...]
[WITH OWNERACCESS OPTION];
Аргументы:
предикат — представляет собой одно из четырех слов:
ALL , DISTINCT , DISTINCTROW или
ТОР . Этот аргумент предназначен для отбора данных по определенному
критерию. Устанавливаемый по умолчанию предикат ALL позволяет
отобрать все записи. Предикат DISTINCT позволяет исключить
записи, которые содержат повторяющиеся значения в выбранных полях, то
есть для включения записи в результат выполнения запроса значения в
каждом поле должны быть уникальными. Предикат DISTINCTROW
предназначен для исключения целиком повторяющихся записей, а предикат
ТОР возвращает определенное число записей, находящихся
в начале или в конце диапазона, заданного предложением ORDER BY;
- «звездочка» (
* ) — обозначает все поля заданной таблицы
или таблиц;
таблица — имя таблицы, из которой должны быть отобраны
записи;.
поле1 , поле2 и т. д. — поля, из которых
должны быть отобраны данные. Если указано несколько полей, данные будут
извлекаться в указанном порядке;
псевдоним1 , псевдоним2 — имена соответствующих
полей, которые заменят имена исходных полей;
выражение — имя таблицы или имена таблиц, содержащих
отбираемые данные, либо выражение для определения имен одной или нескольких
таблиц, содержащих отбираемые данные;
ВнешняяБазаДанных — имя базы данных, которая содержит
таблицы, указанные с помощью аргумента выражение, если они не находятся
в текущей базе данных.
Шаг за шагом
- Нажмите кнопку Запросы (Queries) на левой панели окна базы
данных.
- Нажмите кнопку Создать (New) на панели инструментов окна
базы данных.
- В списке открывшегося окна диалога выберите пункт Конструктор
(Design View) и нажмите кнопку ОК. Откроется окно конструктора
запроса, в котором будет открыто окно диалога Добавление таблицы
(Show Table).
- В окне диалога Добавление таблицы (Show Table) нажмите кнопку
Закрыть (Close).
- Нажмите кнопку Вид (View) на панели инструментов Access.
Откроется окно запроса в режиме SQL.
- Поместите курсор после команды
SELECT и перед точкой
с запятой, нажмите клавишу Пробел и введите необходимый предикат.
Нажмите клавишу Пробел.
- Введите имена таблиц и полей, из которых необходимо отобрать данные.
Нажмите клавишу Enter.
- Введите ключевое слово
AS , нажмите клавишу Пробел
и через запятую введите имена полей, в которые будут выведены отобранные
данные. Нажмите клавишу Enter.
- Введите ключевое слово
FROM и имена таблиц, из которых
производится отбор данных. Нажмите клавишу Enter.
- Введите ключевое слово
IN и имя базы данных, которая
содержит таблицу, указанную после слова FROM .
- Введите остальные параметры.
- Нажмите кнопку Запуск (Run) на панели инструментов Access.
- Просмотрите результат выполнения запроса и нажмите кнопку Сохранить
(Save) на панели инструментов Access.
ПРИМЕЧАНИЕ
Отсутствие предиката воспринимается как команда отбора всех
записей.
ПРИМЕЧАНИЕ
Минимальный синтаксис инструкции SELECT выглядит
следующим образом: SELECT поле FROM таблица; .
СОВЕТ
Для выборки всех полей таблицы нужно использовать символ-заменитель
«звездочка» (* ). Например, SELECT * FROM Сотрудники; .
ВНИМАНИЕ
Если несколько таблиц, включенных в предложение FROM ,
содержат одноименные поля, то перед именем такого поля следует ввести имя
таблицы и точку (. ).
Пример инструкции SELECT , которая позволяет объединить
таблицы Типы и Товары по полю КодТипа:
SELECT Категория, Марка
FROM Типы INNER JOIN Товары
ON Типы.КодТипа = Товары.КодТипа;
Инструкция: SELECT...INTO
Инструкция SELECT...INTO предназначена для создания
запроса на создание таблицы. Данная инструкция может быть первой в запросе.
Запрос на создание таблицы используется для архивирования записей, создания
резервных копий таблицы, копий для экспорта в другую базу данных, а также
в качестве основы отчета, отображающего данные за конкретный период времени.
Синтаксис:
SELECT поле1[, поле2[, ... ]]
INTO НоваяТаблица [IN ВнешняяБазаДанных]
FROM источник;
Аргументы:
поле1 , поле2 и т. д. — имена полей, которые
следует скопировать в новую таблицу;
НоваяТаблица — имя создаваемой таблицы;
ВнешняяБазаДанных — путь и имя внешней базы данных,
в которой содержатся таблицы. Если все таблицы находятся в текущей базе
данных, аргумент можно опустить;
источник — имена существующих таблиц, из которых отбираются
записи.
ВНИМАНИЕ
Если имя НоваяТаблица совпадает с именем существующей
таблицы, возникает ошибка, о которой Access выдает сообщение.
Шаг за шагом
- Нажмите кнопку Запросы (Queries) на левой панели окна базы
данных.
- Нажмите кнопку Создать (New) на панели инструментов окна
базы данных.
- В списке открывшегося окна диалога выберите пункт Конструктор
(Design View) и нажмите кнопку ОК. Откроется окно конструктора
запроса, в котором будет открыто окно диалога Добавление таблицы
(Show Table).
- В окне диалога Добавление таблицы (Show Table) нажмите кнопку
Закрыть (Close).
- Нажмите кнопку Вид (View) на панели инструментов Access.
Откроется окно запроса в режиме SQL.
- Поместите курсор после команды
SELECT и перед точкой
с запятой, нажмите клавишу Пробел и через запятую введите имена
полей, которые необходимо вставить в новую таблицу. Нажмите клавишу
Enter.
- Введите ключевое слово
INTO , нажмите клавишу Пробел
и введите имя новой таблицы. Если таблица находится в другой базе данных,
введите ключевое слово IN , нажмите клавишу Пробел,
введите путь и имя нужной базы данных. Нажмите клавишу Enter.
- Введите ключевое слово
FROM и имена таблиц, из которых
производится отбор данных. Нажмите клавишу Enter.
- Введите остальные параметры.
- Нажмите кнопку Запуск (Run) на панели инструментов Access.
- Просмотрите результат выполнения запроса и нажмите кнопку Сохранить
(Save) на панели инструментов Access.
СОВЕТ
Чтобы добавить данные в существующую таблицу, необходимо использовать
инструкцию INSERT INTO (см. раздел «Инструкция: INSERT INTO»).
СОВЕТ
Для предварительного просмотра данных, отбираемых в запросе
на создание таблицы, можно использовать инструкцию SELECT с
теми же условиями отбора (см. раздел «Инструкция: SELECT»).
Инструкция: UPDATE
Инструкция UPDATE позволяет создать запрос на
обновление, изменяющий значения полей указанной таблицы на основе заданного
условия отбора. Инструкцию UPDATE удобно использовать, если
требуется изменение большого числа записей или если подлежащие изменению
записи находятся в разных таблицах.
Синтаксис:
UPDATE таблица
SET НовоеЗначение
WHERE УсловиеОтбора;
Аргументы:
таблица — таблица, данные в которой нужно изменить;
НовоеЗначение — выражение, которое определяет значение,
вставляемое в указанное поле обновленных записей;
УсловиеОтбора — выражение, которое реализует операцию
отбора записей, предназначенных для внесения изменений.
ВНИМАНИЕ
При выполнении инструкции UPDATE изменяются только
те записи, которые удовлетворяют условию УсловиеОтбора .
Шаг за шагом
- Нажмите кнопку Запросы (Queries) на левой панели окна базы
данных.
- Нажмите кнопку Создать (New) на панели инструментов окна
базы данных.
- В списке открывшегося окна диалога выберите пункт Конструктор
(Design View) и нажмите кнопку ОК. Откроется окно конструктора
запроса, в котором будет открыто окно диалога Добавление таблицы
(Show Table).
- В окне диалога Добавление таблицы (Show Table) нажмите кнопку
Закрыть (Close).
- Нажмите кнопку Вид (View) на панели инструментов Access.
Откроется окно запроса в режиме SQL.
- Удалите заготовку инструкции
SELECT; .
- Введите команду
UPDATE , нажмите клавишу Пробел
и введите имя таблицы, в которой необходимо обновить данные. Нажмите
клавишу Enter.
- Введите ключевое слово
SET , нажмите клавишу Пробел
и введите выражение для вычисления нового значения. Нажмите клавишу
Enter.
- Введите ключевое слово
WHERE и выражение, задающее
условие отбора записей, в которых будут заменены данные,
- Введите точку с запятой (
; ).
- Нажмите кнопку Запуск (Run) на панели инструментов Access.
- Просмотрите результат выполнения запроса и нажмите кнопку Сохранить
(Save) на панели инструментов Access.
ВНИМАНИЕ
Восстановить записи, измененные запросом на обновление, невозможно.
Убедитесь в корректности обновления с помощью запроса на выборку с теми
же условиями отбора (см. раздел «Инструкция: SELECT»).
Пример инструкции UPDATE , увеличивающей стоимость
заказа на 10%, а стоимость доставки — на 3% для получателей из Литвы:
UPDATE Заказы
SET СуммаЗаказа = СуммаЗаказа * 1.1,
СтоимостьДоставки = СтоимостьДоставки * 1.03
WHERE СтранаПолучателя = "Литва";
Предложение: FROM
Предложение FROM всегда присутствует в инструкции
SELECT , задавая предназначенные для выборки таблицы или запросы,
при этом порядок следования таблиц и запросов несущественен.
(См. также раздел «Инструкция: SELECT».)
Синтаксис:
SELECT СписокПолей
FROM выражение [IN ВнешняяБазаДанных]
Аргументы:
выражение — имя таблицы или имена таблиц, содержащих
отбираемые данные, либо выражение для определения имен одной или нескольких
таблиц, содержащих отбираемые данные;
ВнешняяБазаДанных — имя базы данных, которая содержит
таблицы, указанные с помощью аргумента выражение, если они не находятся
в текущей базе данных.
Шаг за шагом
- Нажмите кнопку Запросы (Queries) на левой панели окна базы
данных.
- Нажмите кнопку Создать (New) на панели инструментов окна
базы данных.
- В списке открывшегося окна диалога выберите пункт Конструктор
(Design View) и нажмите кнопку ОК. Откроется окно конструктора
запроса, в котором будет открыто окно диалога Добавление таблицы
(Show Table).
- В окне диалога Добавление таблицы (Show Table) нажмите кнопку
Закрыть (Close).
- Нажмите кнопку Вид (View) на панели инструментов Access.
Откроется окно запроса в режиме SQL.
- Поместите курсор после команды
SELECT и перед точкой
с запятой, нажмите клавишу Пробел и через запятую введите имена
полей, которые необходимо вставить в новую таблицу. Нажмите клавишу
Enter.
- Поместите курсор после аргумента
СписокПолей . Нажмите
клавишу Enter.
- Введите команду
FROM и нажмите клавишу Пробел.
- Введите имена таблиц или запросов, в которых содержатся необходимые
для дальнейшей работы поля. Разделителем между именами таблиц является
запятая (
, ).
- Если таблица находится в другой базе данных, введите ключевое слово
IN , путь и имя необходимой базы данных.
- Завершите ввод остальных параметров инструкции.
Пример предложения FROM показывает как отобрать
поля данных Фамилия и Имя из таблицы Сотрудники :
SELECT Фамилия, Имя
FROM Сотрудники;
Предложение: INNER JOIN
Предложение INNER JOIN позволяет объединить записи
из двух таблиц, если ключевые поля этих таблиц содержат одинаковые значения.
Предложение INNER JOIN используется в предложениях FROM .
Синтаксис:
FROM таблица1
INNER JOIN таблица2
ON таблица1.поле1 оператор таблица2.поле2
Аргументы:
таблица1 , таблица2 — имена таблиц, поля
которых подлежат объединению;
поле1 , поле2 — имена объединяемых полей;
оператор — один из операторов сравнения: равно (= ),
меньше (< ), больше (> ), меньше или равно (<= ),
больше или равно (>= ), не равно (<> ).
ВНИМАНИЕ
Если объединяемые поля не являются числовыми, то они должны
иметь одинаковый тип данных. Числовые поля могут объединяться с числовым
полем подобного типа. Например, поле типа Счетчик (Autonumber) можно
объединить с полем типа Long Integer. Однако нельзя объединить поля
типа Single и Double.
Шаг за шагом
- Нажмите кнопку Запросы (Queries) на левой панели окна базы
данных.
- Нажмите кнопку Создать (New) на панели инструментов окна
базы данных.
- В списке открывшегося окна диалога выберите пункт Конструктор
(Design View) и нажмите кнопку ОК. Откроется окно конструктора
запроса, в котором будет открыто окно диалога Добавление таблицы
(Show Table).
- В окне диалога Добавление таблицы (Show Table) нажмите кнопку
Закрыть (Close).
- Нажмите кнопку Вид (View) на панели инструментов Access.
Откроется окно запроса в режиме SQL.
- Введите начало инструкции, частью которой будет предложение
INNER JOIN .
- Поместите курсор в конце предложения
FROM и нажмите
клавишу Enter.
- Введите команду
INNER JOIN и нажмите клавишу Пробел.
- Введите имя таблицы, поля которой нужно объединить с полями таблицы,
указанной в предложении
FROM . Нажмите клавишу Enter.
- Введите ключевое слово
ON и имя первого объединяемого
поля из таблицы, указанной в предложении FROM . Нажмите
клавишу Пробел.
- Введите оператор сравнения и имя второго объединяемого поля.
- Завершите ввод остальных параметров инструкции.
ПРИМЕЧАНИЕ
Для левого внешнего объединения, то есть объединения, которое
включает все записи из первой (левой) таблицы, даже если в ней нет совпадающих
значений для записей из второй (правой) таблицы, используется предложение
LEFT JOIN . При правом внешнем объединении используется предложение
RIGHT JOIN .
Пример предложения INNER JOIN , в котором происходит
объединение таблиц Типы и Товары по полю
КодТипа :
SELECT Категория, Марка
FROM Типы INNER JOIN Товары
ON Типы.КодТипа = Товары.КодТипа;
Предложение: ORDER BY
Предложение ORDER BY позволяет сортировать записи
запроса в порядке возрастания или убывания на основе значений указанного
поля или полей. Предложение ORDER BY не является обязательным
и может не входить в те или иные инструкции. Однако при включении в инструкцию
предложение ORDER BY всегда является последним.
(См. также раздел «Инструкция: SELECT».)
Синтаксис предложения ORDER BY , входящего в инструкцию
SELECT :
SELECT СписокПолей
FROM таблица
WHERE УсловиеОтбора
[ORDER BY поле1 [ASC | DESC ]
[, поле2 [ASC | DESC ]][, ...]]];
Аргументы:
поле1 , поле2 и т. д. — имена полей, по
которым выполняется сортировка;
- ключевое слово
DESC , указанное после имени поля, позволяет
произвести сортировку в убывающем порядке;
- ключевое слово
ASC , указанное после имени поля, позволяет
произвести сортировку в возрастающем порядке. Тот же эффект достигается,
если это слово опустить.
Шаг за шагом
- Нажмите кнопку Запросы (Queries) на левой панели окна базы
данных.
- Нажмите кнопку Создать (New) на панели инструментов окна
базы данных.
- В списке открывшегося окна диалога выберите пункт Конструктор
(Design View) и нажмите кнопку ОК. Откроется окно конструктора
запроса, в котором будет открыто окно диалога Добавление таблицы
(Show Table).
- В окне диалога Добавление таблицы (Show Table) нажмите кнопку
Закрыть (Close).
- Нажмите кнопку Вид (View) на панели инструментов Access.
Откроется окно запроса в режиме SQL.
- Введите начало инструкции, частью которой будет предложение
ORDER BY .
- Введите команду
ORDER BY и нажмите клавишу Пробел.
- Введите имя поля, по которому нужно сортировать данные, и задайте
порядок сортировки. Повторите шаг для всех полей, по которым нужно провести
сортировку. Разделителем между полями является запятая (
, ).
- Завершите ввод остальных параметров инструкции.
Пример предложения ORDER BY для сортировки таблицы
Сотрудники сначала по убыванию значений записей в поле
Оклад , а затем по возрастанию значений записей в поле
Фамилия :
FROM Сотрудники
ORDER Оклад BY DESC, Фамилия;
ВНИМАНИЕ
Сортировка по полям типа Мемо (Memo) и Поле объекта
OLE (OLE Object) невозможна. Указание таких полей в качестве аргументов
приведет к ошибке.
ПРИМЕЧАНИЕ
При сортировке по нескольким полям сначала записи сортируются
по первому полю в списке ORDER BY , затем записи, имеющие совпадающие
значения в первом поле, сортируются по второму полю и т. д.
Предложение: WHERE
Предложение WHERE указывает, какие записи из таблиц,
перечисленных в предложении FROM , нужно включить в результат
выполнения инструкции SELECT , UPDATE или
DELETE . Если предложение FROM не задано, в результат
будут включены все записи. Предложение WHERE не является обязательным
и может отсутствовать в инструкции, однако при его включении оно всегда
следует за предложением FROM .
Синтаксис предложения WHERE , входящего в инструкцию
SELECT :
SELECT СписокПолей
FROM выражение
WHERE УсловиеОтбора
Аргумент УсловиеОтбора представляет собой выражение
для отбора записей, включаемых в результат выполнения запроса.
ПРИМЕЧАНИЕ
В аргументе УсловиеОтбора могут использоваться
различные арифметические операции и операции сравнения. Например, следующее
предложение позволяет отобрать всех клиентов в возрасте от 18 до 30 лет:
WHERE Возраст Between 18 And 30 . В предложении может содержаться
до 40 выражений, которые должны быть связаны логическими операторами типа
And или Or . Если в аргументе используются даты,
они должны быть представлены в американском формате (5/10/98 )
и располагаться между символами «фунта» (# ). При любом другом
формате даты, который поддерживает Microsoft Windows, нужно использовать
функцию DateValue (см. пример этого раздела).
Шаг за шагом
- Нажмите кнопку Запросы (Queries) на левой панели окна базы
данных.
- Нажмите кнопку Создать (New) на панели инструментов окна
базы данных.
- В списке открывшегося окна диалога выберите пункт Конструктор
(Design View) и нажмите кнопку ОК. Откроется окно конструктора
запроса, в котором будет открыто окно диалога Добавление таблицы
(Show Table).
- В окне диалога Добавление таблицы (Show Table) нажмите кнопку
Закрыть (Close).
- Нажмите кнопку Вид (View) на панели инструментов Access.
Откроется окно запроса в режиме SQL.
- Введите начало инструкции, частью которой будет предложение
WHERE .
- Поместите курсор после предложения
FROM и нажмите клавишу
Enter.
- Введите команду
WHERE и нажмите клавишу Пробел.
- Введите выражение, которое позволит отобрать необходимые записи.
- Завершите ввод остальных параметров инструкции.
Пример для предложения WHERE , позволяющий отобрать
из таблицы Заказы все записи, в которых значения поля
Сумма заказа больше 100 или значение поля ДатаИсполнения
равно 5/10/98 .
SELECT *
FROM Заказы
WHERE [Сумма заказа] > 100
OR ДатаИсполнения = DateValue("5.10.98");
Предложение: UNION
Предложение UNION предназначено для объединения
нескольких несвязанных таблиц или результатов выполнения запросов. Операция
позволяет объединить в любом сочетании таблицы или результаты выполнения
запросов (или результаты выполнения инструкций SELECT ).
Синтаксис:
[TABLE] запрос1 UNION [ALL]
[TABLE] запрос2 [UNION [ALL]
[TABLE] зaпpocN [... ]]
Аргументы:
запрос1 , запрос2 и т. д. — имя сохраненного
запроса или имя сохраненной таблицы, перед которой ставится зарезервированное
слово TABLE ;
- предикат
ALL позволяет возвратить все записи. Если
предикат опущен, то повторяющиеся записи будут удалены.
ПРИМЕЧАНИЕ
Запросы, включенные в предложение UNION , должны
отбирать одинаковое число полей; при этом типы данных и размеры полей не
обязательно должны совпадать.
Шаг за шагом
- Нажмите кнопку Запросы (Queries) на левой панели окна базы
данных.
- Нажмите кнопку Создать (New) на панели инструментов окна
базы данных.
- В списке открывшегося окна диалога выберите пункт Конструктор
(Design View) и нажмите кнопку ОК. Откроется окно конструктора
запроса, в котором будет открыто окно диалога Добавление таблицы
(Show Table).
- В окне диалога Добавление таблицы (Show Table) нажмите кнопку
Закрыть (Close).
- Нажмите кнопку Вид (View) на панели инструментов Access.
Откроется окно запроса в режиме SQL.
- Удалите заготовку инструкции
SELECT; .
- Введите ключевое слово
TABLE и укажите имя таблицы
(или запроса). Нажмите клавишу Пробел.
- Введите команду
UNION и укажите, если необходимо, предикат
объединения. Нажмите клавишу Пробел.
- Повторите шаги 7 и 8 для всех таблиц, которые нужно объединить.
- Завершите ввод остальных параметров инструкции.
Пример предложения UNION , в котором объединяются
существующая таблица Новые счета и результат выполнения инструкции
SELECT :
TABLE [Новые счета] UNION ALL
SELECT *
FROM Клиенты
WHERE СуммаЗаказа > 1000;
|