Мова запитів SQL. Вибірка даних у БД Access за допомогою SQL запитів Створення складних SQL запитів ms access

Головна / Корисне ПЗ

Кожен веб-розробник повинен знати SQL, щоб написати запити до баз даних. І хоча phpMyAdmin ніхто не скасовував, часто необхідно забруднити руки, щоб написати низькорівневий SQL.

Саме тому ми підготували короткий екскурс з основ SQL. Почнемо ж!

1. Створення таблиці

Для створення таблиць призначена інструкція CREATE TABLE. Як аргументи має бути задано назву стовпців, а також їх типи даних.

Створимо просту таблицю на ім'я month. Вона складається з 3 колонок:

  • id– Номер місяця у календарному році (ціле число).
  • name– Назва місяця (рядок максимум 10 символів).
  • days– Кількість днів цього місяця (ціле число).

Ось як виглядатиме відповідний SQL запит:

CREATE TABLE months (id int, name varchar(10), days int);

Також при створенні таблиць доцільно додати первинний ключ однієї з колонок. Це дозволить тримати записи унікальними та прискорить запити на вибірку. Нехай у нашому випадку унікальною буде назва місяця (стовпець name)

CREATE TABLE months (id int, name varchar(10), days int, PRIMARY KEY (name));

дата та час
Тип данихОпис
DATEЗначення дати
DATETIMEЗначення дати та часу з точністю до мінти
TIMEЗначення часу

2. Вставка рядків

Тепер давайте заповнювати нашу таблицю monthsкорисною інформацією. Додавання записів до таблиці здійснюється через інструкцію INSERT. Є два способи запису цієї інструкції.

Перший спосіб не вказати імена стовпців, куди будуть вставлені дані, а вказати лише значення.

Цей спосіб запису простий, але небезпечний, оскільки немає гарантії, що в міру розширення проекту та редагування таблиці, стовпці будуть розташовуватися в тому ж порядку, що й раніше. Безпечний (і в той же час більш громіздкий) спосіб запису інструкції INSERT вимагає вказівки як значень, так і порядку стовпців:

Тут перше значення у списку VALUESвідповідає першому зазначеному імені стовпця тощо.

3. Вилучення даних з таблиць

Інструкція SELECT – наш найкращий друг, коли ми хочемо отримати дані з бази даних. Вона використовується дуже часто, так що поставтеся до цього розділу дуже уважно.

