Как сделать sql запрос в access

от admin

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 Товары.[Номер склада], Товары.Наименование, Товары.Поставщик, Товары.Цена, Товары.Количество

Как сделать sql запрос в access

Эта статья будет посвящена новичкам, которые хотят научиться создавать базы данных в Delphi, но не знают языка SQL запросов. Частично, можно выйти из положения используя компоненты ADOTable и фильтрацию, но не все задачи можно решить с помощью них. Как быть? Я предлагаю составлять запросы с помощью конструктора SQL запросов в MS Access 2003 – 2007, и переносить их в компонент ADOQuery или любой другой, позволяющий работать SQL запросами. Понятно, что если вы хотите профессионально заняться программированием баз данных, то без изучения языка запросов SQL вам не обойтись, но на первых порах конструктор SQL запросов в MS Access 2003 – 2007 может послужить вам хорошим другом.
Сейчас я попытаюсь рассказать, как работать с этим конструктором. Предполагается, что вы уже умеете создавать саму базу данных в MS Access 2003 – 2007.

Пусть у нас имеется некая база данных bd.mdb имеющая три таблицы products, ed_izmer, storage. Скачать базу.

Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.

Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.

Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.

Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.

Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.

Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.

Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.

Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.

Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.

Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.

Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.

Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.

В первый столбец вводим имя таблицы -> products, поле product_name.
Во второй имя таблицы -> ed_izmer, поле ed_name.
В третий имя таблицы -> storage, поле quantity.
В четвертый имя таблицы -> storage, поле price.
В пятый столбец вводим формулу для вычисления суммы.
Формулы вводятся следующим образом: в начале идет имя поля (придумываем сами), затем двоеточие, а затем формула в виде [имя таблицы1].[имя поля]знак операции[имя таблицы2].[имя поля].

В нашем случае вводим следующую формулу:

сумма: [storage].[quantity]*[storage].[price]

на этом запрос готов жмем на крестик и сохраняем запрос.

Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.

Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.

Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.

Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.

Копируем полученный запрос и вставляем его в поле SQL -> TStrings компонента ADOQuery в Delphi. Или используем программно:

ADOQuery.Active:=false;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add('SELECT products.product_name, ed_izmer.ed_name, storage.quantity, storage.price, [storage].[quantity]*[storage].[price] AS сумма
FROM ed_izmer RIGHT JOIN (products RIGHT JOIN storage ON products.id=storage.id_product) ON ed_izmer.id=storage.id_ed_izmer;');
ADOQuery.Active:=True;

Если запрос очень длинный то его можно разбить, например, так:

ADOQuery.SQL.Add('SELECT products.product_name,'+
' ed_izmer.ed_name, storage.quantity, storage.price,'+
' [storage].[quantity]*[storage].[price] AS сумма'+
' FROM ed_izmer RIGHT JOIN (products RIGHT JOIN storage ON products.id=storage.id_product)'+
' ON ed_izmer.id=storage.id_ed_izmer;');

Либо использовать ADOQuery.SQL.Add('части запроса') несколько раз.

Можно делать и обратное преобразование запроса SQL. Берем готовый SQL запрос, копируем его в конструктор запросов MS Access в режиме SQL, затем переключаемся в режим конструктора и изучаем какие таблицы, поля, связи, выражения входят в запрос. Если надо, то вносим изменения.

Ну и на последок немножко о синтаксисе запроса:

Слово select в запросе означает создание выборки. Эта команда имеет вот такой синтаксис:

select [список полей] from [список таблиц и их соединения]

Поля в списке полей перечисляются через запятую.
Синтаксис описания поля такой:

Выполнение SQL запросов к текущей базе данных в среде VBA (Access)

В Microsoft Office Access поддерживается выполнение SQL запросов к текущей базе данных из программного кода на VBA. Рассмотрим, как это можно использовать при разработке приложений баз данных.

Так как запрос выполняется к той же самой базе данный в которой выполняется модуль VBA, для выполнения SQL запроса нет необходимости работать со стандартными в подобных случаях интерфейсами ADO, ODBC и т.д. Всё можно сделать при помощи объектной модели Access.

Как известно SQL запросы можно условно разделить на две большие группы:

  • Запросы, не возвращающие данных (INSERT, UPDATE, DELETE и т.д.);
  • Запросы возвращающие данные (запросы на выборку (SELECT)).
Запросы, не возвращающие данных

Для выполнения запросов к текущей базе данных служит метод Execute объекта CurrentDb. Этот метод принимает в качестве параметра строку с SQL запросом, который необходимо выполнить.

Это простейший запрос. Но, как быть с запросами, которые манипулируют теми или иными данными?

Такие запросы тоже можно выполнить. Для этого нужно просто сформировать соответствующую строку.

Так, например, может быть реализовано добавление записей в таблицу:

А, так их обновление:

Помимо простого перебора доступны несколько видов поиска. Но в основном используются два.

Первый вид поиска реализован в виде методов FindFirst, FindLast, FindNext и FindPrevious объекта RecordSet.

Первые два устанавливают курсор на соответственно первую и последнюю записи, соответствующие условию поиска. Условие поиска передаётся в качестве параметра в виде строки. Само условие задаётся по аналогии с предложением WHERE в обычном SQL запросе.

Методы FindNext и FindPrevious устанавливают курсор на следующую и предыдущую записи в соответствии с условием поиска, если такие записи существуют. Условие поиска для этих методов задаётся также, как и для FindFirst и FindLast.

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

В следующем примере перебор записей начнётся с записи, у которой id равен 234, так как курсор был перемещён к ней до начала обхода набора записей в цикле.

Похожие статьи