MySQL - запит у запиті. MySQL: приклади запитів. Вкладені запити MySQL

287 0 Новини високих технологій

В даний час кожна людина може спостерігати стрімке зростання обсягу цифрової інформації. А так як більша частина цієї інформації є важливою, виникає необхідність її збереження на цифрових носіях для подальшого використання. В даній ситуації можуть застосовуватися такі сучасні технології, як бази даних. Вони забезпечують надійне зберігання будь-якої цифрової інформації, а доступ до даних може бути здійснено в будь-якій точці земної кулі. Однією з розглянутих технологій є система управління базами даних MySQL.


СУБД MySQL – що це?

Реляційна система управління базами даних MySQL є однією з найбільш популярних і часто використовуваних технологій зберігання інформації. Її функціональні можливості перевершують за багатьма показниками існуючі СУБД. Зокрема, однією з головних особливостей є можливість використовувати вкладені запити MySQL.
MySQL - запит у запиті. MySQL: приклади запитів. Вкладені запити MySQL
Тому багато проектів, де важливо час швидкодії і необхідно забезпечити зберігання інформації, а також здійснювати складні вибірки даних, розробляються на базі СУБД MySQL. Більшу частину таких розробок складають інтернет-сайти. При цьому MySQL активно впроваджується при реалізації як невеликих (блоги, сайт-візитки тощо), так і досить великих завдань (інтернет-магазини, сховища даних тощо). В обох випадках для відображення інформації на сторінці сайту застосовується MySQL-запит. У запиті розробники намагаються максимально використовувати наявні можливості, які надає система управління базами даних.


Як має бути організоване зберігання даних

Для зручного зберігання і подальшої обробки дані обов'язково впорядковуються. Структура даних дозволяє визначити, яким чином будуть виглядати таблиці, що використовуються для зберігання інформації. Таблиці бази даних являють собою набір полів (стовпців), які відповідають за кожне певну властивість об'єкта даних.
MySQL - запит у запиті. MySQL: приклади запитів. Вкладені запити MySQL
Наприклад, якщо складається таблиця співробітників певної компанії, то її найпростіша структура буде мати наступний вигляд. За кожним працівником закріплено унікальний номер, який, як правило, використовується в якості первинного ключа таблиці. Потім в таблицю заносяться персональні дані працівника. Це може бути що завгодно: Ф. В. О., номер відділу, за яким він закріплений, телефон, адресу та інше. Згідно вимогам нормалізації (6 нормальних форм баз даних), а також для того, щоб MySQL-запити шикувалися структуровано, поля таблиці повинні бути атомарними, тобто не мати перерахувань або списків. Тому, як правило, в таблиці існують окремі поля для прізвища, імені і т. д.

Employee_id



Surname



Name



Patronymic



Department_id



Position



Phone



Employer_id



1



Іванов



Іван



Іванович



Администрац.



Директор



495****



null



2



Петров



Петро



Петрович



Администрац.



Зам. директора



495***



1



3



Гришин



Григорій



Григорович



Продажу



Начальник







1



































59



Сергєєв



Сергій



Сергійович



Продажу



Продавець-консульт.



495***



32

Вище представлений тривіальний приклад структури таблиці бази даних. Однак вона ще не до кінця відповідає основним вимогам нормалізації. У реальних системах створюється додаткова таблиця відділів. Тому наведена таблиця замість слів у колонці «Відділ» повинна містити номери відділів.

Яким чином відбувається вибірка даних

Для отримання даних з таблиць в СУБД використовується спеціальна команда MySQL – запит Select . Для того щоб сервер бази даних правильно відреагував на звернення, запит повинен бути коректно сформований. Структура запиту формується таким чином. Будь-яке звернення до сервера БД починається з ключового слова select . Саме з нього будуються всі в MySQL запити. Приклади можуть мати різну складність, але принцип побудови дуже схожий. Потім необхідно вказати, з яких полів потрібно вибрати цікаву інформацію. Перерахування полів відбувається через кому після пропозиції select . Після того як всі необхідні поля були перераховані, у запиті зазначається об'єкт таблиці, з якого буде відбуватися вибірка, за допомогою пропозиції from і зазначення імені таблиці. Для обмеження вибірки в MySQL-запити додаються спеціальні оператори, передбачені СУБД. Для вибірки неповторюваних (унікальних) даних використовується пропозицію distinct , а для завдання умов – оператор where . В якості прикладу, застосовного до вищевказаної таблиці, можна розглянути запит, що потребує інформацію про Ф. В. О. співробітників, що працюють у відділі «Продажі». Структура запиту прийме вигляд, як у таблиці нижче.
MySQL - запит у запиті. MySQL: приклади запитів. Вкладені запити MySQL

Поняття вкладеного запиту

Але головна особливість СУБД, як було зазначено вище, можливість обробляти вкладені запити MySQL. Як він повинен виглядати? З назви логічно зрозуміло, що це запит, сформований у певній ієрархії з двох або більше запитів. В теорії з вивчення особливостей СУБД сказано, що MySQL не накладає обмежень на кількість MySQL-запитів, які можуть бути вкладені в головний запит. Однак можна поекспериментувати на практиці і переконатися, що вже після другого десятка вкладених запитів час відгуку серйозно збільшиться. У будь-якому разі на практиці не зустрічаються задачі, що вимагають використовувати надзвичайно складний MySQL-запит. У запиті може знадобитися максимально до 3-5 вкладених ієрархій.
MySQL - запит у запиті. MySQL: приклади запитів. Вкладені запити MySQL

Побудова вкладених запитів

При аналізі прочитаної інформації виникає ряд питань про те, де можуть бути використані вкладені запити і чи не можна розв'язати задачу розбиттям їх на прості без ускладнення структури. На практиці вкладені запити використовуються для вирішення складних завдань. До такого типу завдань належать ситуації, коли заздалегідь невідомо умова, за якою буде відбуватися обмеження подальшої вибірки значень. Вирішити такі завдання неможливо, якщо просто використати звичайний MySQL-запит. В запиті, що складається з ієрархій, буде відбуватися пошук обмежень, які можуть змінюватися з плином часу або заздалегідь не можуть бути відомі. Якщо розглядати таблицю, наведену вище, то в якості складної задачі можна навести наступний приклад. Припустимо, нам необхідно дізнатися основну інформацію про працівників, що перебувають у підпорядкуванні Гришина Григорія Григоровича, який є начальником відділу продажів. При формуванні запиту нам невідомий його ідентифікаційний номер. Тому спочатку нам необхідно його дізнатися. Для цього використовується простий запит, який дозволить знайти рішення головної умови і доповнить основний MySQL-запит. У запиті наглядно представлено, що підзапит отримує ідентифікаційний номер працівника, який у подальшому визначає обмеження головного запиту:
MySQL - запит у запиті. MySQL: приклади запитів. Вкладені запити MySQL
В даному випадку пропозиція any використовується для того, щоб виключити виникнення помилок, якщо співробітників з такими ініціалами виявиться кілька.

Підсумки

Підводячи підсумок, необхідно відзначити, що існує ще багато інших додаткових можливостей, що значно полегшують побудову запитів, так як СУБД MySQL – потужний засіб з багатим арсеналом інструментів для зберігання і обробки даних.