Найпростіше використання інструкції SELECT - запит, який повертає всі стовпці та рядки з таблиці (наприклад, таблиці на ім'я) characters):

SELECT * FROM "characters"

Символ зірочка (*) означає, що ми хочемо отримати дані зі всіх стовпців. Так бази даних SQL зазвичай складаються з більш ніж однієї таблиці, то потрібно обов'язково вказувати ключове слово FROM , за яким через пробіл має слідувати назва таблиці.

Іноді ми хочемо отримати дані не з усіх стовпців у таблиці. Для цього, замість зірочки (*) ми повинні через кому записати імена бажаних стовпців.

SELECT id, name FROM month

Крім того, у багатьох випадках ми хочемо, щоб отримані результати були відсортовані у порядку. У SQL ми робимо це за допомогою ORDER BY. Він може приймати опціональний модифікатор – ASC (за замовчуванням), що сортує за зростанням або DESC, що сортує за спаданням:

SELECT id, name FROM month ORDER BY name DESC

У разі використання ORDER BY переконайтеся, що воно буде останнім в інструкції SELECT . Інакше буде видано повідомлення про помилку.

4. Фільтрування даних

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

У цьому запиті ми вибираємо лише ті місяці з таблиці month, у яких більше 30 днів за допомогою оператора більше (>).

SELECT id, name FROM month WHERE days > 30

5. Розширена фільтрація даних. Оператори AND та OR

Раніше ми використовували фільтрацію даних із використанням одного критерію. Для більш складної фільтрації даних можна використовувати оператори AND та OR та операторів порівняння (=,<,>,<=,>=,<>).

Тут ми маємо таблицю, що містить чотири найбільш продаваних альбомів усіх часів. Давайте оберемо ті з них, які класифікуються як рок і які мають менше 50 мільйонів проданих копій. Це можна легко зробити шляхом розміщення оператора AND між цими двома умовами.


SELECT * FROM albums WHERE genre = "рок" AND sales_in_millions<= 50 ORDER BY released

6. In/Between/Like

WHERE також підтримує кілька спеціальних команд, дозволяючи швидко перевіряти найчастіше використовувані запити. Ось вони:

  • IN – служить для визначення діапазону умов, будь-яка з яких може бути виконана
  • BETWEEN – перевіряє, чи є значення у вказаному діапазоні
  • LIKE – шукає за певними патернами

Наприклад, якщо ми хочемо вибрати альбоми з піпі соулмузикою ми можемо використовувати IN("value1","value2") .

SELECT * FROM albums WHERE genre IN ("pop", "soul");

Якщо ми хочемо отримати всі альбоми, видані між 1975 та 1985 роками, ми повинні записати:

SELECT * FROM albums WHERE released BETWEEN 1975 AND 1985;

7. Функції

SQL напханий з функціями, які роблять різні корисні речі. Ось деякі з найчастіше використовуваних:

  • COUNT() – повертає кількість рядків
  • SUM() – повертає загальну суму числового стовпця
  • AVG() – повертає середнє значення з безлічі значень
  • MIN() / MAX() – отримує мінімальне / максимальне значення зі стовпця

Щоб отримати останній рік у нашій таблиці ми повинні записати такий SQL запит:

SELECT MAX(released) FROM albums;

8. Підзапити

У попередньому пункті ми навчилися робити прості розрахунки із даними. Якщо ми хочемо використати результати від цих розрахунків, нам не обійтися без вкладених запитів. Допустимо, ми хочемо вивести artist, albumі release yearдля найстарішого альбому у таблиці.

Ми знаємо, як отримати ці конкретні стовпці:

SELECT artist, album, released FROM albums;

Ми також знаємо, як отримати ранній рік:

SELECT MIN(released) FROM album;

Все, що потрібно зараз, - це об'єднати два запити за допомогою WHERE:

SELECT artist, album, released FROM albums WHERE released = (SELECT MIN (released) FROM albums);

9. Об'єднання таблиць

У складніших базах даних є кілька таблиць, пов'язаних друг з одним. Наприклад, нижче представлені дві таблиці про відеоігри ( video_games) та розробників відеоігор ( game_developers).


В таблиці video_gamesє колонка розробник ( developer_id), але у ній міститься ціле число, а чи не ім'я розробника. Це число є ідентифікатором ( id) відповідного розробника з таблиці розробників ігор ( game_developers), зв'язуючи логічно два списки, що дозволяє нам використовувати інформацію, що зберігається в них обох одночасно.

Якщо ми хочемо створити запит, який повертає все, що потрібно знати про ігри, ми можемо використовувати INNER JOIN для зв'язку колонок обох таблиць.

SELECT video_games.name, video_games.genre, game_developers.name, game_developers.country FROM video_games INNER JOIN game_developers ON video_games.developer_id = game_developers.id;

Це найпростіший і найпоширеніший тип JOIN. Є кілька інших варіантів, але вони застосовуються до менш частих випадків.

10. Аліаси

Якщо ви подивитеся на попередній приклад, то ви помітите, що існують дві колонки звані name. Це збиває з пантелику, так що давайте встановимо псевдонім одного з повторюваних стовпців, наприклад, nameз таблиці game_developersбуде називатися developer.

Ми також можемо скоротити запит задавши псевдоніми імен таблиць: video_gamesназвемо games, game_developers - devs:

SELECT games.name, games.genre, devs.name AS developer, devs.country FROM video_games AS games INNER JOIN game_developers AS devs ON games.developer_id = devs.id;

11. Оновлення даних

Часто ми маємо змінити дані у деяких рядках. SQL це робиться за допомогою інструкції UPDATE . Інструкція UPDATE складається з:

  • Таблиці, де знаходиться значення для заміни;
  • Імен стовпців та їх нових значень;
  • Вибрані за допомогою WHERE рядки, які ми хочемо оновити. Якщо цього зробити, то зміняться всі рядки в таблиці.

Нижче наведено таблицю tv_seriesз серіалами зі своїм рейтингом. Однак у таблицю закралася маленька помилка: хоча серіал Гра престоліві описується як комедія, він насправді не є. Давайте поправимо це!

Дані таблиці tv_series UPDATE tv_series SET genre="драма" WHERE id=2;

12. Видалення даних

Видалення рядка таблиці за допомогою SQL – це дуже простий процес. Все, що вам потрібно - це вибрати таблицю і рядок, який потрібно видалити. Давайте видалимо з попереднього прикладу останній рядок у таблиці tv_series. Робиться це за допомогою інструкції >DELETE

DELETE FROM tv_series WHERE id=4

Будьте обережними при написанні інструкції DELETE і переконайтеся, що умова WHERE є, інакше всі рядки таблиці будуть видалені!

13. Видалення таблиці

Якщо ми хочемо видалити всі рядки, але залишити саму таблицю, то скористайтеся командою TRUNCATE:

TRUNCATE TABLE table_name;

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

DROP TABLE table_name;

Будьте дуже обережні з цими командами. Їх не можна скасувати!

На цьому ми завершуємо наш підручник із SQL! Ми багато чого не розповіли, але те, що ви вже знаєте, має бути достатньо, щоб дати вам кілька практичних навичок у вашій веб-кар'єрі.

Порівняння Microsoft Access SQL та ANSI SQL z. Microsoft Access SQL переважно відповідає стандарту ANSI-89 (рівень 1) z. Деякі засоби ANSI SQL не використовуються в Microsoft Access SQL z. Microsoft Access SQL використовує зарезервовані слова та засоби, що не підтримуються ANSI SQL

Розширений синтаксис. У Access 2000 (MS Jet 4.0) внесено розширення, що наближають мову до стандарту ANSI SQL-92 - режим доступний лише за умови використання MS OLE DB Provider для Jet

Інші правила використовуються для конструкції Between. . . And, яка має наступний синтаксис: вираз 1 Between значення 1 And значення 2 У мові Microsoft Access SQL значення 1 може бути більшим, ніж значення 2; у мові ANSI SQL значення 1 має бути менше значення 2 або дорівнює йому.

підстановочні знаки z У мові Microsoft Access SQL під час використання оператора Like підтримуються як підстановочні знаки мови ANSI SQL, так і підстановочні знаки (Підстановочні знаки. Ці знаки використовують у запитах та виразах для включення всіх записів, імен файлів або інших елементів, що містять певні знаки або відповідають певному зразку.), що стосуються Microsoft Access. Одночасне використання підстановочних знаків ANSI та Microsoft Access неможливе. Допускається використання лише одного набору знаків, їх не можна змішувати.

Можливості ANSI SQL, які не підтримуються в мові Microsoft Access SQL z. Інструкція TRANSFORM забезпечує підтримку перехресних запитів z (Перехресний запит. Запит, в якому підраховується сума, середнє, число значень або виконуються інші статистичні розрахунки, після чого результати групуються у вигляді таблиці за двома наборами даних, один з яких визначає заголовки стовпців, а інший заголовки рядків.).

Можливості ANSI SQL, які не підтримуються в мові Microsoft Access SQL z. Використання пропозиції LIMIT TO nn ROWS для обмеження кількості рядків, які повертаються запитом. z. Додаткові статистичні функції SQL, такі як St. Dev та Var. P

Можливості ANSI SQL, які не підтримуються в мові Microsoft Access SQL z. Для визначення параметрів запиту (Запит із параметрами. Запит, в якому одне або кілька значень, що визначають умови відбору, вводяться в інтерактивному режимі користувачем. Запит з параметрами не є окремим типом запиту; це функціональне розширення запитів на вибірку.) використовується оголошення PARAMETERS.

Синтаксис команди SELECT [предикат] (* | таблиця. * | [таблиця. ]поле_1 [, [таблиця. ]поле_2 [, . . . ]]) FROM вираз [, . . . ]

Аргументи інструкції SELECT Предикат Один із наступних предикатів відбору: ALL, DISTINCTROW або TOP. Предикати використовуються для обмеження кількості записів, що повертаються. Якщо їх немає, за замовчуванням використовується предикат ALL.

Предикати ALL, DISTINCTROW, TOP z. SELECT ]] FROM таблиця z. ALL - Відбираються всі записи, які відповідають умовам, заданим в інструкції SQL.

