Как написать sql запрос в access
Перейти к содержимому

Как написать sql запрос в access

  • автор:

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

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

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

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

В этой статье

Что такое SQL?

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

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

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

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

Инструкции SELECT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Термины SQL

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

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

Определение

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

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

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

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

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

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

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

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. Оно содержит оператор (FROM), за которым следует идентификатор (Контакты).

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

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

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

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

С помощью предложений SELECT, FROM и 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 с помощью оператора UNION см. в статье Просмотр объединенных результатов нескольких запросов с помощью запроса на объединение.

2 Создание SQL запросов в СУБД Access

2 Создание SQL запросов в СУБД Access

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

Запросы вы будете создавать в БД “Movies” с которой вы уже работали на прошлом уроке. Вы можете использовать уже использованную БД или взять готовую БД без запросов у учителя.

Для создания запросов SQL в СУБД Access вам нужно:

1. Перейти во вкладку «Создание», выбрать команду «Конструктор запросов».

2. Далее вам необходимо закрыть окно «Добавление таблицы».

3. В любом пустом месте окна щелкните правой кнопкой мыши и в контекстном меню выберите «Режим SQL»

во вкладке «Конструктор» можете нажать на кнопку «Режим SQL».

4. В появившемся окне вы можете вводить свои команды. По умолчанию здесь уже указана команда «SELECT».

SQL запрос на выборку 1.

Первый запрос самый простой: вывести на экран все данные из таблицы tblFilms. В режиме SQL введите следующую команду:

Нажмите кнопку «Выполнить».

В результате выйдет вся информация о фильмах из таблицы tblFilms.

Символ «*» после команды SELECT означает, что будут выводиться все поля, данные в которых соответствуют условию отбора.

SQL запрос на выборку 2.

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

Например, нам необходимо вывести только поля ActorName и ActorAge из таблицы tblActors. Для этого в режиме SQL вводим следующую команду:

В результате выполнения запроса появятся значения полей ActorName и ActorAge из таблицы tblActors .

SQL запрос на выборку 3.

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

SELECT имя_столбца FROM имя_таблицы ORDER BY имя_столбца_сортировки;

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

Результат выполнения запроса:

По умолчанию сортировка идет по возрастанию, но это можно изменить, добавив ключевое слово DESC:

Теперь наши данные отсортированы в порядке по убыванию.

Сортировку можно производить сразу по нескольким столбцам. Например, следующий запрос отсортирует данные по столбцу ActorAge , и если в этом столбце будет несколько одинаковых строк, то в столбце ActorName будет осуществлена сортировка по убыванию:

SQL запрос на выборку 4 .

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

SELECT имя_столбца FROM имя_таблицы WHERE условие;

Для нашего примера условием является год выпуска фильма, т.е. нам нужны только те строки, в столбце FilmYear которых стоит 1957:

Если вы хотите отобрать все фильмы, которые были выпущены после 2000 года, вам необходимо использовать оператор «> (больше)»:

Аналогично, для того, чтобы отобразить фильмы выпущенные до 1960 года используется оператор «< (меньше)»:

А для того, чтобы отобрать фильмы, выпущенные с 1998 года по 2003 год используется оператор BETWEEN (между):

Замечательно! Вы справились с заданием и изучили, как осуществляются запросы на выборку с помощью команд SQL . Не забудьте показать работу учителю.

Если у вас осталось время, вы можете самостоятельно выполнить следующие запросы:

1. Создайте SQL запрос, позволяющий отобразить сведения об актерах, состоящих в браке. (Подсказка, условие отбора ActorMarried =true ).

2. Создайте SQL запрос, позволяющий отобразить отсортированные по алфавиту сведения об актерах, имеющих рейтинг 9.

3. Создайте SQL запрос, позволяющий отобразить только фильмы, в жанре Action, отсортированные по году выпуска от самого нового фильма до самого старого.

9.5. Создание запроса на языке sql в субд Access

Если пользователь желает работать с БД, используя язык SQL, то он должен открыть окно Конструктора запроса и перейти в режим SQL по команде Вид / Режим SQL. В появившемся окне можно формировать запрос на языке SQL и редактировать его, используя для этого привычную технологию редактирования в текстовом редакторе.

Выполнение и сохранение на языке SQL осуществляется аналогично тому, как это делается в режиме Конструктора.

10. Инструментальные средства разработки прикладных программ в субд Access

10.1. Понятие макроса и модуля

Современные СУБД имеет богатый набор визуальных инструментальных средств для работы с БД и ее объектами. Но пользователю могут понадобиться сложные приложения, создание которых с помощью этих средств затруднительно или невозможно. В этом случае прибегают к разработке макросов и модулей.

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

Пользователя иногда не могут удовлетворить даже макросы. Возникает необходимость в программировании задач. Access использует для этого язык Visual Basic for Applications (VBA). На языке VBA создаются модули – объекты БД, содержащие созданные пользователем процедуры. Процедура представляет собой совокупность операторов языка VBA, реализующую ряд логических шагов для выполнения конкретного действия.

