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, може виглядати так:
SELECT Last_NameFROM ContactsWHERE 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_1FROM table_1WHERE 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 можна виконувати безліч дій. Щоб отримати додаткові відомості про використання цих пропозицій, див.
Сортування результатів: 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 див. у статті Пропозиція 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_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 див. у статті Перегляд результатів об'єднаних кількох запитів за допомогою запиту на об'єднання.
Microsoft Office Access або просто Microsoft Access – Реляційна система управління базами даних (СУБД) [1] корпорації Microsoft. Має широкий спектр функцій, включаючи пов'язані запити, зв'язок із зовнішніми таблицями та базами даних. Завдяки вбудованій мові VBA, у самому Access можна писати програми, що працюють із базами даних.
Склад програмного продукту
Основні компоненти MS Access:
- будівельник таблиць;
- будівельник екранних форм;
- будівельник SQL-запитів (мова SQL в MS Access відповідає стандарту ANSI);
- будівельник звітів, що виводяться на друк.
Вони можуть викликати скрипти мовою VBA, тому MS Access дозволяє розробляти програми та БД практично «з нуля» або написати оболонку для зовнішньої БД.
Microsoft Jet Database Engine (англ.), яка використовується як двигун бази даних MS Access є файл-серверною СУБД і тому застосовна лише до додатків, що працюють з невеликими обсягами даних і при невеликій кількості користувачів, що одночасно працюють з цими даними.Безпосередньо в Access відсутня ряд механізмів, необхідних у розрахованих на багато користувачів базах даних, таких, наприклад, як тригери.
Взаємодія коїться з іншими СУБД [ ]
Вбудовані засоби взаємодії MS Access із зовнішніми СУБД із використанням інтерфейсу ODBC знімають обмеження, притаманні Microsoft Jet Database Engine. Інструменти MS Access, які дозволяють реалізувати таку взаємодію, називаються «пов'язані таблиці» (зв'язок із таблицею СУБД) та «запити до сервера» (запит на діалекті SQL, який «розуміє» СУБД).
Корпорація Microsoft для побудови повноцінних клієнт-серверних додатків на базі MS Access рекомендує використовувати як двигун бази даних СУБД MS SQL Server. При цьому є можливість поєднати з властивою MS Access простотою інструменти для управління БД та засоби розробки.
Відомі також реалізації клієнт-серверних додатків на базі зв'язки Access 2003 з іншими СУБД, зокрема MySQL [1].
Сумісність Access із сторонніми джерелами даних [ ]
| СУБД (Джерело даних) | Версія Access | Драйвер | Оновлені запити |
|---|---|---|---|
| Файли Excel | все | вбудований | Ні |
| SQLite | Так | ||
| MySQL | 2000-2003 | MyODBC v.3.51.X, 5.1.X | Так |
| PostgreSQL | Так | ||
| Firebird | Так | ||
| 1C v.7.7 (dbf) | 2003 | Visual FoxPro ODBC driver v.6.01.8629.01 | Ні |
| Paradox | |||
| Oracle | |||
| Текстові файли | все | вбудований | Ні |
| Таблиці html | все | вбудований | Ні |
Збереження у Access [ ]
Access, при роботі з базою даних, інакше взаємодіє із жорстким (або гнучким) диском, ніж інші програми.
В інших програмах файл-документ, при відкритті, повністю завантажується в оперативну пам'ять, і нова редакція цього файлу (змінений файл) повністю записується на диск тільки при натисканні кнопки "зберегти".
У Access нова редакція вмісту зміненої комірки таблиці записується на диск (зберігається) відразу, як тільки курсор клавіатури буде поміщений в інший осередок (або нова редакція зміненої записи записується на диск відразу, як курсор клавіатури буде поставлений в іншузапис (Рядок)) Таким чином, якщо раптово відключать електрику, то пропаде тільки зміна тієї записи, яку не встигли покинути
Цілісність даних у Access забезпечується також рахунок механізму транзакцій.
Кнопка «Зберегти» в Access теж є, але в Access режимі перегляду даних вона потрібна насамперед для збереження зміненого режиму показу таблиці або іншого об'єкта — тобто для збереження таких змін, як:
- зміна ширини стовпців та висоти рядків,
- перестановка стовпців у режимі перегляду даних, «закріплення» стовпців та звільнення закріплених стовпців,
- зміна сортування,
- застосування нового фільтра,
- зміна шрифту; кольори тексту, сітки та фону,
- і т.п.
Крім того, в Access ця кнопка потрібна в режимі "Конструктор" для збереження змін структури об'єкта бази даних, зроблених у цьому режимі.
Догляд за базою даних
Навіть якщо в процесі роботи з файлом бази даних не застосовувався режим «Конструктор» і нові дані до бази даних не додавалися (тобто якщо база даних тільки переглядалася), то все одно файл бази даних має тенденцію з часом, у процесі роботи з ним, все більше і більше збільшуватися у розмірі. сортувань і фільтрів (особливо якщо було застосовано кілька різних сортувань/фільтрів, що сильно відрізняються один від одного).
Це збільшення розміру файлу є, фактично, порожнечею, але ця порожнеча лежить усередині файлу, збільшуючи його обсяг.
Щоб відновити файлу бази даних нормальний (мінімальний) обсяг (тобто щоб видалити з файлу порожнечу), в Access є кнопка «Стиснути і відновити базу даних» — цю кнопку необхідно іноді натискати (при натисканні цієї кнопки ніяка інформація, ніякі дані з файлу бази даних не видаляються). Також базу даних можна запустити з /compact , що виконає стиснення автоматично і закриє базу після закінчення процесу.
Версії [ ]
- 1992: Access 1 для Windows 3.0
- 1993: Access 2.0 для Windows 3.1x (Office 4.3)
- 1995: Access 7 для Windows 95 (Office 95)
- 1997: Access 97 (Office 97)
- 1999: Access 2000 (Office 2000)
- 2001: Access 2002 (Office XP)
- 2003: Access 2003 (з комплекту програм Microsoft Office 2003)
- 2007: Microsoft Office Access 2007 (з комплекту програм Microsoft Office 2007)
- 2010: Microsoft Office Access 2010 (з комплекту програм Microsoft Office 2010)
- 2012: Microsoft Access 2013 (з офісного пакета програм Microsoft Office 2013)
- 2015 MICROSOFT ACCESS 2015
- 2019 MICROSOFT ACCESS 2019
Практичні аспекти ліцензування Access
Microsoft Access є пропрієтарним програмним забезпеченням, тобто для його використання необхідно придбати ліцензію. Однак для використання готових програм, створених за допомогою Access, ліцензія не потрібна. Для роботи цієї програми необхідна runtime-версія Access [2], яка розповсюджується безкоштовно.
Корпорація Microsoft розповсюджує повнофункціональну версію Access як окремо, так і спільно з іншими програмами (Word, Excel та ін.) у складі пакетів Microsoft Office Professional, Microsoft Office Professional Plus та Microsoft Office Enterprise.
| Ця сторінка використовує матеріали Вікіпедії. Оригінальна стаття розміщується на Microsoft Access. Список авторів можна побачити там же на сторінці історії. Як і на Microsoft вікі, текст Вікіпедії доступний у відповідність до Creative Commons Licensed. |
Як експортувати базу даних з Access в SQLite: короткий гайд
У цій статті ви знайдете відповідь на питання, як експортувати базу даних з Access в SQLite без використання додаткових утиліт.
Я постарався докладно описати той спосіб що використав особисто я. Докладніше про це ви можете дізнатися у статті.
Новини
Як запланувати повторюваний запуск VBA-процедури в MS Excel без Application.OnTime
У цій статті ми демонструємо просту альтернативу Application.OnTime для періодичного запуску VBA-процедур у MS Excel.
Цей підхід особливо зручний, якщо потрібно передавати дані з аркуша MS SharePoint до книги MS Excel у режимі реального часу.
Побудова цифрового фінансового ВЦО силами непрофесійних розробників
Коли наша команда вивчала досвід інших компаній, ми просто не змогли знайти схожих прикладів масової автоматизації бухгалтерського та облікового функціоналу, тому хочемо поділитися нашим кейсом. Ми зустрічали лише точкову інфу про впровадження роботизації на окремих операціях, але це був досить вузький функціонал, а про масове застосування рішень (з роботами і не лише) на облікових транзакціях — взагалі тиша.
Все, про що говоритиму в цій статті, вже в продажі і давно приносить прибуток як нам, так і всій компанії. Ми з співавтором спробували включити сюди по максимуму важливої інформації – починаючи з того, як формувалися і змінювалися наші уявлення про рішення, до робочої автоматизації, яку запилили своїми руками.Повторю, що написано в заголовку: ми не професійна команда з IT, а вихідці з областей фінансів та бухгалтерії, що ступили на цей тернистий шлях. Сподіваємося, що цей текст виявиться корисним, і в когось завдяки нашим прогулянкам граблями вдасться пройти цей шлях набагато швидше.
Dynamics 365 і Power Platform Meetup в Lamoda – анонс
Всім привіт! Мене звуть Станіслав Гоц, я керівник відділу впровадження та підтримки ERP систем у Lamoda. Хочу запросити вас на Dynamics 365 та Power Platform Meetup, що пройде 11 лютого у нас в офісі.
На мітапі виступлять 5 спікерів, у дискусійних секціях обговоримо теми проектного управління на впровадженнях ERP та її підтримки, поговоримо про підходи до тестування та бізнес-аналізу, торкнемося нюансів розробки та технічних аспектів нової версії. А також на вас чекає обід та екскурсія по офісу.
Під катом програма зустрічі, посилання на форму реєстрації та докладнішу інформацію про те, як нас знайти.
Історії
Як ми покращували TFS
Раніше, коли ми не мали свого корпоративного блогу, я писав про те, як ми використовуємо Microsoft TFS (Visual Studio Team Services on Premises) для управління життєвим циклом розробки ПЗ та для автоматизації тестування. Зокрема, ми зібрали великий набір автотестів по різних системах в один пакет, який запускаємо щодня. Детальніше про це я розповідав на конференції DevOpsDaysMoscow (презентація, відео виступи)
Дуже довге ціле
Наката невелику бібліотечку для арифметичних операцій над натуральними числами будь-якої довжини. Оскільки писалося на Visual Basic for Applications (VBA), вбудованому в Excel, перевизначити операції + – * / не вийшло, і все вирішується через виклик функцій з двома аргументами виду
Function LongADD(s1 As String, s2 As String) As String
Зате можна викликати функції (або їх комбінації) прямо з осередків екселівського листа – наочно і зрозуміло. Так, натуральні числа передаються як рядки. Максимальна довжина рядка в VBA дорівнює приблизно 2 31 = 2 147 483 648 (пораховано моєю функцією LongPower («2», 31)), так що на грати з різними штуками вистачить цілком.
Для прикладу – множення двох простих чисел із епохальної статті Рівеста, Шаміра та Алдемана, звідки пішла вся сучасна криптографія (у коді це константи RSA1, RSA2)
Під катом – код на VBA, його можна просто вставити в модуль Excel-івського файлу за допомогою макросів (типу *.xlsm).
P.S. не спробуйте використовувати код для будь-яких конкурсів з розкладання на прості множники. Він хоч і розуміє числа з двома мільярдами значущих цифр, але дуже повільний для таких завдань.
P.P.S. якщо все ж таки щось вийде, 10% виграшу – мені
P.P.P.S. ні, краще 15%