Предикат DISTINCT - виключає записи, які містять значення, що повторюються, у відібраних полях. Результуючий набір даних неоновлюваний

Предикат DISTINCTROW - Опускає дані, засновані на повністю повторюваних записах, а не окремих полях, що повторюються. Предикат DISTINCTROW ігнорується, якщо запит містить лише одну таблицю або поля всіх таблиць.

DISTINCTROW z. SELECT DISTINCTROW співробітник. фіо, розклад. код_предмета z. FROM Співробітник INNER JOIN розклад z. ON співробітник. код_працівника = розклад. код_працівника;

DISTINCT SELECT DISTINCT СПІВРОБІТНИК. ПІБ, розклад. код_предмета FROM СПІВРОБІТНИК INNER JOIN розклад ON СПІВРОБІТНИК. Код_працівника = розклад. код_працівника;

Якщо користуватися табличною мовою як розробником запитів на SQL, то для включення в запит DISTINCT треба для властивості запиту «унікальні значення» вибрати значення «так», а для включення в запит DISTINCTROW треба вибрати значення «так» для властивості запиту «унікальні записи» .

Предикат від TOP. TOP n - Повертає кілька записів, що знаходяться на початку або в кінці діапазону, описаного за допомогою пропозиції ORDER BY.

приклад. Забрати 5 найчисленніших кафедр SELECT TOP 5 кафедра. [Найменування_ кафедри_повне], Count(співробітники. Код_співробітника) AS [Число співробітників] FROM кафедра INNER JOIN співробітники ON кафедра. Код_кафедри = співробітники. Код_кафедри GROUP BY кафедра. [Найменування_ кафедри_повне] ORDER BY Count(співробітники. Код_співробітника) DESC;

WITH OWNERACCESS OPTION Використовується в розрахованому на багато користувачів середовищі зі складу захищеної робочої групи, для надання користувачеві, що працює з запитом, дозволів, що відповідають дозволам власника запиту.

Аргументи інструкції SELECT поле_1, поле_2 - імена полів, з яких потрібно відібрати дані. Якщо увімкнути кілька полів, вони вийматимуться в зазначеному порядку.

Аргументи інструкції SELECT Псевдонім_1, псевдонім_2 – імена, які стануть заголовками стовпців замість вихідних назв стовпців у таблиці.

Приклади використання псевдоніма для визначення імені обчислюваного поля Приклад 1 SELECT співробітник. ПІБ, [оклад]*0. 5 AS Премія FROM співробітник; Приклад 2 SELECT Avg (співробітник. оклад) AS Середній_оклад FROM співробітник;

Аргументи посібника користувача SELECT Зовнішня. База. Дана назва бази даних, яка містить таблиці, зазначені за допомогою аргументу вираз, якщо вони не знаходяться в поточній базі даних.

Пропозиція FROM SELECT список. Полів FROM вираз z Вираз - вираз, що визначає одну або кілька таблиць, звідки витягуються дані. Цей вираз може бути іменем окремої таблиці, іменем збереженого запиту або результатом операції INNER JOIN, LEFT JOIN або RIGHT JOIN.

Спільна обробка кількох (3-х) таблиць SELECT співробітник. ПІБ, предмет. [найменування предмета коротке] FROM співробітник INNER JOIN (предмет INNER JOIN [володіння предметами] ON предмет. [Код предмета] = [володіння предметами]. [код дисципліни]) ON співробітник. Код = [володіння предметами]. [код співробітника];

конструкція Between. . . And вираз 1 BETWEEN вираз 2 AND вираз 3 z. У Microsoft Access SQL вираз 2 може бути більшим, ніж вираз 3, а в ANSI SQL - ні.

Предикат Like Символи шаблону Різні символи шаблону використовуються із предикатом Like. Символ шаблону ANSI SQL MS Access SQL z Будь-який символ? _ (підкреслення) z Будь-яка група будь-яких символів * % z Будь-який одиночний знак, що входить до списку_знаків [список_знаків] відсутній z Будь-який одиночний знак, що не входить до списку_знаків [!список_знаків] відсутній

z. Дві останні можливості – тільки для Access 2000 z. У Access 2000 як ANSI SQL-92 можливе використання підстановочних знаків ANSI z. В одному запиті змішувати знаки не можна

Пропозиція GROUP BY z. SELECT список. Полів FROM таблиця WHERE умова. Відбору z групуються. Поля – імена полів (до 10), які використовуються для групування записів. Порядок імен полів в аргументі групуються. Поля визначає рівень угруповання кожного з цих полів.

Пропозиція GROUP BY z Використовуйте пропозицію WHERE для виключення записів із групування, а пропозиція HAVING для застосування фільтра до записів після групування. z При використанні пропозиції GROUP BY всі поля у списку полів інструкції SELECT повинні бути включені в пропозицію GROUP BY, або використовуватися як аргументи статистичної функції SQL.

приклад. Кафедри, на яких працює понад 5 працівників. SELECT співробітник. [Код кафедри], Count(співробітник ПІБ) AS [Число_сотрудников] FROM співробітник GROUP BY співробітник. [Код кафедри] HAVING (((Count(співробітник. ПІБ))>5));

Завдання Є таблиці «фірми», «співробітники» та «атестації». Потрібно визначити, скільки атестованих співробітників є на кожній фірмі (один співробітник може бути атестований за кількома ПП).

Інструкція SELECT. . . INTO Синтаксіс z. Створює запит створення таблиці. SELECT поле_1[, поле_2[, . . . ]] INTO нова. Таблиця FROM джерело

Запит на об'єднання (приклад 1) SELECT Назва, Місто FROM Постачальники UNION SELECT Назва, Місто FROM Клієнти ORDER BY Місто;

Запит на об'єднання (Приклад 2) SELECT Назва, Місто FROM Постачальники UNION ALL SELECT Назва, Місто FROM Клієнти; - UNION ALL забезпечує повернення всіх записів, у тому числі повторюваних

Створення підпорядкованого запиту з використанням розробника запитів QBE Якщо підпорядкований запит використовується для визначення умов для поля, введіть інструкцію SELECT у комірку рядка Умова відбору в стовпці цього поля. Інструкцію SELECT необхідно укласти у круглі дужки.

Інструкція DELETE z Запит видалення видаляє записи повністю, а не лише вміст вказаних полів. Щоб видалити дані конкретного поля, створіть запит на оновлення записів, який замінює наявні значення Null z Запит на видалення без заданих умов пошуку видаляє всі записи з таблиці. На відміну від команди DROP структура таблиці та всі властивості зберігаються

z. Якщо встановлено «каскадне видалення» , видаляться всі пов'язані записи z. Видалені записи не можна відновити

Створення таблиці. Синтаксис команди CREATE TABLE таблиця (поле 1 тип [(розмір)] [індекс1] [, поле 2 тип [(розмір)] [індекс2] [, . . . ]] [, CONSTRAINT індекс_кілька_полів [, . . ]]))

Створення таблиці. Синтаксис команди в Access Істотно відрізняється від стандарту: zреалізовані не всі можливості стандарту SQL-92 zвключені нові конструкції zвідрізняється синтаксис

TEMPORARY Тимчасова таблиця доступна тільки в тому сеансі, де ця таблиця була створена. Після завершення цього сеансу вона автоматично видаляється. Тимчасові таблиці можуть бути доступні для кількох користувачів.

WITH COMPRESSION z. Використання атрибута WITH COMPRESSION допускається лише типів даних CHARACTER і MEMO. z. Компенсує наслідки переходу до формату представлення знаків Юнікод

Коригування структури таблиці ALTER TABLE таблиця (ADD (COLUMN тип поля[(розмір)] | ALTER COLUMN тип поля[(розмір)] | CONSTRAINT индекс_набора_полей) | DROP (COLUMN поле I CONSTRAINT имя_индекса) )

z Розмір поля в знаках визначається тільки для полів з типом даних TEXT та BINARY z ADD COLUMN - для додавання в таблицю нового поля z ​​ALTER COLUMN - для зміни типу даних існуючого поля z ​​DROP COLUMN - для видалення поля. z ADD CONSTRAINT - для додавання індексу z DROP CONSTRAINT - для видалення індексу z Неможливо одночасно додати або видалити кілька полів або індексів

Створення індексу при створенні таблиці CREATE TABLE table (field 1 type [(size)] [, field 2 type [(size)] [, …]] [, CONSTRAINT multifieldindex [, …]])

Створення індексу. Синтаксис команди CREATE [ UNIQUE ] INDEX індекс ON таблиця (поле [, поле , . . . ])

Створення індексу. Синтаксис команди CREATE [ UNIQUE ] INDEX індекс ON таблиця (поле [, поле , . . . ])

Створення індексу z. DISALLOW NULL – забороняє наявність значень Null в індексованих полях нових записів z. IGNORE NULL забороняє включення до індексу записів, що мають значення Null в індексованих полях z. PRIMARY – призначити індексовані поля ключем

Приклади створення індексів Прімер1. CREATE INDEX New. Index ON Employees (Home. Phone, Extension); Приклад 2: CREATE UNIQUE INDEX Cust. ID ON Customers (Customer. ID) WITH DISALLOW NULL;

Використання ALTER TABLE для створення індексу ALTER TABLE таблиця (ADD (COLUMN тип поля[(розмір)] | ALTER COLUMN тип поля[(розмір)] | CONSTRAINT індекс_набору_полів) | DROP (COLUMN поле I CONSTRAINT ім'я_індексу) )

Створення уявлень. Синтаксис команди CREATE VIEW представлення [(поле_1[, поле_2[, . . . ]])] AS інструкція. Select

Зміна структури таблиці ALTER TABLE таблиця (ADD (COLUMN тип поля[(розмір)] | ALTER COLUMN тип поля[(розмір)] | CONSTRAINT складовий. Індекс) | DROP (COLUMN поле I CONSTRAINT ім'я Індексу) )

Видалення об'єктів DROP (TABLE таблиця | INDEX індекс ON таблиця | PROCEDURE процедура | VIEW подання)

ALTER USER or DATABASE z. ALTER DATABASE PASSWORD newpassword oldpassword z. ALTER USER user PASSWORD Newpassword oldpassword

Синактсис GRANT (privilege[, privilege, …]) ON (TABLE table | OBJECT object| CONTAINER container ) TO (authorizationname[, authorizationname, …])

Privilege (привілей) z SELECT z DELETE z INSERT z UPDATE z DROP z SELECTSECURITY z UPDATESECURITY z DBPASSWORD z UPDATEIDENTITY z CREATE z SELECTSCHEMA z UPDATEOWNER

z. Object (об'єкт) – може позначати будь-який об'єкт, що не є таблицею, наприклад запит, уявлення z. Authorizationname – ім'я користувача або групи

ADD USER user[, user, …] TO group Додавання існуючих користувачів до існуючої групи. Користувачі будуть мати всі права, передані групі

DROP USER or GROUP z. DROP USER user[, user, …] DROP USER виводить користувача з групи, але не знищує користувача z. DROP GROUP group[, group, …] DROP GROUP видаляє групу, але не торкається користувачів групи; вони просто перестають бути членами групи

REVOKE – скасування заданих обмежень REVOKE (privilege[, privilege, …]) ON (TABLE table | OBJECT object| CONTAINTER container) FROM (authorizationname[, authorizationname, …])

Додаткові здібності MS Acces SQL z. Інструкція TRANSFORM призначена для створення перехресних запитів z Додаткові групові функції, наприклад St. Dev та Var. P z Опис PARAMETERS, призначений для створення запитів з параметрами

Інструкція SELECT. . . INTO SELECT поле 1[, поле 2[, . . . ]] INTO нова_таблиця FROM джерело

У СУБД Access застосовуються два типи запитів: QBE – запит на зразок і SQL(Structured Query Language) - мова структурованих запитів. Запит на зразок формується шляхом заповнення спеціального бланка запиту у вікні "Конструктора запитів". SQL – запити створюються програмістами із послідовності SQL – інструкцій. SQL формується, як правило, програмістами на бланку запиту, який відкривається командою "Конструктор запитів" на вкладці "Створення" та вибирається "Режим SQL" із меню Вид. Мова SQL призначений до роботи з даними, тобто. для створення, модифікації та управління даними в реляційних БД.

Слід зазначити, що є кілька режимів запитів SQL (запитів у режимі ANSI-89 SQL та ANSI-92 SQL), які відповідають стандартам ANSI-89 SQL та ANSI-92 SQL.

Інструкції містять опис набору даних на мові SQL. Інструкції SQLскладаються із пропозицій (SELECT, FROM, WHERE і т.д.). Пропозиціїна мові SQL складаються з термінів (операторів чи команд, ідентифікаторів, констант тощо). Інструкція починається оператором (однієї з команд SELECT, CREATE, INSERT, UPDATE, DELETE і т.д.) і закінчується крапкою з комою. Основні оператори SQL: SELECT, FROM та WHERE.

Наприклад, інструкція SQL:
SELECT Студенти.КодСтудента
FROM Студенти;
складається з пропозиції "SELECT Студенти.КодСтудента" та пропозиції "FROM Студенти".

Пропозиція SELECT містить оператор SELECT та ідентифікатор"Студенти.КодСтудента". Тут повне ім'я поля "КодСтудента" випереджає ім'я таблиці "Студенти" бази даних. SELECT - визначає поле, яке містить потрібні дані. Пропозиція FROM складається з оператора FROM та ідентифікатора "Студенти". FROM - визначає таблицю, яка містить поля, зазначені у реченні SELECT.

Слід зазначити, що з формуванні запиту мовою SQL необхідно враховувати його синтаксис. Незважаючи на те, що синтаксис мови SQL заснований на синтаксисі англійської мови, але для різних СУБД синтаксис версій SQL може відрізнятися.

Існує кілька типів запитів: на вибірку, оновлення, додавання і видалення записів, перехресний запит, створення та видалення таблиць, з'єднання таблиці тощо. Найбільш поширеним є запит на вибірку. Запити на вибірку застосовуються для відбору необхідної користувачеві інформації, що міститься в таблицях. Вони створюються лише для пов'язаних таблиць.

Щоб переглянути SQL - запити на вибірку в СУБД Access 2003 або 2007, необхідно в активному вікні проектування запиту за зразком (рис. 1) виконати команду Вид/режим SQL.


Рис. 1.

Отримаємо інструкцію SQL (SELECT) на вибірку даних із БД Access 2003 за критерієм успішності студентів "Оцінка = 5" (рис. 2).



Рис. 2.

Як випливає з інструкції SELECT (рис. 1), вона визначає набір даних на мові SQL: SELECT - визначає імена полів, що передуються іменами таблиць, в яких містяться дані; FROM - визначає таблиці та його взаємозв'язку через ключові поля таблиць (для цього використовується конструкція INNER JOIN...ON), на основі яких відбираються дані; WHREME – визначає умови відбору полів; ORDER BY - визначає спосіб сортування за зростанням (за умовчанням виконується сортування за зростанням) значень поля "Прізвище" таблиці "Студенти".

Як випливає з інструкції на вибірку даних з БД, мова SQL визначає, що потрібно отримати з бази даних, у своїй виконання доручається СУБД, оскільки мова SQL немає своїх засобів управління виконанням програми.

Запит SQL - це запит, який створюється за допомогою інструкцій SQL. Мова SQL (Structured Query Language) використовується при створенні запитів, а також для оновлення та управління реляційними базами даних, такими як бази даних Microsoft Access.

Коли користувач створює запит у режимі конструктора запиту, Microsoft Access автоматично створює еквівалентну інструкцію SQL. Є ряд запитів, які можна зробити лише у режимі SQL. Досвідченим програмістам часто простіше одразу писати вираз на SQL, ніж формувати запит.

Вид запиту в конструкторі:

При складних розрахунках отримання результату доводиться послідовно робити кілька запитів. Зрозуміло, що ці дії повинні виконуватись автоматично без участі користувача.

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

Обчислення у запитах, можливості створення та редагування формул.

Для полів із зазначених у схемі запиту таблиць можна вказати будь-які обчислення.

Щоб зробити обчислення, необхідно додати додаткові обчислювані поля, значення яких розраховуються на базі значень інших полів запиту.

Підсумкові запити, угруповання, підсумкові функції.

Підсумковий запит створюється за допомогою режиму Зведений запит.

Можна використовувати три таблиці, включаючи сполучну таблицю.

При цьому можна будь-де запитати викликати контекстне меню (права кнопка миші) і вибрати ознаку «групові операції».

У бланку запиту з'явиться новий рядок Угруповання.

Підсумкові функції: у полі, яким ми хочемо порахувати підсумки, вибрати зі списку функцію «Sum» (сума), щоб підсумувати всі значення вибраних полів. Функція «Підрахунок» вважає кількість значень поля. інформація редагування microsoft

Запит - це звернення до СУБД до виконання будь-яких операцій із даними: вибору частини даних із загального обсягу, додавання обчислюваних полів, масове зміна даних, і т. буд.

У запиті можна:

  • - відібрати інформацію із кількох пов'язаних таблиць;
  • - Використовувати складні умови відбору;
  • - користувач може сам ввести значення параметрів, додати поля, що обчислюються;
  • - Виконати підсумкові розрахунки.

Типи запитів:

  • - вибірка;
  • - Створення таблиці;
  • - оновлення (зміна даних);
  • - Додавання записів;
  • - Видалення записів.

Запити використовуються як джерела записів для форм і звітів. Здебільшого і у формах, і у звітах перед видачею потрібно відібрати частину даних за будь-якими умовами та відсортувати дані. Це робиться за допомогою запитів. Запит може зберігатися окремо або прив'язаний до форми або звіту.

У Microsoft Access є кілька типів запитів.

Згодом у ході може знадобитися перенесення файл-серверної бази даних Microsoft Office Access (Access) у формат клієнт-серверної СУБД. Зазвичай для цього використовується ODBC. Однак для перенесення до Microsoft SQL Server (MS SQL) СУБД Access та MS SQL мають зручні спеціалізовані засоби.

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

Перенесення бази даних засобамиAccess («Майстер перетворення на форматSQLServer»)

Щоб розпочати перенесення, потрібно натиснути кнопку «SQL Server» в області «Переміщення даних» вкладки «Робота з базами даних».

У вікні потрібно вибрати, куди будуть перенесені дані.

Можливі два варіанти:

  1. Експорт у вже існуючу базу даних MS SQL;
  2. Створення нової бази даних (за замовчуванням).

Задаємо ім'я сервера, на який переносимо базу даних, ім'я створюваної бази даних і вказуємо ім'я користувача та пароль для підключення.

Для вибору однієї таблиці служить кнопка «>», а вибору всіх таблиць кнопка «>>». Для того, щоб відмовитися від перенесення призначені кнопки «<» и «<<» соответственно.

Після вибору таблиць можна встановити додаткові параметри їх перенесення. Зокрема сучасні версії Access можуть експортувати як самі таблиці з даними, а й зв'язку з-поміж них. Це значно скорочує час необхідний міграції бази даних, оскільки не потрібно їх повторно створювати після перенесення.

  • Створити новий клієнт-серверний додаток з інтерфейсом Access;
  • Включити перенесені таблиці у вихідну базу даних як зовнішні (за замовчуванням);
  • Не виконувати жодних дій з вихідною базою даних.

Коли вся необхідна інформація зібрана можна повернутися до одного з попередніх кроків для перевірки або почати процес перенесення натиснувши кнопку «Готово».

Хід процесу переносу наочно відображається у спеціальному вікні.

Після завершення перенесення можна відкрити SQL Server Management Studio і побачити результат.

Цей спосіб найбільш простий і зручний, але, на жаль, дозволяє переносити тільки таблиці і супутні їм елементи (індекси, зв'язки і т.д.).

Імпорт бази данихAccess засобамиMicrosoftSQLServer

MS SQL може імпортувати дані з різних джерел. Але прямий імпорт із Access можливий лише для бази даних старого формату (.mdb).

Детальну інструкцію з імпорту таких баз даних можна знайти.

Імпорт баз даних нових форматів (2007 та вище) набагато складніший.

Існує два способи вирішення цього завдання:

  • Попередньо експортувати базу даних Access у старий формат.
    У такому випадку можна без проблем скористатися інструкцією, наведеною за посиланням вище;
  • Використання ODBC.
    Створення джерела даних для бази даних Access із наступним підключенням через нього із MS SQL Server.

На жаль, спосіб, пов'язаний з використанням ODBC, досить складний у разі 64-розрядних версій Windows.

Причина в тому, що 64-розрядні версії MS SQL комплектуються 32-розрядними версіями SQL Server Management Studio. Ця обставина призводить до того, що бази даних Access, для яких джерела даних створені на основі 64-розрядних драйверів, неможливо імпортувати за допомогою цієї програми.

Виходу тут знову ж таки два (маються на увазі тільки способи з використання графічного інтерфейсу):

  • використовувати 32-розрядні версії Windows, MS SQL, Office;
  • Використовувати лише 32-розрядний Access і налаштувати джерело даних за допомогою 32-розрядного диспетчера ODBC (зазвичай це файл C:\Windows\SysWOW64\odbcad32.exe);
  • Використовувати альтернативне програмне забезпечення для роботи з MS SQL.

Однак навіть якщо все-таки вдасться налагодити процес імпорту, користі від цього може виявитися набагато менше, ніж витрачено сил і часу.

При імпорті переносяться самі таблиці та їх вміст і більше нічого (порівняйте з можливостями попереднього способу).

Також слід зазначити, що при прямому імпорті з Access частково вирішується проблема експорту запитів (через ODBC доступу до запитів немає) . Проте, запити за замовчуванням імпортуються до бази даних MS SQL як стандартних таблиць.

На щастя, є можливість більш тонкої установки параметрів імпорту і можна вручну замінити SQL запит на створення таблиці запитом на створення уявлення.

Для цього потрібно у вікні на скріншоті вище для вибраного запиту Access натиснути кнопку "Змінити".

У вікні, натиснути кнопку «Змінити SQL…»

Відкриється вікно редагування SQL запиту, в якому, власне, потрібно замінити запит, згенерований автоматично

своїм власним.

В результаті, запит з Access буде переданий до бази даних MS SQL коректно, як представлення, а не таблиці.

Звичайно, подібні налаштування це копітка ручна праця, що вимагає до того ж певних знань і навичок, але все-таки, як кажуть, «краще, ніж нічого».

Тому цей спосіб перенесення баз даних Access в MS SQL більше підходить кваліфікованим фахівцям з обох СУБД.

Нижче наведено приклад імпорту бази даних Access за допомогою ODBC у 32-розрядній версії Windows. У 64-розрядній версії Windows під час використання 32-розрядної версії Access імпорт здійснюється аналогічно, але джерело даних створюється в 32-розрядному диспетчері ODBC.

Створюємо джерело даних.

У вікні вказуємо його ім'я.

Потім натискаємо кнопку «Вибрати» і вказуємо, до якої бази даних Access необхідно підключитися.

Коли вказано ім'я джерела та файл бази даних, залишається натиснути кнопку "OK" і джерело даних для потрібної бази даних Access готовий.

Тепер можна приступати безпосередньо до імпорту бази даних у MS SQL.

Для цього в контекстному меню бази даних, в яку необхідно виконати імпорт, вибираємо пункти «Завдання» -> «Імпорт даних».

Відкриється «Майстер імпорту та експорту даних»

У списку «Джерело даних», що розкривається, необхідно вибрати «.Net Framework Data Provider for Odbc» (якщо не вибрано за замовчуванням) і в рядку Dsn в таблиці вказати ім'я створеного вище джерела даних для бази даних Access. Рядок підключення (Connection String) буде сформований автоматично.

Далі необхідно вказати в яку базу даних, якого екземпляра MS SQL імпорт. Для цього після натискання кнопки «Далі» вибираємо в списку «Призначення» або «Microsoft SQL Server Native Client» (як показано на скріншоті нижче) або «Microsoft OLE DB Provider for SQL Server», вказуємо потрібну базу даних ім'я користувача та пароль для підключення.

Потім необхідно вибрати таблиці, які будуть імпортовані. Як було зазначено вище, під час використання ODBC імпорт запитів Accessне доступний. Тому, на відміну від попереднього скріншота зі списком об'єктів для імпорту, у цьому списку будуть виключно таблиці.

За допомогою прапорців можна вибрати як усі таблиці відразу (що і зроблено в цьому прикладі), так і деякі з них окремо.

Потім буде показано вікно з остаточними параметрами процесу імпорту. Залишимо всі значення за замовчуванням.

Після натискання на кнопку Готово процес імпорту буде виконано. Якщо все зроблено правильно та імпорт виконано успішно, вікно з інформацією про виконання імпорту не міститиме помилок (див. скріншот нижче).

Для завершення роботи майстра достатньо натиснути кнопку "Закрити".

Результат можна побачити SQL Server Management Studio.

Перенесення бази даних із боку засобамиODBC

Цей спосіб є універсальним для експорту даних з Access до будь-якої іншої СУБД. Достатньо лише щоб вона підтримувала роботу з ODBC.

Приклад такого експорту вже був розглянутий у статті « »

ДляMSSQL даний спосіб перенесення бази даних зAccess не бажаний, оскільки експортуються лише таблиці з даними, а запити експортуються лише вигляді стандартних таблиць.

Однак така можливість перенесення досі є (версія 2014 року не стала винятком). Тому розглянемо і її теж.

Для початку створимо джерело даних для роботи з MS SQL (нехай це буде користувальницький DSN).

Вкажіть драйвер для джерела.

Після цього буде запущено процес його створення та налаштування.

Задамо ім'я джерела даних та вкажемо ім'я екземпляра MS SQL, якого потрібно здійснити підключення.

Після цього вкажемо базу даних, яку планується перенести таблицю чи запит. Перенесення за допомогоюODBC можна виконати лише у вже існуючу базу даних. Тому, якщо дані потрібно перенести до нової бази даних, її необхідно попередньо створити.

Після натискання кнопки «Готово» буде показано вікно з підсумковою інформацією про джерело даних, що створюється.

Щоб джерело даних було остаточно створено, достатньо натиснути кнопку «Ok». Але краще попередньо перевірити його працездатність, натиснувши на кнопку «Перевірити джерело даних».

Якщо все зроблено правильно, буде відображено повідомлення про успішну перевірку.

Тепер, коли є джерело даних, можна розпочинати безпосередньо процес перенесення. Як приклад експортуємо з бази даних єдиний запит «Contacts Запит».

Для цього виділимо його мишею і натисніть кнопку «Додатково» в області «Експорт» вкладки «Зовнішні дані». У меню, що розкрилося, виберемо «База даних ODBC».

У разі залишено вихідне значення.

Після натискання кнопки "OK" необхідно вибрати створене джерело даних.

Потім введіть ім'я користувача та пароль для підключення до сервера.

Після натискання кнопки "OK" експорт буде виконано.

Проте, як говорилося вище, результат експорту у разі запиту не коректний.

Замість представлення «Contacts Запит» у базі даних MS SQL було створено однойменну таблицю.

Крім того, навіть якщо експортувати лише таблиці, після експорту необхідно виконати безліч додаткових дій (повторне створення зв'язків тощо). Тому описаний спосіб перенесення баз даних з Access в MS SQL вже практично не застосовується.

© 2022 androidas.ru - Все про Android