MyTetra Share
Делитесь знаниями!
Access SQL. Основные понятия, лексика и синтаксис
Время создания: 10.10.2019 07:12
Текстовые метки: Access, SQL
Раздел: !Закладки - MSO - Access
Запись: xintrea/mytetra_db_adgaver_new/master/base/1570680723sdmc5bqruc/text.html на raw.githubusercontent.com



Access SQL. Основные понятия, лексика и синтаксис

Access для Office 365 Access 2019 Access 2016 Access 2013 Access 2010 Access 2007


Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).


Для извлечения данных из базы данных используется язык SQL. SQL — это язык программирования, который очень напоминает английский, но предназначен для программ управления базами данных. SQL используется в каждом запросе в Access.


Понимание принципов работы SQL помогает создавать более точные запросы и упрощает исправление запросов, которые возвращают неправильные результаты.


Это статья из цикла статей о языке SQL для Access. В ней описаны основы использования SQL для выборки данных и приведены примеры синтаксиса SQL.

В этой статье


Что такое SQL?


Основные предложения SQL: SELECT, FROM и WHERE


Сортировка результатов: предложение ORDER BY


Работа со сводными данными: предложения GROUP BY и HAVING


Объединение результатов запроса: оператор UNION


Что такое SQL?


SQL — это язык программирования, предназначенный для работы с наборами фактов и отношениями между ними. В программах управления реляционными базами данных, таких как Microsoft Office Access, язык SQL используется для работы с данными. В отличие от многих языков программирования, SQL удобочитаем и понятен даже новичкам. Как и многие языки программирования, SQL является международным стандартом, признанным такими комитетами по стандартизации, как ISO и ANSI.


На языке SQL описываются наборы данных, помогающие получать ответы на вопросы. При использовании SQL необходимо применять правильный синтаксис. Синтаксис — это набор правил, позволяющих правильно сочетать элементы языка. Синтаксис SQL основан на синтаксисе английского языка и имеет много общих элементов с синтаксисом языка Visual Basic для приложений (VBA).


Например, простая инструкция SQL, извлекающая список фамилий контактов с именем Mary, может выглядеть следующим образом:


SELECT Last_Name

FROM Contacts

WHERE First_Name = 'Mary';


Примечание: Язык SQL используется не только для выполнения операций над данными, но еще и для создания и изменения структуры объектов базы данных, например таблиц. Та часть SQL, которая используется для создания и изменения объектов базы данных, называется языком описания данных DDL. Язык DDL не рассматривается в этой статье. Дополнительные сведения см. в статье Создание и изменение таблиц или индексов с помощью запроса определения данных.

Инструкции SELECT


Инструкция SELECT служит для описания набора данных на языке SQL. Она содержит полное описание набора данных, которые необходимо получить из базы данных, включая следующее:


таблицы, в которых содержатся данные;


связи между данными из разных источников;


поля или вычисления, на основе которых отбираются данные;


условия отбора, которым должны соответствовать данные, включаемые в результат запроса;


необходимость и способ сортировки.


Предложения SQL


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


Предложение SQL


Описание


Обязательное


SELECT


Определяет поля, которые содержат нужные данные.


Да


FROM


Определяет таблицы, которые содержат поля, указанные в предложении SELECT.


Да


WHERE


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


Нет


ORDER BY


Определяет порядок сортировки результатов.


Нет


GROUP BY


В инструкции SQL, которая содержит статистические функции, определяет поля, для которых в предложении SELECT не вычисляется сводное значение.


Только при наличии таких полей


HAVING


В инструкции SQL, которая содержит статистические функции, определяет условия, применяемые к полям, для которых в предложении SELECT вычисляется сводное значение.


Нет

Термины SQL


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


Термин SQL


Сопоставимая часть речи


Определение


Пример


идентификатор


существительное


Имя, используемое для идентификации объекта базы данных, например имя поля.


Клиенты.[НомерТелефона]


оператор


глагол или наречие


Ключевое слово, которое представляет действие или изменяет его.


AS


константа


существительное


Значение, которое не изменяется, например число или NULL.


42


выражение


прилагательное


Сочетание идентификаторов, операторов, констант и функций, предназначенное для вычисления одного значения.


>= Товары.[Цена]


К началу страницы

Основные предложения SQL: SELECT, FROM и WHERE


Общий формат инструкций SQL:


SELECT field_1

FROM table_1

WHERE criterion_1

;


Примечания:


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


Каждая инструкция SELECT заканчивается точкой с запятой (;). Точка с запятой может стоять как в конце последнего предложения, так и на отдельной строке в конце инструкции SQL.


Пример в Access


В приведенном ниже примере показано, как в Access может выглядеть инструкция SQL для простого запроса на выборку.


Вкладка объекта SQL с инструкцией SELECT


1. Предложение SELECT


2. Предложение FROM


3. Предложение WHERE


Эту инструкцию SQL следует читать так: "Выбрать данные из полей "Адрес электронной почты" и "Компания" таблицы "Контакты", а именно те записи, в которых поле "Город" имеет значение "Ростов".


Разберем пример по предложениям, чтобы понять, как работает синтаксис SQL.

Предложение SELECT


SELECT [E-mail Address], Company


Это предложение SELECT. Оно содержит оператор (SELECT), за которым следуют два идентификатора ("[Адрес электронной почты]" и "Компания").


