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