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