Если идентификатор содержит пробелы или специальные знаки (например, "Адрес электронной почты"), он должен быть заключен в прямоугольные скобки.


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


В инструкции SELECT предложение SELECT всегда стоит перед предложением FROM.

Предложение FROM


FROM Contacts


Это предложение FROM. Оно содержит оператор (FROM), за которым следует идентификатор (Контакты).


В предложении FROM не указываются поля для выборки.

Предложение WHERE


WHERE City="Seattle"


Это предложение WHERE. Оно содержит оператор (WHERE), за которым следует выражение (Город="Ростов").


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


С помощью предложений SELECT, FROM и WHERE можно выполнять множество действий. Дополнительные сведения об использовании этих предложений см. в следующих статьях:


Access SQL. Предложение SELECT


Access SQL. Предложение FROM


Access SQL. Предложение WHERE


К началу страницы

Сортировка результатов: ORDER BY


Как и в Microsoft Excel, в Access можно сортировать результаты запроса в таблице. Используя предложение ORDER BY, вы также можете указать способ сортировки результатов при выполнении запроса. Если используется предложение ORDER BY, оно должно находиться в конце инструкции SQL.


Предложение ORDER BY содержит список полей, для которых нужно выполнить сортировку, в том же порядке, в котором будут применена сортировка.


Предположим, например, что результаты сначала нужно отсортировать по полю "Компания" в порядке убывания, а затем, если присутствуют записи с одинаковым значением поля "Компания", — отсортировать их по полю "Адрес электронной почты" в порядке возрастания. Предложение ORDER BY будет выглядеть следующим образом:


ORDER BY Company DESC, [E-mail Address]


Примечание: По умолчанию Access сортирует значения по возрастанию (от А до Я, от наименьшего к наибольшему). Чтобы вместо этого выполнить сортировку значений по убыванию, необходимо указать ключевое слово DESC.


Дополнительные сведения о предложении ORDER BY см. в статье Предложение ORDER BY.


К началу страницы

Работа со сводными данными: предложения GROUP BY и HAVING


Иногда возникает необходимость работы со сводными данными, такими как итоговые продажи за месяц или самые дорогие товары на складе. Для этого в предложении SELECT к полю применяется агрегатная функция. Например, если в результате выполнения запроса нужно получить количество адресов электронной почты каждой компании, предложение SELECT может выглядеть следующим образом:


SELECT COUNT([E-mail Address]), Company


Возможность использования той или иной агрегатной функции зависит от типа данных в поле и нужного выражения. Дополнительные сведения о доступных агрегатных функциях см. в статье Статистические функции SQL.

Задание полей, которые не используются в агрегатной функции: предложение GROUP BY


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


Предложение GROUP BY должно следовать сразу же за предложением WHERE или FROM, если предложение WHERE отсутствует. В предложении GROUP BY поля указываются в том же порядке, что и в предложении SELECT.


Продолжим предыдущий пример. Пусть в предложении SELECT агрегатная функция применяется только к полю [Адрес электронной почты], тогда предложение GROUP BY будет выглядеть следующим образом:


GROUP BY Company


Дополнительные сведения о предложении GROUP BY см. в статье Предложение GROUP BY.

Ограничение агрегированных значений с помощью условий группировки: предложение HAVING


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


Предположим, например, что к первому полю в предложении SELECT применяется функция AVG (которая вычисляет среднее значение):


SELECT COUNT([E-mail Address]), Company


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


HAVING COUNT([E-mail Address])>1


Примечание: Запрос может включать и предложение WHERE, и предложение HAVING, при этом условия отбора для полей, которые не используются в статистических функциях, указываются в предложении WHERE, а условия для полей, которые используются в статистических функциях, — в предложении HAVING.


Дополнительные сведения о предложении HAVING см. в статье Предложение HAVING.


К началу страницы

Объединение результатов запроса: оператор UNION


Оператор UNION используется для одновременного просмотра всех данных, возвращаемых несколькими сходными запросами на выборку, в виде объединенного набора.


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


Примечание: В запросах на объединение числовой и текстовый типы данных являются совместимыми.


Используя оператор UNION, можно указать, должны ли в результаты запроса включаться повторяющиеся строки, если таковые имеются. Для этого следует использовать ключевое слово ALL.


Запрос на объединение двух инструкций SELECT имеет следующий базовый синтаксис:


SELECT field_1

FROM table_1

UNION [ALL]

SELECT field_a

FROM table_a

;


Предположим, например, что имеется две таблицы, которые называются "Товары" и "Услуги". Обе таблицы содержат поля с названием товара или услуги, ценой и сведениями о гарантии, а также поле, в котором указывается эксклюзивность предлагаемого товара или услуги. Несмотря на то, что в таблицах "Продукты" и "Услуги" предусмотрены разные типы гарантий, основная информация одна и та же (предоставляется ли на отдельные продукты или услуги гарантия качества). Для объединения четырех полей из двух таблиц можно использовать следующий запрос на объединение:


SELECT name, price, warranty_available, exclusive_offer

FROM Products

UNION ALL

SELECT name, price, guarantee_available, exclusive_offer

FROM Services

;


Дополнительные сведения об объединении инструкций SELECT с помощью оператора UNION см. в статье Просмотр объединенных результатов нескольких запросов с помощью запроса на объединение.


К началу страницы


Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования