SQL в Access: основні поняття, глосарій і синтаксис

SQL в Access: основні поняття, глосарій і синтаксис

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

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

Це одна із серії статей про Access SQL. У ній описано базові принципи використання мови 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 for Applications (VBA).

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

SELECT Last_Name
FROM Contacts
WHERE First_Name = 'Mary';

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

Інструкції SELECT

Інструкція SELECT використовується для опису набору даних на мові SQL. Інструкція 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_1
FROM table_1
WHERE 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_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, див. в статті Поєднання результатів кількох вибіркових запитів за допомогою запиту на об’єднання.

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

Отримуйте нові функції раніше за інших
Приєднайтеся до оцінювачів Office

Ця інформація корисна?

Дякуємо за ваш відгук!

Дякуємо за відгук! Схоже, вам може стати в нагоді допомога одного з наших спеціалістів служби підтримки Office, з яким ми вас можемо з’єднати.

×