MySQL MariaDB

Підзапити MySQL

Підзапити MySQL
Підзапит - це запит SQL всередині більшого запиту, який є рекурсивним, або підзапит вважається внутрішнім запитом. На відміну від цього, зовнішній запит називається запитом, що включає підзапит. Підзапит MySQL може бути вбудований у запити, включаючи SELECT, INSERT, UPDATE або DELETE. Крім того, в межах іншого підзапиту підзапит може бути вкладений. Фразовий підзапит слід вводити в дужки скрізь, де він використовується. Ми навчимо вас, як і коли використовувати підзапит MySQL для складання складних запитів та опишемо ідею відповідного підзапиту. Відкрийте оболонку командного рядка з робочого столу та напишіть свій пароль, щоб почати його використовувати. Натисніть Enter і продовжуйте.

Підзапит у записах однієї таблиці:

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

>> ВИБЕРІТЬ * ВІД даних.тварини;

Приклад 01:

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

>> ВИБЕРІТЬ * ВІД даних.тварини ДЕ Вік> (ВИБІР Вік ВІД даних.тварини ДЕ Ціна = '2500');

Приклад 02:

Давайте використовувати одну і ту ж таблицю в різних ситуаціях. У цьому прикладі ми будемо використовувати якусь функцію замість речення WHERE у підзапиті. Ми брали середнє значення всіх цін, даних на тварин. Середня ціна складе 3189. Основним запитом будуть обрані всі записи тварин, ціна яких перевищує 3189. Ви отримаєте нижченаведений результат.

>> ВИБЕРІТЬ * ВІД даних.тварини ДЕ Ціна> (ВИБЕРІТЬ СРЕДНЮ (ціну) З даних.тварини);

Приклад 03:

Давайте використаємо речення IN у головному запиті SELECT. Перш за все, підзапит отримає ціни, що перевищують 2500. Після цього основним запитом будуть обрані всі записи таблиці «тварини», де ціна лежить у результаті підзапиту.

>> ВИБЕРІТЬ * ВІД даних.тварини ДЕ Ціна в (ВИБЕРИТИ ЦІНУ З даних.тварини ДЕ Ціна> 2500);

Приклад 04:

Ми використовуємо підзапит, щоб отримати ім’я тварини, ціна якої 7000. Оскільки ця тварина є коровою, тому назва "корова" буде повернута до основного запиту. У основному запиті всі записи будуть отримані з таблиці, де ім’я тварини - «корова»."Оскільки ми маємо лише два записи щодо" корови тварин ", ось чому ми маємо нижченаведені результати.

>> ВИБЕРІТЬ * ВІД даних.тварини ДЕ Ім'я = (ВБЕРІТИ ІМЯ З ДАНИХ.тварини ДЕ Ціна = '7000');

Підзапит у записах декількох таблиць:

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

>> ВИБЕРІТЬ * ВІД даних.студент;
>> ВИБЕРІТЬ * ВІД даних.вчитель;

Приклад 01:

Ми отримаємо дані з однієї таблиці за допомогою підзапиту та використаємо їх як вхідні дані для основного запиту. Це означає, що ці дві таблиці можуть якимось чином співвідноситися. У наведеному нижче прикладі ми використовували підзапит, щоб отримати ім’я учня з таблиці „студент”, де ім’я вчителя „Саміна”.'Цей запит поверне' Samina 'до основної таблиці запитів' вчителя.'Потім у головному запиті будуть обрані всі записи, що стосуються імені вчителя' Саміна.'Оскільки у нас є два записи для цього імені, тому ми отримали такий результат.

>> ВИБЕРІТЬ * ВІД даних.викладач WHERE TeachName = (ВИБЕРИТЬ TeachName ІЗ даних.студент WHERE TeachName = 'Саміна');

Приклад 02:

Щоб розробити підзапит у випадку різних таблиць, спробуйте цей приклад. У нас є підзапит, який отримує ім’я вчителя від студента таблиці. Ім'я повинно мати "i" у будь-якій позиції його значення. Це означає, що всі імена у стовпці TeachName, що мають у своєму значенні "i", будуть вибрані та повернуті до основного запиту. Основний запит вибере всі записи з таблиці 'вчитель', де ім'я вчителя є у вихідних даних, що повертаються підзапитом. Оскільки підзапит повернув 4 імена вчителів, саме тому ми будемо мати запис усіх цих імен, що перебувають у таблиці 'вчитель.'

>> ВИБЕРІТЬ * ВІД даних.викладач, ДЕ TeachName IN (ВИБЕРІТЬ TeachName ІЗ даних.студент, ДЕ Ім'я викладача, як "% i%");

Приклад 03:

Розглянемо наведені нижче дві таблиці, 'order' і 'order1'.

>> ВИБЕРІТЬ * ВІД даних.порядок;
>> ВИБЕРІТЬ * ВІД даних.замовлення1;

Давайте спробуємо будь-яке речення в цьому прикладі для розробки підзапиту. Підзапит вибере "id" із таблиці "order1", де стовпець "Status" має значення "Unpaid".'Ідентифікатор' може бути більше 1. Це означає, що для отримання результатів таблиці "замовлення" до основного запиту буде повернуто більше 1 значення. У цьому випадку можна використовувати будь-який "ідентифікатор". Ми отримали наведені нижче результати для цього запиту.

>> ВИБЕРІТЬ товар, продаж, ідентифікатор ВІД даних.замовити WHERE id = БУДЬ-ЯКИЙ (ВИБЕРИТИ id з даних.order1 WHERE Status = 'Unpaid');

Приклад 04:

Припустимо, що у вас є наведені нижче дані в таблиці 'order1' перед застосуванням будь-якого запиту.

>> ВИБЕРІТЬ * ВІД даних.замовлення1;

Давайте застосуємо запит усередині запиту, щоб видалити деякі записи з таблиці 'order1'. По-перше, підзапит вибере значення «Статус» із таблиці «порядок», де Елемент - «Книга».'Підзапит повертає значення "Оплачено" як значення. Тепер основний запит видалить рядки з таблиці 'order1', де значенням стовпця 'Status' є 'Paid.'

>> ВИДАЛИТИ З даних.order1 WHERE Status = (ВИБЕРІТЬ статус FROM дані.замовлення WHERE Пункт = 'Книга');

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

>> ВИБЕРІТЬ * ВІД даних.замовлення1;

Висновок:

У всіх вищезазначених прикладах ви ефективно працювали з великою кількістю підзапитів. Ми сподіваємось, зараз все зрозуміло і чисто.

Безкоштовні ігри з відкритим кодом для розробки ігор Linux
У цій статті буде розглянуто перелік безкоштовних ігрових механізмів з відкритим кодом, які можна використовувати для розробки 2D та 3D ігор на Linux....
Підручник Тінь розкрадача гробниць для Linux
Shadow of the Tomb Raider - дванадцяте доповнення до серії Tomb Raider - франшизи екшн-пригодницької гри, створеної Eidos Montreal. Гру сприйняли як к...
Як збільшити FPS в Linux?
FPS означає Кадри в секунду. Завданням FPS є вимірювання частоти кадрів при відтворенні відео або ігрових виставах. Простими словами кількість безпере...