Если ваши запросы недостаточно работают, добавление некоторых базовых SQL инструкций может помочь сосредоточиться на результатах. Давайте рассмотрим несколько типов инструкций SQL и предложения или части, которые можно изменить, чтобы получить нужные результаты.
Примечание: Статья неприменима к веб-приложениям Access — новому типу баз данных, которые создаются в Access и публикуются в Интернете.
В этой статье
Создание инструкции Select
Инструкция sql select содержит от двух до трех предложений. Предложение SELECT сообщает базе данных, где искать данные, и просит вернуть определенный результат.
Примечание: Инструкции SELECT всегда заканчиваются точкой с запятой (;) в конце последнего предложения или в строке в конце инструкции SQL.
Следующая инструкция select просит Access получить сведения из столбцов Адрес электронной почты и Компания из таблицы Контакты, в частности, где в столбце Город он находит "Seattle".
Приведенный выше запрос содержит три предложения SELECT, FROM и WHERE.
1. Предложение SELECT содержит столбцы, содержащие данные, которые нужно использовать, и имеет оператор (SELECT), за которым следуют два идентификатора (адрес электронной почты и компания). Если идентификатор содержит пробелы или специальные символы (например, "Адрес электронной почты"), заключите идентификатор в квадратные скобки.
2. Предложение FROM определяет исходную таблицу. В этом примере у него есть оператор (FROM), за которым следует идентификатор (Контакты).
3. Предложение WHERE является необязательным предложением. В примере есть оператор (WHERE), за которым следует выражение (City="Seattle").
Дополнительные сведения о запросах выбора см. в статье Создание простого запроса на выборку.
Ниже приведен список распространенных предложений SQL:
Предложение SQL |
Описание |
Обязательно ? |
SELECT |
Определяет поля, которые содержат нужные данные. |
Да |
FROM |
Определяет таблицы, которые содержат поля, указанные в предложении SELECT. |
Да |
WHERE |
Определяет условия отбора полей, которым должны соответствовать все записи, включаемые в результаты. |
Нет |
ORDER BY |
Определяет порядок сортировки результатов. |
Нет |
GROUP BY |
В инструкции SQL, которая содержит статистические функции, определяет поля, для которых в предложении SELECT не вычисляется сводное значение. |
Только при наличии таких полей |
HAVING |
В инструкции SQL, которая содержит статистические функции, определяет условия, применяемые к полям, для которых в предложении SELECT вычисляется сводное значение. |
Нет |
Каждое предложение SQL состоит из терминов. Ниже приведен список некоторых распространенных терминов SQL.
Термин SQL |
Определение |
Пример |
идентификатор |
Имя, используемое для идентификации объекта базы данных, например имя столбца. |
[Адрес электронной почты] и компания |
оператор |
Ключевое слово, которое представляет действие или изменяет его. |
AS |
константа |
Значение, которое не изменяется, например число или NULL. |
42 |
выражение |
Сочетание идентификаторов, операторов, констант и функций, предназначенное для вычисления одного значения. |
>= Товары.[Цена] |
Настройка предложения SELECT
Настройка |
Пример |
Для просмотра только отдельных значений. Используйте ключевое слово DISTINCT в предложении SELECT. |
Например, если ваши клиенты из нескольких разных филиалов, а некоторые из них имеют одинаковый номер телефона, и вы хотите просмотреть номер телефона, указанный только один раз, предложение SELECT будет выглядеть следующим образом:
|
Изменение способа отображения идентификатора в представлении таблицы для повышения удобочитаемости. Используйте оператор AS (ключевое слово, представляющее действие или изменяющее действие) с псевдонимом поля в предложении SELECT. Псевдоним поля — это имя, которое назначается полю, чтобы упростить чтение результатов. |
|
Настройка предложения FROM
Настройка |
Пример |
Можно использовать псевдоним таблицы или другое имя, присвоенное таблице в инструкции select. Псевдоним таблицы полезен, если имя таблицы длинное, особенно при наличии нескольких полей с одинаковым именем из разных таблиц. |
Чтобы выбрать данные из двух полей с именем ID, одно из которых поступает из таблицы tblCustomer, а другое из таблицы tblOrder:
Используйте оператор AS для определения псевдонимов таблиц в предложении FROM:
Затем эти псевдонимы таблиц можно использовать в предложении SELECT следующим образом:
|
Используйте соединения, чтобы объединить пары записей из двух источников данных в один результат или указать, следует ли включать записи из любой таблицы, если в связанной таблице нет соответствующей записи. Объедините таблицы, чтобы запрос объединил элементы из таблиц и исключил элементы, если в другой таблице нет соответствующей записи. |
Вот как может выглядеть предложение FROM:
|
Сведения об использовании соединений
Существует два типа соединений: внутренние и внешние соединения. Внутренние соединения чаще встречаются в запросах. При выполнении запроса с внутренним соединением в результате отображаются только те элементы, в которых в обеих объединенных таблицах существует общее значение.
Внешние соединения указывают, следует ли включать данные, в которых не существует общего значения. Внешние соединения являются направленными, то есть можно указать, следует ли включать все записи из первой таблицы, указанной в соединении (называется левым соединением), или включать все записи из второй таблицы в соединение (называется правым соединением). Внешнее соединение имеет следующий синтаксис SQL:
FROM table1 [ LEFT | RIGHT ] JOIN table2
ON table1.field1 = table2.field2
Дополнительные сведения об использовании соединений в запросе см. в статье Соединение таблиц и запросов.
Настройка предложения WHERE
Предложение WHERE содержит критерии, помогающие ограничить количество элементов, возвращаемых в запросе. Ознакомьтесь с примерами условий запроса и их работой.
Примером настройки базового предложения WHERE является ограничение результатов запроса. Предположим, что вы хотите найти номер телефона клиента и можете запомнить только его фамилию Как Бублик. В этом примере фамилии хранятся в поле LastName, поэтому синтаксис SQL будет следующим:
WHERE [LastName]='Bagel'
Предложение WHERE также используется для объединения источников данных для столбцов с соответствующими данными, но с разными типами данных. Это удобно, так как невозможно создать соединение между полями с разными типами данных. Используйте одно поле в качестве критерия для другого поля с ключевым словом LIKE . Например, если вы хотите использовать данные из таблиц Assets и Employees, только если тип ресурса в поле тип ресурса таблицы Assets содержит число 3 в поле Количество таблицы Employees, вот как будет выглядеть предложение WHERE:
WHERE field1 LIKE field2
Важно: Невозможно указать критерии для поля, используемого с агрегатной функцией в предложении WHERE. Вместо этого вы используете предложение HAVING для указания критериев для агрегированных полей.
Настройка с помощью оператора UNION
Используйте оператор UNION, если требуется просмотреть объединенное представление результатов из нескольких аналогичных запросов на выборку. Например, если в базе данных есть таблицы Products и Services, и у них есть три поля: эксклюзивное предложение, продукт или услуга, цена, гарантия или гарантия. Хотя в таблице "Продукты" содержатся сведения о гарантии, а в таблице "Службы" содержатся сведения о гарантиях, основные сведения совпадают. Запрос объединения можно использовать для объединения трех полей из двух таблиц следующим образом:
SELECT name, price, warranty, exclusive_offer
FROM Products UNION ALL SELECT name, price, guarantee, exclusive_offer FROM Services;
При выполнении запроса данные из каждого набора соответствующих полей объединяются в одно поле вывода. Чтобы включить все повторяющиеся строки в результаты, используйте оператор ALL.
Примечание: Инструкция Select должна иметь одинаковое количество полей вывода, в том же порядке и с одинаковыми или совместимыми типами данных. В запросах на объединение числовой и текстовый типы данных являются совместимыми.
Дополнительные сведения о запросах объединения см. в статье Использование запроса объединения для просмотра единого результата из нескольких запросов.