You are on page 1of 9

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

НАЦІОНАЛЬНИЙ АВІАЦІЙНИЙ УНІВЕРСИТЕТ


Факультет кібербезпеки, комп’ютерної та програмної інженерії
Кафедра інженерії програмного забезпечення

Лабораторна робота № 3 (ЗФН)


ОРГАНІЗАЦІЯ ЗАПИТІВ, ПРАВИЛА ЇХ ВИКОНАННЯ

Виконав: студентка гр. ПІ-301Бз


Маркус Є.О.

Київ 2024
1. Мета роботи
Вивчення основних принципів організації і виконання запитів в MS SQL
Server.

2. Підготовка до роботи
У процесі підготовки до роботи потрібно вивчити основні принципи
організації і виконання запитів, основні конструкції для організації запитів
структурованої мови запитів Transact-SQL, ознайомитися з процесом створення
запитів у середовищі MS SQL Server, опис яких наведено в стислих теоретичних
відомостях.

3. Стислі теоретичні відомості


Для доступу до даних в примірниках SQL Server використовуються такі
засоби: SQL Server Management Studio, програми командного рядку SQLCMD і
програма bcp.
Середовище SQL Server Management Studio підтримує використання мови
Transact-SQL в діалоговому режимі для доступу до даних і їх зміни. Середовище
SQL Server Management Studio можна використовувати для підключення
одночасно до декількох екземплярів SQL Server, їх адміністрування та виконання
команд мови SQL.
Програма SQLCMD – це одна з програм командного рядка Microsoft Win32
для інтерактивного виконання інструкцій і сценаріїв Transact-SQL. Для
використання програми SQLCMD, необхідне розуміння мови програмування
Transact-SQL. Програма BCP використовується для вставки великої кількості
рядків у таблиці SQL Server. Для використання цієї програми не вимагається
знання мови Transact-SQL, але необхідне розуміння структури таблиць, в які
копіюються нові рядки, а також допустимих типів даних для рядків таблиці.
В попередніх версіях SQL Server для виконання команд мови запитів
Transact-SQL використовується утиліта MS SQL Server Query Analyser.
Основною конструкцією для організації запитів засобами структурованої
мови запитів Transact-SQL є оператор SELECT. Команда SELECT відкриває
таблицю, підбирає або створює необхідні індекси, організовує зв’язок між
таблицями, фільтрує, групує і опрацьовує записи, знищує тимчасові файли.
Таблиця-джерело або створена таблиця залишаються відкритими і після
виконання команди. Результатом виконання запиту до таблиць також буде
таблиця. Її можна зберегти в БД, і стосовно неї також можна виконувати запити.
Середовище дозволяє створити спеціальний пакетний файл з розширенням *.sql,
який буде містити текст запиту.
Синтаксис команди:
SELECT[ALL | DISTINCT] select_list
[INTO [new_table_name]]
[FROM { table_name | view_name } [ (optimizer_hints) ] [[, {
table_name2 | view_name2 } [ (optimizer_hints) ] [...,
table_name16 | view_name16 } [ (optimizer_hints) ]]] [
WHERE clause ]
[GROUP BY clause ] [
HAVING clause ]
[ ORDER BY clause ] [
COMPUTE clause ]
ALL  опція за замовчуванням, виводить всі колонки в результаті запиту.
DISTINCT виводить унікальні колонки в результаті запиту.
select_list визначає колонки результату запиту. Може бути, наприклад:
символ *, який виводить всі колонки в результаті запиту; перелік імен колонок,
розділених комами.
INTO new_table_name  виводить результати запиту, new_table_name може
бути БД, масивом, текстовим файлом, екраном або принтером. Крім
цього, інформація може бути переслана в так званий “курсор”. Курсор  це
тимчасовий набір даних, який може бути областю пам’яті або тимчасовим файлом
і має режим “тільки читання”.
FROM вказує ім’я таблиці table_name або подання view_name, які
використовуються як джерела даних, припускається використання максимум
16 таблиць або подань, перелік яких розділяється комами. Опція (optimizer_hints)
вказує методи блокування, індексування.
WHERE вказує критерій відбору. Вираз сlause вказує вираз для відповідного
операнда, clause може містити логічні вирази AND, OR, NOT, знаки відношення
=,>,>=,<,<=, оператори LIKE, BETWEEN, IN. Вираз clause може задавати
групування даних, яке задається операндами GROUP BY, HAVING.
GROUP BY вказує стовпчики, по яких виконується групування вихідних
даних. Усі записи БД, для яких значення стовпчиків збігаються, відображаються у
вибірці єдиним рядком. Групування використовують для отримання деяких
звітних характеристик (сум, кількості) групи.
HAVING задає критерій відбору даних у кожну сформовану в процесі
вибору групу.
ORDER BY вказує порядок сортування.
За замовчуванням сортування відбувається за збільшенням (ASC), але може
бути виконано і за зменшенням (DESC).
COMPUTE використовується з функціями агрегування. Формує підсумкові
значення, які з'являються в додатковому стовпці зведення в кінці результуючого
набору.
Слід пам’ятати, що використання складних функцій сповільнює роботу
команди SELECT. Для обчислення підсумкових значень групи записів
використовуються функції, описані в табл. 5.

Таблиця 5. Функції обчислення підсумкових значень


Функція Що повертає
avg() Середнє значення вибраних числових даних
avg(distinct) Середнє значення вибраних числових даних без
повторення однакових значень
count() Кількість вибраних елементів у стовпчику
count(*) Кількість рядків у результаті запиту
count(distinct) Кількість різних значень полів в результаті запиту
min() Найменше значення в стовпчику
max() Найбільше значення в стовпчику
sum() Сума числових значень стовпчика
sum(distinct) Сума числових значень стовпчика без повторення
однакових значень

Для розміщення декількох запитів разом і об’єднання результатів їх


виводу використовують оператор UNION в конструкції оператора SELECT.
Оператор UNION об’єднує виведення двох або більше SQL-запитів в єдиний
набір. UNION ALL об’єднує рядки, виключаючи дублікати.

Хід роботи:
1. Оператор IN визначає набір значень, в який дане значення може або може
не бути включено. Знаходження рядків, які знаходяться в списку значень:

Оператор IN
use PolyclinicDatabase;
SELECT * FROM Patients WHERE BloodType IN ('A+', 'B+');

2. Оператор BETWEEN на відміну від IN задає діапазон значень.

Для отримання інформації з таблиці Visits про візити до лікарів з ID в


діапазоні від 100 до 200:
use PolyclinicDatabase;
SELECT * FROM Visits WHERE DoctorID BETWEEN 100 AND 200;

3. Оператор LIKE застосовується тільки для полів типу CHAR, VARCHAR, в


яких він виконує пошук підрядка.

Для отримання інформації з таблиці Patients про пацієнтів з прізвищем, яке


починається на "Smi":
use PolyclinicDatabase;
SELECT * FROM Patients WHERE LastName LIKE 'Smi%';

4. Обробка значення NULL.

Для отримання всіх значень NULL в полі Result файлу Visits:


use PolyclinicDatabase;
SELECT * FROM Visits WHERE Result IS NULL;

5. Для групового оброблення даних використовуються агрегатні функції.

Функція COUNT підраховує кількість рядків або не NULL значень полів.

Для підрахування кількості візитів кожного лікаря:


use PolyclinicDatabase;
SELECT DoctorID, COUNT(*) AS VisitCount FROM Visits GROUP BY DoctorID;

6. Команда GROUP BY дозволяє задавати підмножину значень в термінах


другого поля та застосовувати агрегатну функцію до такої підмножини.

Для підрахування кількості візитів до кожного лікаря та виведення лише тих,


що мають більше 10 візитів:
use PolyclinicDatabase;
SELECT DoctorID, COUNT(*) AS VisitCount FROM Visits GROUP BY DoctorID HAVING
COUNT(*) > 10;

7. Операнд HAVING використовується, якщо треба задати критерії, які


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

Для підрахування кількості візитів кожного лікаря та виведення лише тих, що


мають більше 10 візитів:
use PolyclinicDatabase;
SELECT DoctorID, COUNT(*) AS VisitCount FROM Visits GROUP BY DoctorID HAVING
COUNT(*) > 10;

8. Для впорядкування виведення полів таблиць використовують операнд


ORDER BY, який дозволяє сортувати виведення результатів запиту.

Для сортування візитів за датою:


use PolyclinicDatabase;
SELECT * FROM Visits ORDER BY VisitDate;

9. Операція UNION об'єднує результати двох або більше запитів в один


результуючий набір, в який входять всі рядки, що належать всім запитам в
об'єднанні.
Для отримання всіх пацієнтів з таблиць Patients та NewPatients:
use PolyclinicDatabase;
SELECT * FROM Patients UNION SELECT * FROM NewPatients;

10. Для отримання інформації із файлів products, suppliers про всі товари
постачальників:

use PolyclinicDatabase;
SELECT p.ProductName, s.SupplierName
FROM Products p
JOIN Suppliers s ON p.SupplierID = s.SupplierID;

11. Для отримання інформації про товари однієї категорії, які мають
однакову ціну:

use PolyclinicDatabase;
SELECT p1.ProductName, p2.ProductName, p1.CategoryID, p1.UnitPrice
FROM Products p1
JOIN Products p2 ON p1.CategoryID = p2.CategoryID AND p1.UnitPrice = p2.UnitPrice
WHERE p1.ProductName < p2.ProductName;

12. Вкладені підзапити.

Для отримання інформації про всіх лікарів, які ведуть візити тільки до
пацієнтів старше 60 років:
use PolyclinicDatabase;
SELECT * FROM Doctors WHERE DoctorID IN (SELECT DISTINCT DoctorID FROM Visits
WHERE PatientID IN (SELECT PatientID FROM Patients WHERE Age > 60));

Висновки:
Під час виконання лабораторної роботи було проведено дослідження роботи з
SQL Server Management Studio для побудови та виконання SQL запитів до бази
даних. Основні висновки з роботи:

1. Робота з редактором запитів : SQL Server Management Studio надає


зручний інтерфейс для створення, редагування та виконання SQL запитів.
Використання редактора дозволяє швидко побудувати та виконати запити до
бази даних.
2. Конструктор запитів : Використання конструктора дозволяє створювати
складніші запити за допомогою графічного інтерфейсу, що є зручним для
користувачів з меншим досвідом роботи з SQL.

3. Використання SQL запитів : У роботі було показано різні типи SQL


запитів, такі як SELECT, JOIN, WHERE, GROUP BY, HAVING, ORDER BY та
інші. Ці запити дозволяють отримувати різноманітну інформацію з бази даних
відповідно до заданих умов.

4. Використання агрегатних функцій : В процесі виконання запитів було


показано використання агрегатних функцій, таких як COUNT, SUM, AVG,
MAX, MIN для обробки даних в базі та отримання агрегованої інформації.

5. Робота з вкладеними запитами : Було показано використання вкладених


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

6. Робота з різними типами запитів : В роботі було продемонстровано


використання різних типів запитів, таких як вибірка даних, фільтрація,
сортування, групування, а також об'єднання результатів декількох запитів.

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

Контрольні запитання
1. Запити виконуються за допомогою оператора SQL, а саме - оператора
SELECT.
2. Підсумкові функції включають такі функції як COUNT, SUM, AVG, MAX,
MIN. Вони дозволяють отримувати загальну кількість рядків, суму значень,
середнє значення, максимальне і мінімальне значення відповідно.

3. Об’єднання результату однієї команди SELECT з результатом іншої


команди SELECT виконується за допомогою операнду UNION.

You might also like