Работая в среде Access, пользователь производит необходимые действия. Имеется возможность указать реакции Access на эти действия. Изменение состояния объекта БД, в момент возникновения которого можно изменить стандартный порядок обработки объекта и определить реакцию, называется событием. В Access только формы и отчеты являются объектами, для которых определены события. Например, события окна – Открытие, Закрытие, Изменение размера. Для обработки событий разрабатываются макросы или процедуры.

10.2. Классификация макрокоманд. Типы макросов

В макросах используются макрокоманды (их 50), которые можно классифицировать по назначению на:

макрокоманды для работы с данными в формах и отчетах (например, НайтиЗапись);

макрокоманды выполнения (например, ОткрытьЗапрос);

макрокоманды импорта/экспорта (например, ОтправитьОбъект);

макрокоманды для работы с объектами БД (например, КопироватьОбъект) и др. (например, Сообщение).

Макрос, в котором макрокоманды выполняются последовательно, одна за другой, называется линейным. Макрос, в котором отдельные макрокоманды или их наборы выполняются в зависимости от выполнения некоторого условия (задаваемого логическим выражением), называется макросом с условием. Если в одном макросе объединены несколько логически связанных макросов, то такой макрос называется групповым.

Информатика. 10 класс (Повышенный уровень)

Мастер запросов и Конструктор — всего лишь визуальные инструменты для создания запросов. Любой запрос, созданный в Access с помощью визуальных инструментов, можно просмотреть в режиме SQL (пример 24.1). В этом режиме запрос отображается как запись на языке SQL (англ. Structured Query Language — структурированный язык запросов).

SQL является важнейшим компонентом технологии реляционных баз данных и поддерживается практически всеми системами управления БД. Любому профессионалу, как квалифицированному пользователю баз данных, так и прикладному программисту или администратору БД, необходимо знать SQL.

Некоторые возможности языка SQL:

1. Создание, изменение и удаление таблиц БД.
2. Выборка информации из БД.
3. Добавление записей в таблицу БД.
4. Редактирование и удаление записей в таблице БД.

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

Достоинства языка SQL:

1. Декларативность — указывает, какие операции нужно выполнить. Способ их реализации выбирается автоматич ески.
2. Наличие международных стандартов.
3. Независимость от конкретной СУБД.

Недостатки языка SQL:

1. Стандарт языка сложен и объемен.
2. Возможность отступления от стандарта (многие компании вносят свои изменения в язык).

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

Команда SQL состоит из операторов (ключевых слов) и идентификаторов (пример 24.2). Если в запросе несколько команд, то в конце команды ставится точка с запятой (;). В Access одновременно можно выполнить только одну команду SQL, поэтому точку с запятой можно не ставить. Согласно общепринятому стилю для записи ключевых слов рекомендуется использовать прописные буквы.

Если идентификатор содержит пробелы, то он заключается в квадратные скобки (пример 24.3).

В Access используется интерактивная версия языка SQL — Microsoft Jet SQL. Чтобы создать запрос SQL в Access (пример 24.4), необходимо:

1) перейти в меню Создание;

2) выбрать Конструктор запросов;

3) закрыть окно Добавление таблицы;

4) выбрать Режим SQL;

5) в открывшемся окне ввести текст запроса и при необходимости сохранить запрос;

6) выполнить запрос, нажав кнопку на Панели инструментов.

В Access реализованы следующие составные части языка SQL:

1. Язык определения данных (Data Definition Language — DDL). Используется для определения структуры базы данных.
2. Язык манипулирования данными (Data Manipulation Language — DML). Предоставляет возможность выборки информации из базы данных и ее преобразования.

Пример 24.1. Представление запроса на языке SQL.

Запрос в режиме Конструктор, который позволяет найти сеансы, стоимость билетов на которые не превышает 9 р. 50 к.:

Результат запроса (режим таблицы):

Язык SQL был предложен компанией IBM в начале 70-х гг. для проверки возможностей реляционной модели БД.

Разработчики языка запросов SQL:

Дональд Чэмбэрлин
(Donald D. Chamberlin)

Рэй Бойс
(Ray Boyce)

Первый международный стандарт языка SQL был принят в 1989 г.

В настоящее время действует стандарт, принятый в 2003 г. (SQL:2003), с некоторыми модификациями и дополнениями, внесенными позже (SQL:2008, SQL:2011, SQL:2016).

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

Пример 24.2. В запросе SQL из примера 24.1:

SELECT — определяет поля, которые содержат запрашиваемые данные.

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

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

Идентификаторы полей

Сеансы.Кинотеатр, Сеансы.Фильм, Сеансы.Время, Сеансы.Стоимость — содержат адрес (имя объекта БД) и название поля.

Пример 24.3. Синтаксис идентификаторов SQL.

SELECT Товары.[Номер склада], Товары.Наименование, Товары.Поставщик, Товары.Цена, Товары.Количество

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *