Запит sql у ms access. Вступ. Мова запитів SQL Використання SQL запитів у access

Головна / Додатковий функціонал

Один запит SQL можна вкладати до іншого. Підзапит – є не що інше, як запит усередині запиту. Як правило, підзапит використовується в конструкції WHERE. Але можливі й інші засоби використання підзапитів.

Запит Q011.Виводиться інформація про товари з таблиці m_product, коди яких є і в таблиці m_income:

SELECT *
FROM m_product
WHERE id IN (SELECT product_id FROM m_income);

Запит Q012.Виводиться список товарів з таблиці m_product, кодів яких немає у таблиці m_outcome:

SELECT *
FROM m_product
WHERE id NOT IN (SELECT product_id FROM m_outcome);

Запит Q013.У цьому запиті SQL виводиться унікальний список кодів та назв товарів, коди яких є в таблиці m_income, але яких немає в таблиці m_outcome:

SELECT DISTINCT product_id, title
FROM m_income INNER JOIN m_product
ON m_income.product_id=m_product.id
WHERE product_id NOT IN (SELECT product_id FROM m_outcome);

Запит Q014.Виводиться з таблиці m_category унікальний список категорій, назви яких починаються на літеру М:

SELECT DISTINCT title
FROM m_product
WHERE title LIKE "М*";

Запит Q015.Приклад виконання арифметичних операцій над полями у запиті та перейменування полів у запиті (alias). У цьому прикладі для кожного запису про витрату товару підраховуються сума витрати = кількість * ціна та розмір прибутку, при припущенні, що прибуток становить 7 відсотків від суми продажів:

Price, amount*price AS outcome_sum,
amount*price/100*7 AS profit
FROM m_outcome;

Запит Q016.Проаналізувавши та спростивши арифметичні операції, можна збільшити швидкість виконання запиту:


outcome_sum*0.07 AS profit
FROM m_outcome;

Запит Q017.За допомогою інструкції INNER JOIN можна поєднати дані кількох таблиць. У наступному прикладі, залежно від значення ctgry_id, кожного запису таблиці m_income, зіставляється назва категорії з таблиці m_category, до якої належить товар:

SELECT c.title, b.title, dt, amount, price, amount*price AS income_sum
FROM (m_income AS a INNER JOIN m_product AS b ON a.product_id=b.id)
INNER JOIN m_category AS c ON b.ctgry_id=c.id
ORDER BY c.title, b.title;

Запит Q018.Такі функції як SUM – сума, COUNT – кількість, AVG – середнє арифметичне значення, MAX – максимальне значення, MIN – мінімальне значення називаються агрегатними функціями. Вони набувають безліч значень, і після їх обробки повертають єдине значення. Приклад підрахунку суми добутку полів amount і price за допомогою агрегатної функції SUM:

SELECT SUM(amount*price) AS Total_Sum
FROM m_income;

Запит Q019.Приклад використання кількох агрегатних функцій:


SELECT Sum(amount) AS Amount_Sum, AVG(amount) AS Amount_AVG,
MAX(amount) AS Amount_Max, Min(amount) AS Amount_Min,
Count(*) AS Total_Number
FROM m_income;

Запит Q020.У цьому прикладі підраховано суму всіх товарів з кодом 1, оприбуткованих у червні 2011 року:

SELECT
FROM m_income
WHERE product_id=1 AND dt BETWEEN #6/1/2011# AND #6/30/2011#;

Запит Q021.Наступний запит SQL обчислює яку суму було продано товарів, що мають код 4 або 6:

SELECT
FROM m_outcome
WHERE product_id=4 OR product_id=6;

Запит Q022.Обчислюється на яку суму було продано 12 червня 2011 року товарів, що мають код 4 або 6:

SELECT Sum(amount*price) AS outcome_sum
FROM m_outcome
WHERE (product_id=4 OR product_id=6) AND dt=#6/12/2011#;

Запит Q023.Завдання таке. Обчислити яку загальну суму було оприбутковано товарів категорії "Хлібобулочні вироби".

Для вирішення цього завдання потрібно оперувати трьома таблицями: m_income, m_product та m_category, тому що:
- кількість та вартість оприбуткованих товарів зберігаються у таблиці m_income;
- код категорії кожного товару зберігається у таблиці m_product;
- Назва категорії title зберігається у таблиці m_category.

Для вирішення цього завдання скористаємося наступним алгоритмом:
- визначення коду категорії "Хлібобулочні вироби" з таблиці m_category за допомогою підзапиту;
- з'єднання таблиць m_income та m_product для визначення категорії кожного оприбуткованого товару;
- обчислення суми приходу(= кількість*ціна) для товарів, код категорії яких дорівнює коду, визначеному вищезазначеним підзапитом.


FROM m_product AS a INNER JOIN m_income AS b ON a.id=b.product_id
WHERE ctgry_id = (SELECT id FROM m_category WHERE title="(!LANG:Хлібобулочні вироби)"); !}

Запит Q024.Завдання обчислення загальної суми оприбуткованих товарів категорії "Хлібобулочні вироби" вирішимо наступним алгоритмом:
- кожного запису таблиці m_income, залежно від значення його product_id, із таблиці m_category, зіставити назву категорії;
- виділити записи, для яких категорія дорівнює "Хлібобулочні вироби";
- Обчислити суму приходу = кількість *ціна.

SELECT Sum(amount*price) AS income_sum
FROM (m_product AS a INNER JOIN m_income AS b ON a.id=b.product_id)
WHERE c.title="(!LANG:Хлібобулочні вироби"; !}

Запит Q025.У цьому прикладі обчислюється скільки найменувань товарів було витрачено:

SELECT COUNT(product_id) AS product_cnt
FROM (SELECT DISTINCT product_id FROM m_outcome) AS t;

Запит Q026.Інструкція GROUP BY використовується для групування записів. Зазвичай записи групуються за значенням одного чи кількох полів, і щодо кожної групи застосовується будь-яка агрегатна операція. Наприклад, наступний запит складає звіт про продаж товарів. Тобто генерується таблиця, в якій будуть назви товарів та сума, на яку вони продані:

SELECT title, SUM(amount*price) AS outcome_sum
FROM m_product AS a INNER JOIN m_outcome AS b
ON a.id=b.product_id
GROUP BY title;

Запит Q027.Звіт про продаж за категоріями. Тобто генерується таблиця, в якій будуть назви категорій товарів, загальна сума, на яку продано товари цих категорій, та середня сума продажів. Функція ROUND використана для округлення середнього значення до сотої частки (другий знак після роздільника цілої та дробової частин):

SELECT c.title, SUM(amount*price) AS outcome_sum,
ROUND(AVG(amount*price),2) AS outcome_sum_avg
FROM (m_product AS a INNER JOIN m_outcome AS b ON a.id=b.product_id)
INNER JOIN m_category AS c ON a.ctgry_id=c.id
GROUP BY c.title;

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

SELECT product_id, SUM(amount) AS amount_sum,
Round(Avg(amount),2) AS amount_avg
FROM m_income
GROUP BY product_id
HAVING Sum(amount)>=500;

Запит Q029.У цьому запиті обчислюється для кожного товару сума та середнє значення його надходжень, здійснених у другому кварталі 2011 року. Якщо загальна сума приходу товару не менше 1000, то відображається інформація про цей товар:

SELECT title, SUM(amount*price) AS income_sum
FROM m_income a INNER JOIN m_product b ON a.product_id=b.id
WHERE dt BETWEEN #4/1/2011# AND #6/30/2011#
GROUP BY title
HAVING SUM (amount * price)> = 1000;

Запит Q030.У деяких випадках потрібно зіставляти кожному запису деякої таблиці кожен запис іншої таблиці; що називається декартовим твором. Таблиця, що утворюється внаслідок такої сполуки, називається таблицею Декарта. Наприклад, якщо деяка таблиця А має 100 записів і таблиця має 15 записів, то їх таблиця Декарта буде складатися з 100 * 15 = 150 записів. Наступний запит поєднує кожен запис таблиці m_income з кожним записом таблиці m_outcome:

SELECT *FROM m_income, m_outcome;

Запит Q031.Приклад групування записів за двома полями. Наступний запит SQL обчислює по кожному постачальнику суму та кількість товарів, що від нього надходять:


SUM(amount*price) AS income_sum

Запит Q032.Приклад групування записів за двома полями. Наступний запит обчислює для кожного постачальника суму та кількість його продуктів, проданих нами:

SELECT supplier_id, product_id, SUM(amount) AS amount_sum,
SUM(amount*price) AS outcome_sum
GROUP BY supplier_id, product_id;

Запит Q033.У цьому прикладі два наведених вище запити (q031 і q032) використані як підзапити. Результати цих запитів методом LEFT JOIN об'єднані в один звіт. Наступний запит виводить звіт про кількість та суму надісланих та реалізованих продуктів по кожному постачальнику. Слід звернути увагу, що якщо якийсь товар вже надійшов, але ще не реалізований, то клітина outcome_sum для цього запису буде порожньою. Також необхідно зазначити, що даний запит є лише прикладом використання щодо складних запитів як підзапит. Продуктивність даного запиту SQL при великому обсязі даних є сумнівною:

SELECT *
FROM
SUM(amount*price) AS income_sum
ON a.product_id=b.id GROUP BY supplier_id, product_id) AS a
LEFT JOIN
(SELECT supplier_id, product_id, SUM(amount) AS amount_sum,
SUM(amount*price) AS outcome_sum
FROM m_outcome AS a INNER JOIN m_product AS b
ON a.product_id=b.id GROUP BY supplier_id, product_id) AS b
ON (a.product_id=b.product_id) AND (a.supplier_id=b.supplier_id);

Запит Q034.У цьому прикладі два наведених вище запити (q031 і q032) використані як підзапити. Результати цих запитів методом RIGTH JOIN об'єднані в один звіт. Наступний запит виводить звіт про суму платежів кожного клієнта за використаними ним платіжними системами та сумою зроблених ним інвестицій. Наступний запит виводить звіт про кількість та суму надісланих та реалізованих продуктів по кожному постачальнику. Слід звернути увагу, що якщо якийсь товар вже реалізований, але ще не надійшов, то клітина income_sum для цього запису буде порожньою. Наявність таких порожніх клітин є показником помилки в обліку продажів, тому що до продажу спочатку необхідно, щоб відповідний товар надійшов:

SELECT *
FROM
(SELECT supplier_id, product_id, SUM(amount) AS amount_sum,
SUM(amount*price) AS income_sum
FROM m_income AS a INNER JOIN m_product AS b ON a.product_id=b.id
GROUP BY supplier_id, product_id) AS a
RIGHT JOIN
(SELECT supplier_id, product_id, SUM(amount) AS amount_sum,
SUM(amount*price) AS outcome_sum
FROM m_outcome AS a INNER JOIN m_product AS b ON a.product_id=b.id
GROUP BY supplier_id, product_id) AS b
ON (a.supplier_id=b.supplier_id) AND (a.product_id=b.product_id);

Запит Q035.Виводиться звіт про суму доходів та витрат за продуктами. Для цього створюється список продуктів за таблицями m_income та m_outcome, потім для кожного продукту з цього списку обчислюється сума його приходів за таблицею m_income та сума його витрат за таблицею m_outcome:

SELECT product_id, SUM(in_amount) AS income_amount,
SUM(out_amount) AS outcome_amount
FROM
(SELECT product_id, amount AS in_amount, 0 AS out_amount
FROM m_income
UNION ALL
SELECT product_id, 0 AS in_amount, amount AS out_amount
FROM m_outcome) AS t
GROUP BY product_id;

Запит Q036.Функція EXISTS повертає значення TRUE, якщо передане їй безліч містить елементи. Функція EXISTS повертає значення FALSE, якщо передана їй множина порожня, тобто не містить елементів. Наступний запит виводить коди товарів, що містяться як у таблиці m_income, так і в таблиці m_outcome:

SELECT DISTINCT product_id
FROM m_income AS a
WHERE EXISTS(SELECT product_id FROM m_outcome AS b

Запит Q037.Виводяться коди товарів, що містяться як у таблиці m_income, так і в таблиці m_outcome:

SELECT DISTINCT product_id
FROM m_income AS a
WHERE product_id IN (SELECT product_id FROM m_outcome)

Запит Q038.Виводяться коди товарів, які містяться як у таблиці m_income, але не містяться у таблиці m_outcome:

SELECT DISTINCT product_id
FROM m_income AS a
WHERE NOT EXISTS(SELECT product_id FROM m_outcome AS b
WHERE b.product_id=a.product_id);

Запит Q039.Виводиться список товарів, сума продажу яких є максимальною. Алгоритм такий. До кожного товару обчислюється сума його продажів. Потім визначається максимум цих сум. Потім, для кожного товару знову обчислюється сума його продажів, і виводяться код і сума продажів товарів, сума продажів яких дорівнює максимальній:

SELECT product_id, SUM(amount*price) AS amount_sum
FROM m_outcome
GROUP BY product_id
HAVING SUM(amount*price) = (SELECT MAX(s_amount)
FROM (SELECT SUM(amount*price) AS s_amount FROM m_outcome GROUP BY product_id));

Запит Q040.Зарезервоване слово IIF (умовний оператор) використовується для оцінки логічного вираження та виконання тієї чи іншої дії залежно від результату (TRUE або FALSE). У наступному прикладі поставка товару вважається «малою», якщо кількість менша за 500. В іншому випадку, тобто кількість надходження більша або дорівнює 500, поставка вважається «великою»:

SELECT dt, product_id, amount,
IIF(amount<500,"малая","большая") AS mark
FROM m_income;

Запит SQL Q041.Якщо оператор IIF використовується кілька разів, зручніше замінити його оператором SWITCH. Оператор SWITCH (оператор множинного вибору) використовується для оцінки логічного вираження та виконання тієї чи іншої дії залежно від результату. У наступному прикладі поставлена ​​партія вважається «малою», якщо кількість товару в партії менша за 500. Інакше, тобто якщо кількість товару більша або дорівнює 500, партія вважається «великою»:

SELECT dt, product_id, amount,
SWITCH(amount<500,"малая",amount>=500,"велика") AS mark
FROM m_income;

Запит Q042. <300 не выполняется, то проверяется является ли количество товаров в партии меньше 500. Если размер партии меньше 500, то она считается «средней». В противном случае партия считается «большой»:

SELECT dt, product_id, amount,
IIF(amount<300,"малая",
IIF(amount<1000,"средняя","большая")) AS mark
FROM m_income;

Запит SQL Q043.У наступному запиті якщо кількість товару в партії, що надійшла менше 300, то партія вважається «малою». Інакше, тобто якщо умова amount<300 не выполняется, то проверяется является ли количество товаров в партии меньше 500. Если размер партии меньше 500, то она считается «средней». В противном случае партия считается «большой»:

SELECT dt, product_id, amount,
SWITCH(amount<300,"малая",
amount<1000,"средняя",
amount>=1000,"велика") AS mark
FROM m_income;

Запит SQL Q044.У наступному запиті продаж поділяються на три групи: малі (до 150), середні (від 150 до 300), великі (300 і більше). Для кожної групи обчислюється підсумкова сума:

SELECT Category, SUM(outcome_sum) AS Ctgry_Total
FROM (SELECT amount*price AS outcome_sum,
IIf(amount*price<150,"малая",
IIf(amount*price<300,"средняя","большая")) AS Category
FROM m_outcome) AS t
GROUP BY Category;

Запит SQL Q045.Функція DateAdd використовується для додавання днів, місяців або років до цієї дати та отримання нової дати. Наступний запит:
1) до дати з поля dt додає 30 днів та відображає нову дату в полі dt_plus_30d;
2) до дати з поля dt додає 1 місяць та відображає нову дату в полі dt_plus_1m:

SELECT dt, dateadd("d",30,dt) AS dt_plus_30d, dateadd("m",1,dt) AS dt_plus_1m
FROM m_income;

Запит SQL Q046.Функція DateDiff призначена для обчислення різниці між двома датами у різних одиницях (днях, місяцях або роках). Наступний запит обчислює різницю між датою в полі dt та поточною датою у днях, місяцях та роках:

SELECT dt, DateDiff("d",dt,Date()) AS last_day,
DateDiff("m",dt,Date()) AS last_months,
DateDiff("yyyy",dt,Date()) AS last_years
FROM m_income;

Запит SQL Q047.Обчислюються кількість днів з дня надходження товару (таблиця m_income) до поточної дати за допомогою функції DateDiff та зіставляється термін придатності (таблиця m_product):


DateDiff("d",dt,Date()) AS last_days
FROM m_income AS a INNER JOIN m_product AS b
ON a.product_id=b.id;

Запит SQL Q048.Обчислюються кількість днів з дня надходження товару до поточної дати, потім перевіряється чи перевищує цю кількість термін придатності:

SELECT a.id, product_id, dt, lifedays,
DateDiff("d",dt,Date()) AS last_days, IIf(last_days>lifedays,"Так","Ні") AS date_expire
FROM m_income a INNER JOIN m_product b
ON a.product_id=b.id;

Запит SQL Q049.Обчислюється кількість місяців з дня надходження товару до поточної дати. У стовпці month_last1 обчислюється абсолютна кількість місяців, у стовпці month_last2 обчислюється кількість повних місяців:

SELECT dt, DateDiff("m",dt,Date()) AS month_last1,
DateDiff("m",dt,Date())-iif(day(dt)>day(date()),1,0) AS month_last2
FROM m_income;

Запит SQL Q050.Виводиться поквартальний звіт про кількість та суму оприбуткованих товарів за 2011 рік:

SELECT kvartal, SUM(outcome_sum) AS Total
FROM (SELECT amount*price AS outcome_sum, month(dt) AS m,
SWITCH(m<4,1,m<7,2,m<10,3,m>=10,4) AS kvartal
FROM m_income WHERE year(dt)=2011) AS t
GROUP BY kvartal;

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

SELECT product_id, SUM(in_sum) AS income_sum, SUM(out_sum) AS outcome_sum
FROM (SELECT product_id, amount*price as in_sum, 0 as out_sum
from m_income
UNION ALL
SELECT product_id, 0 as in_sum, amount*price as out_sum
from m_outcome) AS t
GROUP BY product_id
HAVING SUM(in_sum)

Запит Q052.Нумерацію рядків, які повертаються запитом, реалізують по-різному. Наприклад, можна перенумерувати рядки звіту, підготовленого в MS Access засобами самого MS Access. Перенумерувати можна і за допомогою мов програмування, наприклад, VBA або PHP. Однак, іноді це необхідно зробити в самому запиті SQL. Отже, наступний запит пронумерує рядки таблиці m_income відповідно до порядку зростання значень поля ID:

SELECT COUNT(*) as N, b.id, b.product_id, b.amount, b.price
FROM m_income a INNER JOIN m_income b ON a.id<= b.id
GROUP BY b.id, b.product_id, b.amount, b.price;

Запит Q053.Виводиться п'ятірка лідерів серед продуктів із сумою продажів. Виведення перших п'яти записів здійснюється за допомогою інструкції TOP:

SELECT TOP 5, product_id, sum(amount*price) AS summa
FROM m_outcome
GROUP BY product_id
ORDER BY sum(amount*price) DESC;

Запит Q054.Виводиться п'ятірка лідерів серед продуктів за сумою продажів і нумерує рядки в результаті:

SELECT COUNT(*) AS N, b.product_id, b.summa
FROM

FROM m_outcome GROUP BY product_id) AS a
INNER JOIN
(SELECT product_id, sum(amount*price) AS summa,
summa*10000000+product_id AS id
FROM m_outcome GROUP BY product_id) AS b
ON a.id>=b.id
GROUP BY b.product_id, b.summa
HAVING COUNT(*)<=5
ORDER BY COUNT(*);

Запит Q055.Наступний SQL-запит показує використання математичних функцій COS, SIN, TAN, SQRT, ^ та ABS у MS Access SQL:

SELECT (select count(*) from m_income) as N, 3.1415926 as pi, k,
2*pi*(k-1)/N as x, COS(x) as COS_, SIN(x) as SIN_, TAN(x) as TAN_,
SQR(x) as SQRT_, x^3 as "x^3", ABS(x) as ABS_
FROM (SELECT COUNT(*) AS k
FROM m_income AS a INNER JOIN m_income AS b ON a.id<=b.id
GROUP BY b.id) t;

СУБД Access

Microsoft Access є СУБД реляційного типу, в якій розумно збалансовані всі засоби та можливості, типові для сучасних систем управління базами даних. Реляційна база полегшує пошук, аналіз, підтримку та захист даних, оскільки вони зберігаються в одному місці. Access у перекладі з англійської означає "доступ". MS Access одна з найпотужніших, гнучких і найпростіших у використанні СУБД. У ній можна створювати більшість додатків, не написавши жодного рядка програми, але якщо потрібно створити щось дуже складне, то на цей випадок MS Access надає потужну мову програмування – Visual Basic Application.

Популярність СУБД Microsoft Access обумовлена ​​такими причинами:

Доступність у вивченні та зрозумілість дозволяють Access бути однією з найкращих систем швидкого створення програм управління базами даних;

Можливість використання технології OLE;

Інтегрованість із пакетом Microsoft Office;

Повна підтримка веб-технологій;

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

Наявність великого набору "майстрів" для розробки об'єктів.

Основними видами об'єктів, із якими працює програма, є: таблиця, запит, форма, звіт, сторінка, макрос, модуль.

Таблиця – це об'єкт, який використовується для зберігання даних. Кожна таблиця містить інформацію про об'єкт певного типу. Таблиця містить поля (стовпці), у яких зберігаються різноманітні дані, і записи (рядки). Для кожної таблиці повинен бути визначений первинний ключ (одне поле, що має для кожного запису унікальне значення або кілька полів, сукупне значення яких для кожного запису є унікальним), який є однозначним ідентифікатором кожного запису таблиці.

Для збільшення швидкості доступу до даних окремі поля таблиці (або їхня сукупність) можуть бути оголошені індексами. Індекс - засіб, що прискорює пошук та сортування в таблиці за рахунок використання ключових значень, що дозволяє забезпечити унікальність рядків таблиці. Первинний ключ таблиці автоматично індексується. Не допускається створення індексів для полів із деякими типами даних.

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

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

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

візуальна розробка програмування база

Сторінка – використовується для доступу до даних поточної бази даних Access.

Макрос - об'єкт, що є структурованим описом однієї або кількох дій, які повинен виконати Access у відповідь на певну подію.

Модуль - об'єкт, що містить програми на Microsoft Visual Basic, які дозволяють розбити процес на дрібніші дії і виявити помилки, які не можна було б знайти з використанням макросів.

Запуск СУБД здійснюється Пуск – Програми – Microsoft Access. Виконати команду Файл - Створити.

Інтерфейс роботи з об'єктами бази даних уніфіковано. По кожному їх передбачені стандартні режими роботи: Створити (створення структури об'єктів); Конструктор (зміна структури об'єктів); Відкрити (Перегляд, Запуск – призначений для роботи з об'єктами бази даних).

Мова запитів SQL

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

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

Мова SQL є сукупністю операторів:

оператори визначення даних (Data Definition Language, DDL);

оператори маніпуляції даними (Data Manipulation Language, DML);

оператори визначення доступу до даних (Data Control Language, DCL);

оператори управління транзакціями (Transaction Control Language, TCL).

Запити в MS Access зберігаються та реалізуються за допомогою мови SQL. Хоча більшість запитів можна створити графічними засобами (запити на зразок), проте зберігаються вони як інструкцій SQL. У ряді випадків (наприклад, у підлеглих запитах) можна використовувати лише мову SQL.

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

У SQL використовується тризначна логіка. Поряд із традиційними логічними значеннями TRUE і FALSE використовується NULL (НЕВІДОМОСТІ або ВІДСУТНІСТЬ ДАНИХ).

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

Запит на мові SQL складається з інструкцій. Кожна інструкція може містити декілька пропозицій.

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

Як показує практика, він досить простий у освоєнні та максимально використовує стандартну лексику англійської мови. Як і будь-яка інша мова програмування, SQL має власну логіку та синтаксис, набір основних команд та правила їх використання.

Класифікація команд мови SQL

Усі стандартні можна розглядати, виходячи з їх призначення. Як основу негласної класифікації можна взяти такі набори, як:

    Команди для побудови запитів.

    Команди вбудованих процедур та функцій.

    Команди тригерів та системних таблиць.

    Набори комбінацій для роботи з датою та строковими змінними.

    Команди для роботи з даними та таблицями.

Цю класифікацію можна продовжувати до нескінченності, але основні набори команди SQL будуть побудовані саме виходячи з цих типів.

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

Сферу використання SQL можна розглядати з погляду офісного програмного забезпечення, зокрема MicrosoftAccess. Ця мова, а точніше, її різновид - MySQL, дозволяє адмініструвати бази даних у мережі Internet. Навіть середовище розробки Oracle використовує основу своїх запитів команди SQL.

Використання SQL у MicrosoftAccess

Одним із найпростіших прикладів використання мови для програмування баз даних вважається пакет програмного забезпечення Microsoft Office. Вивчення цього програмного продукту передбачено шкільним курсом інформатики, а одинадцятому класі розглядається система управління базою даних MicrosoftAccess.

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

Розглянемо конкретний приклад:

SELECT Pe_SurName

WHERE Pe_Name = "Мері";

Виходячи з синтаксису команди можна зрозуміти, що вона поверне користувачеві прізвище людини, в даному випадку жінки на ім'я Мері, яка зберігається в таблиці бази даних Contacts.

Хоча використання SQL в Access обмежено, іноді такі прості запити дуже можуть спростити виконання поставленого завдання.

Використання команд SQL в Oracle

Oracle – це, напевно, єдиний серйозний конкурент Microsoft SQL Server. Саме це середовище розробки та управління постійно призводить до вдосконалення функцій програмного продукту компанії Microsoft, оскільки конкуренція – це двигун прогресу. Незважаючи на постійне суперництво, команди SQL Oracle повторюють SQL. Хоча Oracle і вважається практично повною копією SQL, логіка цієї системи та мови загалом вважається простіше.

Система Oracle при використанні певного набору команд не має такої складної структури. Якщо розглядати можливості даних серед розробки баз даних, Oracle немає складної структури вкладених запитів.

Така різниця дозволяє багато разів прискорити роботу з даними, але, на противагу, веде до нераціонального використання пам'яті, в окремих випадках. Структура Oracle переважно побудована на тимчасових таблицях та його використанні. Як приклад: команди SQL у цій системі будуються за аналогією зі стандартами мови SQL, хоча незначно і відрізняються від нього.

SELECTCONCAT(CONCAT(CONCAT('Співробітник', sname), CONCAT(SUBSTR(fname, 0, 1), SUBSTR(otch, 0, 1))), CONCAT('прийнятнароботу', acceptdate)) FROM employees WHERE acceptdate > to_date ('01.01.80', 'dd.mm.yyyy');

Цей запит поверне дані про співробітників, які прийняті на роботу у певний проміжок часу. Хоча структура запиту відрізняється, від виконання команд SQL у цих системах схоже, крім дрібних деталей.

Використання SQL у мережі Internet

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

За зберігання інформації в Інтернеті, як і в інших місцях, безпосередньо відповідають бази даних, а сайти є системами управління. Як правило, сайти та їх програмний код організовані різними мовами програмування, але в основі баз даних лежить один із різновидів SQL, а саме мова створення баз даних, орієнтована під веб-інтерфейси MySQL.

Синтаксис і основний набір команд цієї мови повністю копіюють звичний для всіх SQL, але з деякими своїми доповненнями, які дають йому на відміну від Microsoft tSQL Server.

Команди SQL повністю схожі як по синтаксису, а й у стандартному набору службових слів. Різниця полягає лише у викликі та структуруванні запиту. Для прикладу можна розглянути запит для створення нової таблиці, саме вона є першою, чому навчають дітей у школах на інформатиці:

$link = mysqli_connect("localhost", "root", "", "tester");

if (!$link) die("Error");

$query = "create table users(

login VARCHAR(20),

password VARCHAR(20)

if (mysqli_query($link, $query)) echo "Таблиця створена.";

elseecho "Таблиця не створена: ".mysqli_error();

mysqli_close($link);

В результаті виконання такого запиту можна отримати нову таблицю "Юзери", в якій буде два поля: логін та пароль.

Синтаксис змінено під Веб, але основою покладено команди MicrosoftSQLServer.

Побудова запитів MicrosoftSQLServer

Вибірка таблиць певного набору даних одне з основних завдань SQL. Для таких операцій передбачена команда select SQL. Саме про неї йтиметься нижче.

Правила побудова команди дуже прості, а сама команда select в SQL будується так. Наприклад, є таблиця, де є дані про співробітника, яка, наприклад, має ім'я Person. Поставимо завдання, що з таблиці потрібно вибрати дані про співробітників, дата народження яких - у проміжку першого січня до першого березня поточного року включно. Для такої вибірки необхідно виконати команду SQL, у якій буде не лише стандартна конструкція, але й умова вибору:

Select * from Person

Where P_BerthDay >= '01/01/2016' and P_BerthDay<= ‘03/01/2016’

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

SelectP_Name - ім'я

P_SurName - прізвище

P_Patronimic - по-батькові

Where P_BerthDay >= '01/01/2016' and P_BerthDay<= ‘03/01/2016’

Однак це лише вибір чогось. Він, по суті, не впливає ні на що, а лише надає інформацію. Але якщо ви вирішили зайнятися мовою SQL всерйоз, вам доведеться навчитися вносити зміни до баз даних, оскільки їх побудова без цього просто неможлива. Як це робиться, буде розглянуто трохи нижче.

Основні команди SQL для зміни даних

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

    Insert (пров. Вставити).

    Update (пров. Оновлення).

    Delete (пров. Видалити).

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

Як правило, перед використанням такі MSSQL команди потрібно продумати і врахувати всі можливі наслідки їх виконання.

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

Команда Insert

Для вставки даних у таблицю використовується найбезпечніша команда – Insert. Неправильно вставлені дані завжди можна видалити та внести до бази даних заново.

Команда Insert призначена для вставки в таблицю нових даних та дозволяє додати як повний набір, так і вибірково.

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

Insert into person

Select 'Григор'єв','Віталій','Петрович','01/01/1988'

Команди такого плану автоматично заповнюють усі осередки таблиці із зазначеними даними. Бувають ситуації, коли співробітник не має по батькові, скажімо, він за обміном приїхав працювати з Німеччини. У такому разі потрібно виконати команду вставки даних, яка занесе до таблиці лише те, що потрібно. Синтаксис такої команди буде наступним:

Insertintoperson(P_Name, P_SurName ,P_BerthDay)

Values ​​('Девід', 'Гук','02/11/1986')

Така команда заповнить лише зазначені осередки, а решта матимуть значення null.

Команда для зміни даних

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

Команда Update SQL має легкий синтаксис. Для правильного використання необхідно вказати, які дані, в якій колонці та в якому запису варто змінити. Далі скласти скрипт та виконати його. Розглянемо приклад. Потрібно змінити дату народження Девіда Гука, який було внесено до таблиці працівників під номером 5.

Set P_BerthDay = '02/10/1986' where P_ID = 5

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

Саме цією командою програмісти користуються найчастіше, тому що вона дозволяє змінювати дані в таблиці, не завдаючи істотної шкоди всієї інформації.

Команди для використання вбудованих процедур та функцій

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

Якщо судити логічно, потрібно скопіювати текст вибірки і вставити в потрібне місце, але можна обійтися і більш простим рішенням. Розглянемо приклад, коли на робочому інтерфейсі виведено кнопку для друку звіту, скажімо в Excel. Ця операція буде виконуватись у міру необхідності. Для таких цілей служать вбудовані процедури, що зберігаються. Команди в даному випадку укладаються в процедуру і викликаються за допомогою команди SQLExec.

Припустимо, що було створено процедуру виведення дати народження працівників з раніше описаної таблиці Person. У такому разі немає потреби писати весь запит. Для отримання необхідної інформації достатньо виконати команду Exec [ім'я процедури] та передати необхідні для вибірки параметри. Як приклад, можна розглянути механізм створення процедури такого характеру:

CREATEPROCEDUREPrintPerson

@DB smalldatetime

@DE smalldatetime

SELECT * від Person

FROM HumanResources.vEmployeeDepartmentHistory

WHERE P_BerthDay >= @DB and P_BerthDay<= @DE

ANDEndDateISNULL;

Ця процедура поверне всі відомості про працівників, день народження яких перебуватиме в заданому часі.

Організація цілісності даних. Тригери

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

І тут для організації перевірки умов використовуються стандартні команди SQL-запросов. У тригерах можна створювати масу умов та обмежень для роботи з даними, які допоможуть керувати не лише доступом до інформації, але й заборонити видалення, зміну або вставку даних.

Типи команд SQL, які можна використовувати у тригері, не обмежені. Розглянемо з прикладу.

Якщо описувати механізм створення тригера, то типи команд SQL тут такі самі, як із створенні процедури. Сам алгоритм буде описано нижче.

Насамперед потрібно описати службову команду для створення тригерів:

Вказуємо для якої операції з даними (у нашому випадку це операція зміни даних).

Наступним кроком буде вказівка ​​таблиць та змінних:

declare @ID int. @Date smalldatetime @nID int. @nDatesmalldatetime

DEclare cursor C1 для вибору P_ID, P_BerthDay from Inserted

DEclare cursor C2 для вибору P_ID, P_BerthDay from deleted

Задаємо кроки вибору даних. Після, в тілі курсорів прописуємо умову та реакцію на нього:

if @ID = @nID and @nDate = "01/01/2016"

sMasseges "Виконати операцію неможливо. Дата не підходить"

Варто згадати у тому, що тригер можна як створити, а й відключити на час. Таку маніпуляцію може провести лише програміст, виконавши команди SQL SERVER:

altertablePERSONdisabletriggerall - для відключення всіх тригерів, створених для даної таблиці, і, відповідно, altertablePERSONenabletriggerall - для їх включення.

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

Висновок

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

Звичайно, недоліки є, як і у всьому світі, але вони настільки незначні, що просто тьмяніють перед перевагами. Серед усіх мов програмування SQL практично єдина у своєму роді, адже вона є універсальною, і знання написання скриптів і кодів лежать в основі практично всіх сайтів.

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

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

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

Створення запитів у Microsoft Access

Щоб розібратися, як створювати запити в Access, знати основні положення роботи з СУБД.

Існує два способи виконати цю процедуру:

  • Конструктор запитів.
  • Майстер запитів.

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

Легкий шлях для новачків

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

У цьому режимі можна ознайомитися та розібратися з такими типами запитів:

  • Простий.
  • Перехресний.
  • Записи без підлеглих.
  • Повторювані записи.

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

Простий запит

Цей інструмент роботи з таблицями збирає потрібні дані із зазначених користувачем полів. Вже за назвою видно, що це найпопулярніший тип запитів для новачків. Його зручність полягає в тому, що така процедура відкривається у новій вкладці. Тому відповідь на питання, як створити запит у Access 2010, стає очевидною вже після відкриття першого меню Майстра.

Перехресний запит

Цей тип вибірки складніший. Щоб розібратися, як створити перехресний запит у Access за допомогою «Майстра» в даному режимі, потрібно натиснути на цю функцію в першому вікні.

На екрані з'явиться таблиця, в якій можна вибрати до трьох стовпців, які розташовані в оригіналі.

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

На фото показано, що перехресний запит створено, і що за заданими параметрами вчинено необхідні дії.

Повторювані записи

Як відомо з назви, основне призначення даного запиту – вибірка всіх однакових рядків у таблиці за вказаними параметрами. Виглядає так:

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

Щоб вибрати записи, що повторюються, потрібно розкрити список запитів і створити там нову папку. Далі у вікні «Новий запит» вибрати рядок «Пошук записів, що повторюються». Далі слід дотримуватися вказівок Майстра.

Записи без підлеглих

Це останній тип запитів, доступний у режимі «Майстер – Записи без підлеглих».

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

Даний тип актуальний лише у випадках, коли бази даних кілька.

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

Функції запитів у MS Access

Розберемося, навіщо слід виконувати описані вище дії. Завдання всіх простих та складних запитів у СУБД Access полягає в наступному:

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

Запит на вибірку

Цей тип роботи з базами даних є складним, оскільки потребує участі кількох таблиць.

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

Повторимо, як створити запит на вибірку в Access. Спочатку потрібно створити простий запит із вибором потрібних полів. Вже тут можна редагувати дані, щоб привести їх у бажаний вигляд. До слова, внесені зміни перенесуться і у вихідні таблиці, тому цей момент потрібно враховувати.

У вікні конструктора, що відкрилося, заповнюється вікно «Додавання таблиць». Тут потрібно додати таблиці або запити, з яких потрібно витягувати вихідні значення.

Після додавання можна розпочати заповнення умов запиту. Для цього нам потрібний рядок «Поле». У ній потрібно підібрати значення з таблиць, які будуть відображатися при запиті.

Щоб завершити операцію, потрібно натиснути кнопку «Виконати».

Запит із параметрами

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

Починати цю процедуру вибірки даних потрібно з створення простого запиту, щоб вибрати потрібні поля. Далі через режим Конструктора обов'язково потрібно заповнити поле «Умова відбору» і, вже виходячи із внесеного значення, здійснюватиметься відбір.

Таким чином, на питання про те, як створити запит з параметром Access, відповідь проста - внести вихідні параметри для вибірки. Щоб працювати з Конструктором, необхідно користуватися Майстром запитів. Там створюється первинні дані для фільтрації, які є основою подальшої роботи.

Розширений перехресний запит

Продовжуємо ускладнювати ситуацію. Ще важче розуміння є інформація у тому, як створювати запити в Access, якщо є кілька таблиць з даними. Перехресний запит вже розглядався вище, як один із варіантів роботи з Майстром. Однак, і в режимі "Конструктора" можна створювати такий запит.

Для цього необхідно натиснути Конструктор запитів - Перехресний.

Відкривається меню додавання вихідних таблиць та можливість заповнення вибіркових полів. Єдине, на що слід звернути увагу, – пункти «групова операція» та «перехресна таблиця». Їх потрібно заповнювати правильно, інакше процедура не буде виконана коректно.

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

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

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

Підбиваючи підсумки, треба сказати, що вирішити, як створювати запити в Access - за допомогою Майстра або Конструктора, повинен сам користувач. Хоча, більшість людей, які використовують СУБД MS Access, більше підійде перший варіант. Адже Майстер сам зробить всю роботу, залишивши для користувача лише кілька кліків мишею при виборі умов запиту.

Щоб використовувати розширені налаштування, явно потрібний досвід роботи з базами даних на рівні професіонала. Якщо в роботі задіяні великі бази, краще звернутися до фахівців, щоб уникнути порушення роботи СУБД та можливих втрат даних.

Є один момент, який доступний лише програмістам. Оскільки основним мовою СУБД є SQL, потрібний запит можна написати як програмного коду. Щоб працювати в даному режимі, достатньо натиснути на рядок вже створеного запиту, і в контекстному меню, що відкрилося, вибрати «Режим SQL».

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

Конструювання запитів на вибірку з умовами відбору

Розглянемо запити на вибірку в Access з прикладу отримання інформації з таблиці ТОВАР бази даних Постачання товарів.

Завдання 1. Нехай необхідно вибрати низку характеристик товару за його найменуванням.

  1. Щоб створити запит у вікні бази даних, виберіть вкладку стрічки - створіння(Create) та у групі Запити(Queries) натисніть кнопку Конструктор запитів(Query Design). Відкриється порожнє вікно запиту на вибірку в режимі конструктора. ЗапитN(QueryN) та діалогове вікно Додавання таблиці(Show Table) (рис. 4.2).
  2. У вікні Додавання таблиці(Show Table) виберіть таблицю ТОВАР та натисніть кнопку Додати(Add). Вибрану таблицю буде відображено в області схеми даних запиту. Закрийте вікно Додавання таблиці(Show Table), натиснувши кнопку Закрити(Close).

В результаті виконаних дій у вікні конструктора запитів (рис. 4.1) у верхній панелі з'явиться схема даних запиту, що включає вибрані для цього запиту таблиці. У разі одну таблицю ТОВАР. Таблиця представлена ​​переліком полів. Перший рядок у списку полів таблиці, позначений зірочкою (*), позначає все безліч полів таблиці. Нижня панель є бланком запиту, який необхідно заповнити.

Крім того, на стрічці з'являється та автоматично активізується нова вкладка (Query Tools | Design) (на рис. 4.3 представлена ​​на частину цієї вкладки), на якій кольором виділено тип створеного запиту - Вибірка(Select). Таким чином, за промовчанням завжди створюється запит на вибірку. Команди цієї вкладки є інструментарієм для виконання необхідних дій при створенні запиту. Ця вкладка відкривається, коли в режимі конструктора створюється новий запит або редагується існуючий.

  1. Щоб видалити будь-яку таблицю зі схеми даних запиту, встановіть на неї курсор миші та натисніть клавішу. Для додавання ― натисніть кнопку Відобразити таблицю(Show Table) у групі Налаштування запиту(Query Setup) на вкладці Робота із запитами | Конструктор(Query Tools | Design) або виконайте команду Додати таблицю(Show Table) у контекстному меню, що викликається на схемі даних запиту.
  2. У вікні конструктора (мал. 4.4) послідовно перетягніть зі списку полів таблиці ТОВАР поля НАІМ_ТОВ, ЦІНА, НАЯВНІСТЬ_ТОВ у стовпці бланка запиту в рядок Поле(Field).
  3. Для включення потрібних полів з таблиці у відповідні стовпці запиту можна скористатися такими способами:
    • у першому рядку бланка запиту Поле(Field) клацанням миші викликати появу кнопки списку та вибрати зі списку потрібне поле. Список містить поля таблиць, представлених у схемі даних запиту;
    • двічі клацнути на імені поля таблиці у схемі даних запиту;
    • для включення всіх полів таблиці можна перетягнути або двічі клацнути на символі * (зірочка) у списку полів таблиці у схемі даних запиту.
  4. Якщо ви помилково перетягнули в бланку запиту непотрібне поле, видаліть його. Для цього перемістіть курсор в область маркування стовпця зверху, де він набуде вигляду чорної стрілки, спрямованої вниз, і клацніть кнопкою миші. Стовпець виділиться. Натисніть або виконайте команду Видалити стовпці(Delete Columns) у групі Налаштування запиту(Query Setup).
  5. В рядку Виведення на екран(Show) позначте поля, інакше вони не будуть включені до таблиці запиту.
  6. Запишіть у рядку Умови відбору(Criteria) найменування товару, як показано в бланку запиту на рис. 4.4. Оскільки вираз за умови відбору містить оператора, то за замовчуванням використовується оператор =. Текстове значення, що використовується у виразі, вводиться в подвійних лапках, які додаються автоматично.
  7. Виконайте запит, натиснувши кнопку Виконати (Run) або кнопку Режим (View) у групі Результати (Results). На екрані з'явиться вікно запиту в режимі таблиці із записом таблиці ТОВАР, що відповідає заданим умовам відбору.

ЗАУВАЖЕННЯ
Вікно запиту в режимі таблиці аналогічно до вікна перегляду таблиці бази даних. Через деякі таблиці запиту може змінюватися дані базової таблиці, що лежить в основі запиту. Запит, що переглядається в режимі таблиці, на відміну від таблиці бази даних Access 2010, не має стовпця Натисніть для додавання(Click to Add), призначеного зміни структури таблиці. У цьому режимі на вкладці стрічки Головна(Home) доступні самі кнопки, як і під час відкриття таблиці бази даних.

  1. Якщо за введенні складного найменування товару ви допустили неточність, товар нічого очікувати знайдено у таблиці. Використання операторів шаблону - зірочка (*) і знак запитання (?) (стандарт ANSI-89, що використовується для запитів за замовчуванням) або знак відсотка (%) і підкреслення (_) (ANSI-92, рекомендований як стандарт для SQL Server), спрощує пошук потрібних рядків і дозволяє уникнути багатьох помилок. Введіть замість повного імені товару Корпус* або Корпус%. Виконайте запит. Якщо в полі найменування товару одне значення починається зі слова «Корпус», результат виконання запиту буде таким самим, як у попередньому випадку. Після виконання запиту введений вираз буде доповнений оператором Like Корпус*. Цей оператор дозволяє використовувати символи шаблону при пошуку текстових полів.
  2. Якщо потрібно знайти кілька товарів, використовуйте оператор In. Він дозволяє виконати перевірку на рівність будь-якого значення зі списку, що задається у круглих дужках. Запишіть у рядку умов відбору In ("Корпуc MiniTower"; "HDD Maxtor 20GB"; "FDD 3,5"). У таблиці запиту буде виведено три рядки. Оператор In не дозволяє використовувати символи шаблону.
  3. Збережіть запит, клацнувши на вкладці Файл(File) та виконавши команду Зберегти(Save). У вікні Збереження(Save As) введіть ім'я запиту Приклад1. Зауважимо, що ім'я запиту має співпадати як з іменами наявних запитів, а й із іменами таблиць у базі даних.
  4. Закрийте поточний запит у команді контекстного меню Закрити(Close) або натиснувши кнопку вікна запиту Закрити(Close).
  5. Виконайте збережений запит, виділівши запит у області навігації та вибравши в контекстному меню команду Відкрити(Open).
  6. Для редагування запиту виділіть його в області навігації та виконайте в контекстному меню команду Конструктор(Design View).

Завдання 2.Нехай треба вибрати товари, вартість яких трохи більше 1000 крб., і ПДВ трохи більше 10%, і навіть вибрати товари, вартість яких понад 2500 крб. Результат повинен містити найменування товару (НАІМ_ТОВ), його ціну (ЦІНА) та ПДВ (СТАВКА_ПДВ).

  1. Створіть новий запит як конструктора, додайте таблицю ТОВАР. У вікні конструктора (рис. 4.5) послідовно перетягніть із списку полів таблиці ТОВАР в бланк запиту поля НАІМ_ТОВ, ЦІНА, СТАВКА_ПДВ.
  2. Запишіть Умови відбору(Criteria), як показано у бланку запиту на рис. 4.5. Між умовами, що записані в одному рядку, виконується логічна операція AND. Між умовами, записаними у різних рядках, виконується логічна операція OR.
  3. Виконайте запит, натисніть на кнопку Виконати(Run) у групі Результати(Results). На екрані з'явиться вікно запиту в режимі таблиці із записами таблиці ТОВАР, що відповідають заданим умовам відбору.
  4. Збережіть запит, виконавши відповідну команду в контекстному меню запиту, яке викликається, коли курсор встановлюється на заголовок запиту. Дайте йому ім'я Приклад2.

Завдання 3. Нехай треба вибрати накладні за заданий період. Результат повинен містити номер накладної (НОМ_НАК), код складу (КОД_СК), дату відвантаження (ДАТА_ВІДГР) та загальну вартість відвантаженого товару (СУМА_НАКЛ).

  1. Створіть новий запит у режимі конструктора, додайте таблицю НАКЛАДНА. У вікні конструктора послідовно перетягніть із списку полів таблиці НАКЛАДНА до бланку запиту всі необхідні поля.
  2. Для поля ДАТА_ВІДГР у рядку Умови відбору(Criteria) запишіть Between #11.01.2008# And #31.03.2008#. Оператор Between задає інтервал дат (ANSI-92 замість знака # використовуються одинарні лапки ‘). Крім того, цей оператор дозволяє задати інтервал для числового значення.

Для закріплення дивимося відеоурок:

У MS Access можна створювати бази даних, таблиці, форми та інші звіти. Ця стаття допоможе користувачеві запускати SQL-запити у MS Access. Ви можете виконувати ті ж запити, які використовуються в SQL для вибірки даних з бази даних. Ця стаття призначена для користувачів, які тільки-но почали вивчати MS Access і хочуть виконувати SQL запити в MS Access. Єдина умова, яку необхідно перед тим як розпочати – це наявність доступу до бази даних, що використовується в організації.

Кроки


Що вам знадобиться

  • Користувач повинен мати доступ до бази даних організації
  • Користувач може зв'язатись з технологічною підтримкою до початку виконання запитів через MS Access

Інформація про статтю

Цю сторінку переглядали 4443 разів.

Чи була ця стаття корисною?

У СУБД 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 немає своїх засобів управління виконанням програми.

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