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 запит select

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

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

mysql запит в запиті

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

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

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

вкладені запити mysql

В даному випадку пропозиція Any використовується для того, щоб виключити виникнення помилок, якщо співробітників з такими ініціалами виявиться кілька.

Підсумки

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



ЩЕ ПОЧИТАТИ