SQL в Access: основні поняття, глосарій і синтаксис
Applies ToAccess для Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Щоб отримати дані з бази даних, використовується мова SQL (Structured Query Language – мова структурованих запитів). Це мова програмування, яка дуже схожа на англійську, але зрозуміла для програм бази даних. Кожен запит, що виконується, використовує мову SQL у фоновому режимі.

Розуміння принципів роботи SQL допомагає створювати покращені запити та спрощує виправлення запитів, які повертають неправильні результати.

Це одна із серії статей про Access SQL. У ній описано базові принципи використання мови SQL для вибору даних і наведено приклади синтаксису SQL.

У цій статті

Визначення SQL

SQL – це мова програмування для роботи з наборами фактів і зв’язками між ними. У програмах керування реляційними базами даних, як-от Microsoft Office Access, мова SQL використовується для роботи з даними. На відміну від багатьох мов програмування, мова SQL дуже проста. Подібно до інших мов програмування, SQL – це міжнародний стандарт, визнаний такими організаціями зі стандартизації, як ISO й ANSI.

Мовою SQL описуються набори даних, які можуть допомогти відповісти на запитання. Використовуючи SQL, потрібно застосовувати правильний синтаксис. Синтаксис – це набір правил, які забезпечують правильне поєднання елементів мови. Синтаксис SQL базується на синтаксисі англійської мови та має багато спільних елементів із синтаксисом Visual Basic for Applications (VBA).

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

SELECT Last_NameFROM ContactsWHERE First_Name = 'Mary';

Примітка.: SQL використовується не тільки для роботи з даними, але й для створення та змінення структури об'єктів бази даних, наприклад таблиць. Частина SQL, яка використовується для створення та змінення об'єктів бази даних, називається мовою визначення даних (DDL). У цій статті не описано DDL. Докладні відомості див. в статті Створення або змінення таблиць або індексів за допомогою запиту на визначення даних.

Інструкції SELECT

Щоб описати набір даних за допомогою SQL, потрібно написати інструкцію SELECT. Інструкція SELECT містить повний опис набору даних, які потрібно отримати з бази даних. Це стосується таких елементів:

  • таблиці, які містять дані;

  • зв’язки між даними з різних джерел;

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

  • умови, яким мають відповідати дані, що включаються в результат;

  • доцільність і спосіб сортування результатів.

Речення SQL

Інструкція SQL складається з речень. Кожне речення в інструкції SQL виконує свою функцію. Деякі речення в інструкції SELECT є обов’язковими. У таблиці нижче наведено найпоширеніші речення 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_1FROM table_1WHERE criterion_1;

Примітки.: 

  • Програма Access ігнорує розриви рядків в інструкції SQL. Проте радимо починати кожне речення з нового рядка, щоб інструкції SQL могли читати не лише ви, а й інші користувачі.

  • Кожна інструкція SELECT закінчується крапкою з комою (;). Вона може стояти як у кінці останнього речення, так і окремо в рядку в кінці інструкції SQL.

Приклад у програмі Access

Ось як може виглядати інструкція SQL у простому вибірковому запиті в Access:

Вкладка об'єкта SQL, на якій відображено інструкцію SELECT

1. Речення SELECT

2. Речення FROM

3. Речення WHERE

У цьому прикладі інструкція SQL означає таке: «Вибрати дані, які зберігаються в полях "Адреса електронної пошти" й "Компанія" з таблиці "Контакти", а саме записи, у яких поле "Місто" має значення "Сіетл"».

Розглянемо приклади окремих речень, щоб зрозуміти, як працює синтаксис SQL.

Речення SELECT

SELECT [E-mail Address], Company

Це речення SELECT. Воно складається з оператора (SELECT), за яким слідують два ідентифікатори ([Адреса електронної пошти] та "Компанія").

Якщо ідентифікатор містить пробіли або спеціальні символи (наприклад, "адреса електронної пошти"), його потрібно взяти в квадратні дужки.

У реченні SELECT не потрібно вказувати таблиці з полями чи умови, яким мають відповідати дані, що включаються в результат.

Речення SELECT завжди відображається перед реченням FROM в інструкції SELECT.

Речення FROM

FROM Contacts

Це речення FROM. Воно складається з оператора (FROM), за яким слідує ідентифікатор ("Контакти").

