Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Вкладені Запити | Вкладені підзапити
Проміжний SQL

Вкладені Запити

Свайпніть щоб показати меню

Адміністрація школи задоволена вашими нещодавніми досягненнями та прагне рухатися далі.

Починаючи літні канікули, у вас з'являється можливість дослідити нові методи та вдосконалити свої навички SQL.

Основна увага буде приділена вкладеним запитам — ключовому поняттю в SQL.

Note
Визначення

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

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

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

Нова таблиця містить відділи, їхні типи та бюджети. У таблиці employee, як ви пам'ятаєте, є інформація про відділ, до якого належить кожен співробітник.

Розгляньте приклад, де використовуються вкладені запити для отримання тих співробітників, які працюють у відділах з бюджетом $500,000 або менше:

1234567
SELECT * FROM employees WHERE department IN ( SELECT name FROM department WHERE budget <= 500000 )

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

Розбийте цей запит на два окремі, щоб побачити, як він працює. Спочатку отримаємо назви відділів з бюджетом $500 000 або менше (внутрішній запит):

123
SELECT name FROM department WHERE budget <= 500000

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

12345
SELECT * FROM employees WHERE department IN ( 'Marketing', 'Human Resources', 'Finance', 'Customer Service', 'Legal' )

Результат цього запиту буде таким самим, як і у першому запиті.

Ось покроковий розбір:

  1. Внутрішній запит отримує names відділів, які нам потрібні;

  2. Умова WHERE перевіряє, чи ці відділи є в таблиці з внутрішнього запиту;

  3. Отримуємо потрібний результат.

Ось базовий синтаксис для внутрішнього запиту:

SELECT columns
FROM table_1
WHERE column_name IN (
  SELECT column
  FROM table_2
  other clauses
)

Використовуючи вкладені запити, звертайте увагу на такі важливі моменти:

  1. Один результат у підзапиті: переконайтеся, що вкладений запит повертає лише один стовпець. Якщо використовується у порівнянні, бажано, щоб повертав одне значення. Це важливо для операторів =, >, <, >=, <=, <>;

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

  3. Оптимізація: вкладені запити можуть працювати повільно, особливо якщо виконуються для кожного рядка основного запиту;

  4. Використання оператора IN: вкладені запити часто використовують оператор IN для перевірки значень у підмножині. Також можна використовувати оператори порівняння для складніших умов.

1. Що таке вкладений запит у SQL?

2. Який оператор SQL найчастіше використовується з вкладеними запитами для перевірки значень у підмножині?

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

question mark

Що таке вкладений запит у SQL?

Виберіть правильну відповідь

question mark

Який оператор SQL найчастіше використовується з вкладеними запитами для перевірки значень у підмножині?

Виберіть правильну відповідь

question mark

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

Виберіть правильну відповідь

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 1

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 2. Розділ 1
some-alt