Создание запроса к серверу
Вы можете использовать Access как переднее приложение, а затем связывать таблицы на сервере, например с SQL Server. По умолчанию большинство запросов работают локально в ячеке баз данных Access ACE. В некоторых случаях в зависимости от синтаксиса SQL Server SQL и других факторов Access может выполнить запрос удаленно на SQL Server. Дополнительные сведения см. в документации по теме «ЯД БАЗ ДАННЫХ JET версии 3.0: подключение ODBC» в красных документах, открытых в jet и ODBC.
Однако часто необходимо явно выполнить запрос к серверу базы данных. Это помогает повысить производительность: серверы баз данных имеют большую вычислительную мощность, чем настольный компьютер, и вы можете возвращать меньшее подмножество данных по сетевому подключению. Чтобы выполнить запрос к серверу базы данных, используйте запрос к серверу — это SQL Transact SQL(TSQL), подключающийся к SQL Server с помощью строки подключения ODBC. Например, вы можете передать заявление SELECT, чтобы вернуть данные в таблицу, форму, отчет или список, выполнить эквивалент запросов на действия (DML), хранимых процедур вызовов и выполнения административных задач (DDL).
Примечание Результаты запроса к проверке находятся только для чтения. Чтобы непосредственно редактировать данные в таблице или форме, создайте связанную таблицу в индексируемом представлении. Дополнительные сведения см. в теме «Создание индексных представлений».
- Подключение к базе данных сервера. Дополнительные сведения о связывание с SQL Server см. в дополнительных сведениях об импорте или связывание данных в базе данных SQL Server, а также связывание или импорт данных из базы данных Azure SQL Server.
- На вкладке Создание нажмите кнопку Конструктор запросов.
- При необходимости закройте диалоговое окно «Добавление таблиц»(добавление таблицы в Access 2013 ).
- Выберите «>конструктора». Access скроет сетку конструктора запросов и отобразит SQL представлении.
- Если лист свойств запроса не отображается, нажмите F4, чтобы отобразить его.
- На окне свойств щелкните поле свойства ODBC Connect Str и сделайте одно из следующего:
- В области навигации щелкните правой кнопкой мыши таблицу, связанную с нужным источником данных, и выберите «Диспетчер связанных таблиц».
- В диалоговом окне «Диспетчер связанных таблиц» выберите поле для источника данных и выберите «Изменить».
- В диалоговом окне «Изменение ссылки» скопируйте текст в поле строки подключения.
После создания подключения к файлу DSN строка подключения ODBC будет храниться внутри базы данных Access. Вот как можно получить копию этой строки:
- Найдите имя связанной таблицы в области навигации, используя нужное подключение ODBC.
- Нажмите CTRL+G. чтобы открыть окно VBA Immediate.
- Введите следующий код:
?CurrentDb.TableDefs("").Connect
Access SQL. Основные понятия, лексика и синтаксис
Для извлечения данных из базы данных используется язык 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
Чтобы описать набор данных с помощью SQL, необходимо написать инструкцию SELECT. Инструкция SELECT содержит полное описание набора данных, которые необходимо получить из базы данных. К ним относятся файлы со следующими элементами:
- таблицы, в которых содержатся данные;
- связи между данными из разных источников;
- поля или вычисления, на основе которых отбираются данные;
- условия отбора, которым должны соответствовать данные, включаемые в результат запроса;
- необходимость и способ сортировки.
Предложения SQL
Инструкция SQL состоит из нескольких частей, называемых предложениями. Каждое предложение в инструкции SQL имеет свое назначение. Некоторые предложения являются обязательными. В приведенной ниже таблице указаны предложения SQL, используемые чаще всего.
Предложение SQL
Обязательное
Определяет поля, которые содержат нужные данные.
Определяет таблицы, которые содержат поля, указанные в предложении SELECT.
Определяет условия отбора полей, которым должны соответствовать все записи, включаемые в результаты.
Определяет порядок сортировки результатов.
В инструкции SQL, которая содержит статистические функции, определяет поля, для которых в предложении SELECT не вычисляется сводное значение.
Только при наличии таких полей
В инструкции SQL, которая содержит статистические функции, определяет условия, применяемые к полям, для которых в предложении SELECT вычисляется сводное значение.
Термины SQL
Каждое предложение SQL состоит из терминов, которые можно сравнить с частями речи. В приведенной ниже таблице указаны типы терминов SQL.
Сопоставимая часть речи
Определение
Имя, используемое для идентификации объекта базы данных, например имя поля.
глагол или наречие
Ключевое слово, которое представляет действие или изменяет его.
Значение, которое не изменяется, например число или NULL.
Сочетание идентификаторов, операторов, констант и функций, предназначенное для вычисления одного значения.
Основные предложения SQL: SELECT, FROM и WHERE
Общий формат инструкций SQL:
SELECT field_1
FROM table_1
WHERE criterion_1
;
- Access не учитывает разрывы строк в инструкции SQL. Несмотря на это, каждое предложение рекомендуется начинать с новой строки, чтобы инструкцию SQL было удобно читать как тому, кто ее написал, так и всем остальным.
- Каждая инструкция SELECT заканчивается точкой с запятой (;). Точка с запятой может стоять как в конце последнего предложения, так и на отдельной строке в конце инструкции SQL.
Пример в Access
В приведенном ниже примере показано, как в Access может выглядеть инструкция SQL для простого запроса на выборку.

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 можно выполнять множество действий. Дополнительные сведения об использовании этих предложений см. в следующих статьях:
- 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 см. в статье Просмотр объединенных результатов нескольких запросов с помощью запроса на объединение.
Как открыть sql в access
Для импорта существующей таблицы из различных файлов баз данных следует:
- В диалоговом окне База данных | Таблицы сделать щелчок правой кнопкой мыши и выбрать пункт Импорт или в меню Таблица выбрать пункт Импорт таблицы .
- В стандартном окне выбора файла справа от строки Имя файла выбрать формат импортируемого файла: Базы данных SQLite (*.sqlite, *.sqlitedb) Базы данных Microsoft Access (*.mdb, *.accdb) Базы данных Microsoft SQL Server (*.mdf)

Рисунок 537. Импорт таблицы из базы данных

Рисунок 538. Выбор источника для записи

Рисунок 539. Выбор таблиц для импорта
Перевод БД в формате MS Access в формат MS SQL Server
1. Открываем базу данных в формате Access программой MS Access. Если используется MS Access версии 2007 и выше, то он может отключить часть содержимого. Его необходимо включить, нажав на кнопку «Параметры».

2. Переходим на страничку «Работа с базами данных» и выбираем команду «Переместить данные/SQL Server»

3. Создаем новую базу

4. Выбираем сервер, на котором будет создана база данных и указываем права доступа к серверу.

5. Нажав на кнопочку с двойной стрелкой, выбираем все таблицы для переноса.

6. Выбираем параметры для преобразования согласно картинке.



7. Далее ожидаем окончания процесса преобразования базы данных.