У реченні FROM не перелічуються поля для вибору.

Речення WHERE

WHERE City="Seattle"

Це речення WHERE. Воно складається з оператора (WHERE), за яким слідує вираз (Місто="Сіетл").

Примітка.: На відміну від речень SELECT і FROM, речення WHERE необов’язково має входити в інструкцію SELECT.

За допомогою речень SELECT, FROM і WHERE можна виконати низку дій, використовуючи мову SQL. Докладні відомості про використання цих речень наведено в таких статтях:

На початок сторінки

Сортування результатів: 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 див. в цій статті.

На початок сторінки

Робота зі зведеними даними: 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 див. в статті цій статті.

Обмеження агрегатних значень за допомогою умов групування: речення HAVING

Якщо потрібно вказати умови, щоб обмежити результати, але поле, до якого їх потрібно застосувати, використовується в агрегатній функції, не можна використовувати речення WHERE. Натомість скористайтеся реченням HAVING. Речення HAVING працює так само, як і речення WHERE, але використовується для сукупних даних.

Наприклад, уявімо, що ви використовуєте функцію AVG (яка обчислює середнє значення) з першим полем у реченні SELECT:

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

Якщо запит має обмежувати результати на основі значення цієї функції COUNT, у реченні WHERE не можна використовувати умови для цього поля. Натомість умову слід включити в речення HAVING. Наприклад, якщо запит має повертати рядки, лише коли з компанією пов’язано кілька адрес електронної пошти, речення HAVING може мати такий вигляд:

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

Примітка.: Запит може включати речення WHERE та HAVING: умови для полів, які не використовуються в агрегатній функції, указуються в реченні WHERE, а умови для полів, що застосовуються з агрегатними функціями, – у реченні HAVING.

Докладні відомості про речення HAVING див. в цій статті.

На початок сторінки

Об’єднання результатів запиту: UNION

Оператор UNION використовується, щоб одночасно переглянути всі дані, повернуті кількома схожими вибірковими запитами, у вигляді об’єднаного набору.

Оператор UNION дає змогу об’єднати дві інструкції SELECT в одну. Об’єднувані інструкції SELECT мають містити однакову кількість полів виводу, розташованих в однаковому порядку, з однаковими або сумісними типами даних. Коли ви запускаєте запит, дані з кожного набору відповідних полів об’єднуються в одне поле виводу, тому результат запиту містить таку ж кількість полів, що й кожна з інструкцій SELECT.

Примітка.: Для запиту на об’єднання типи даних "Текст" і "Число" вважаються сумісними.

Використовуючи оператор UNION, ви також можете вказати, чи результати запиту мають включати повторювані рядки (за наявності). Для цього використовується ключове слово ALL.

Базовий синтаксис SQL для запиту на об’єднання двох інструкцій SELECT має такий вигляд:

SELECT field_1FROM table_1UNION [ALL]SELECT field_aFROM table_a;

Припустімо, наприклад, що у вас є таблиця "Товари" та інша таблиця "Служби". Обидві таблиці містять поля з назвою продукту або послуги, ціною, гарантією або гарантією доступності, а також незалежно від того, чи пропонуєте ви виключно продукт або послугу. Хоча в таблиці "Товари" зберігаються відомості про гарантію, а в таблиці "Послуги" зберігаються гарантійні відомості, основна інформація однакова (чи включає певний продукт або послугу обіцянку якості). Щоб об'єднати чотири поля з двох таблиць, можна скористатися запитом на об'єднання, наприклад наведеним нижче.

SELECT name, price, warranty_available, exclusive_offerFROM ProductsUNION ALLSELECT name, price, guarantee_available, exclusive_offerFROM Services;

Докладні відомості про те, як об’єднати інструкції SELECT за допомогою оператора UNION, див. в статті Поєднання результатів кількох вибіркових запитів за допомогою запиту на об’єднання.

На початок сторінки

Потрібна додаткова довідка?

Потрібні додаткові параметри?

Ознайомтеся з перевагами передплати, перегляньте навчальні курси, дізнайтесь, як захистити свій пристрій тощо.

Спільноти допомагають ставити запитання й відповідати на них, надавати відгуки та дізнаватися думки висококваліфікованих експертів.