Про створення запитів (ORACLE)

Початок роботи з базою даних

Структури даних для прикладів.

Oracle SQL Administrator

Робота з базами даних є невід’ємною частиною сучасного IT-світу, і Oracle — одна з найпотужніших і широко використовуваних систем управління базами даних (СУБД). Для ефективної взаємодії з базою даних Oracle необхідно розуміти основи створення запитів. Ця стаття допоможе початківцям, а також тим, хто вже знайомий з командою SELECT, краще зрозуміти процес створення запитів в Oracle, починаючи з базових концепцій і закінчуючи складнішими техніками. Отож, вирушаємо у захопливу подорож світом SQL-запитів!

1. Основні поняття та структура запитів

SQL (Structured Query Language) — це мова, призначена для управління і маніпуляції даними в реляційних базах даних. Основні компоненти SQL-запиту включають:

  • SELECT — визначає, які стовпці або вирази будуть відображені.
  • FROM — вказує, з яких таблиць будуть витягнуті дані.
  • WHERE — задає умови фільтрації даних.
  • ORDER BY — визначає порядок сортування результатів.

Приклад простого запиту:

SELECT first_name, last_name 
FROM employees
WHERE department_id = 10
ORDER BY last_name;

У цьому запиті ми вибираємо імена та прізвища співробітників з таблиці employees, які працюють у департаменті з ідентифікатором 10, і сортуємо їх за прізвищем. Легко, як два рази два!

2. Розширені можливості команди SELECT

Команда SELECT має безліч корисних можливостей:

  • DISTINCT — усуває дублікати в результатах:
SELECT DISTINCT department_id 
FROM employees;
  • Функції агрегації:
    • SUM — обчислює суму значень.
    • AVG — обчислює середнє значення.
    • COUNT — рахує кількість рядків.
    • MAX — знаходить максимальне значення.
    • MIN — знаходить мінімальне значення.

Приклад використання функцій агрегації:

SELECT COUNT(*), AVG(salary) 
FROM employees
WHERE department_id = 10;

Цей запит підраховує кількість співробітників і обчислює середню зарплату в департаменті з ідентифікатором 10. Як бачите, SQL — це не тільки про вибір даних, але й про їх магічну трансформацію!

3. Фільтрація даних за допомогою WHERE

Оператор WHERE використовується для фільтрації даних на основі певних умов. Основні оператори:

  • = — дорівнює.
  • <> або != — не дорівнює.
  • >, <, >=, <= — порівняння.
  • AND, OR, NOT — логічні оператори.

Приклад складної умови фільтрації:

SELECT first_name, last_name 
FROM employees
WHERE department_id = 10 AND salary > 5000;

У цьому запиті ми вибираємо імена та прізвища співробітників, які працюють у департаменті 10 з зарплатою вище 5000. Тепер ви знаєте, як виділити найбільш оплачуваних співробітників вашого відділу!

4. Сортування та групування даних

Сортування даних

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

Простий приклад сортування:

SELECT first_name, last_name 
FROM employees
ORDER BY last_name ASC;

У цьому запиті результати будуть відсортовані за прізвищем у порядку зростання (від А до Я).

Сортування за кількома стовпцями:

SELECT first_name, last_name, salary 
FROM employees
ORDER BY last_name ASC, salary DESC;

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

Групування даних

Групування даних здійснюється за допомогою оператора GROUP BY, який дозволяє агрегувати рядки, що мають однакові значення в зазначених стовпцях, і виконувати функції агрегації (такі як COUNT, SUM, AVG, MAX, MIN) над кожною групою.

Приклад групування даних:

SELECT department_id, COUNT(*) 
FROM employees
GROUP BY department_id;

Цей запит рахує кількість співробітників у кожному департаменті. Все просто: кожен департамент — як окрема коробочка з даними!

Використання функцій агрегації з GROUP BY:

SELECT department_id, AVG(salary), MAX(salary), MIN(salary) 
FROM employees
GROUP BY department_id;

Цей запит обчислює середню, максимальну і мінімальну зарплату для кожного департаменту. Тепер ви точно знаєте, в якому департаменті зарплати — як у IT-магнатів!

Фільтрація груп за допомогою HAVING:

Оператор HAVING використовується для фільтрації груп після їх створення. Це схоже на WHERE, але застосовується до агрегованих даних.

Приклад фільтрації груп:

SELECT department_id, AVG(salary) AS avg_salary FROM employees GROUP BY department_id HAVING AVG(salary) > 5000;

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

Розширені приклади використання ORDER BY і GROUP BY

Сортування з CASE: Іноді потрібне складне сортування, наприклад, за умовою.

SELECT first_name, last_name, department_id 
FROM employees
ORDER BY
CASE
WHEN department_id = 10 THEN 1
WHEN department_id = 20 THEN 2
ELSE 3
END, last_name ASC;

У цьому прикладі співробітники з департаментів 10 і 20 будуть йти першими, а інші – далі, і всі вони будуть відсортовані за прізвищем у порядку зростання. Як кажуть, спочатку свої, потім всі інші!

Групування за кількома стовпцями:

SELECT department_id, job_id, COUNT(*) 
FROM employees
GROUP BY department_id, job_id;

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

Комбінування ORDER BY і GROUP BY:

SELECT department_id, AVG(salary) AS avg_salary 
FROM employees
GROUP BY department_id
HAVING AVG(salary) > 5000
ORDER BY avg_salary DESC;

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

Вкладені групування і підзапити

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

Приклад з підзапитом:

SELECT department_id, employee_id, salary 
FROM employees
WHERE salary > (SELECT AVG(salary)
FROM employees
WHERE department_id = e.department_id);

Цей запит вибирає співробітників, зарплата яких вище середньої зарплати по їх департаменту. Тепер ви зможете знайти тих, хто дійсно заслуговує на премію!

5. З’єднання таблиць (JOIN)

Часто виникає необхідність витягти дані з кількох таблиць одночасно. Для цього використовуються з’єднання:

  • INNER JOIN — вибирає рядки, що мають збігаючі значення в обох таблицях.
  • LEFT JOIN — вибирає всі рядки з лівої таблиці і збігаючі рядки з правої таблиці.
  • RIGHT JOIN — вибирає всі рядки з правої таблиці і збігаючі рядки з лівої таблиці.
  • FULL OUTER JOIN — вибирає всі рядки, коли є збіг у лівій або правій таблиці.

Приклад використання INNER JOIN:

SELECT employees.first_name, employees.last_name, departments.department_name 
FROM employees
INNER JOIN departments ON employees.department_id = departments.department_id;

Цей запит вибирає імена і прізвища співробітників разом з назвами департаментів, у яких вони працюють. Об’єднуємо таблиці, як пазли!

6. Підзапити

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

Приклад простого підзапиту:

SELECT first_name, last_name
FROM employees
WHERE department_id = (SELECT department_id                    
FROM departments                        
WHERE department_name = 'Sales');

Цей запит вибирає імена і прізвища співробітників, які працюють у департаменті “Sales”.  Як би “заглядаємо” в підзапит, щоб уточнити дані!

Висновок

Створення запитів в Oracle — це важлива навичка, яка дозволяє ефективно працювати з даними і отримувати потрібну інформацію. Ми розглянули основні компоненти SQL-запитів, фільтрацію, сортування, групування, з’єднання таблиць і підзапити. Слідуючи цим основам, ви зможете створювати складні запити і вирішувати різні завдання. SQL — це, звісно, не магія, але щось дуже близьке!

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

  1. Основи роботи з Oracle SQL (Частина 1) — цей курс охоплює базові концепції і команди SQL.
  2. Основи роботи з Oracle SQL (Частина 2) — продовження курсу, де розглядаються складніші теми і техніки.

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

+38 (098) 805 45 11
info@sso.net.ua
Наш ТГ канал: ITLearningSSO
Viber/Telegram: 380932585408
 

Зв’язатися з нами





    Контакти