Оператор Select (SQL)
Сам переклад абревіатури SQL (мова структурно організованих запитів) відображає той факт, що саме запити - найбільш часто застосовуваний елемент в SQL. Вибрати потрібні рядки, автоматично виключити надлишкові дані, пропустити або змінити порядок стовпців допоможе Select (SQL) - оператор, який містить вказівку СУБД вивести певну інформацію.
Select
Повідомляє базі даних, що ми передаємо запит. Це ключове слово.
One, two, three
Список стовпців для виведення
From
Вказує на ім'я таблиці, з якої будуть вибиратися дані. Також є обов'язковим ключовим словом.
Це так званий «короткий» синтаксис оператора, проте він вказує нам на те, що без ключових слів Select і from СУБД наш запит не виконає. Повний синтаксис оператора представлений на наступному малюнку: Тут пропозиція Where дозволяє уточнити пошук, задавши умову. Для групування значень і застосування до них агрегатної функції використовується пропозиція Group by, а щоб уточнити результат вже після угруповання, використовується пропозиція Having. Order by дозволить сортування вибраних стовпчиків за зростанням або за спаданням. Щоб більш наочно ознайомитися з оператором Select, уявімо, що в нашій базі даних є наступна таблиця Cats з інформацією:
Id
Breed
Name
Birthday
Color
1
Бобтейл
Лорд
01042017
Grey
2
Керл
Фінт
16032017
White
3
Мау
Пантера
30032017
Black
4
Бобтейл
Тайсон
23022017
Grey
5
Бурмилла
Афіна
08012017
Black
Кожен рядок таблиці містить унікальний номер кошеня, його породу, кличку, дату народження і забарвлення. Далі будемо розглядати, як працює оператор Select (SQL), спираючись на дані з цієї таблиці.
Select color, breed, name From Cats
Як бачимо, ми можемо упорядковувати стовпці в тому порядку, в якому вони нам необхідні. Крім того, можемо виводити тільки необхідні нам стовпці. Існує також коротка запис для перегляду всіх стовпців таблиці. Для цього після Select вказується зірочка (*) через пробіл. Вся конструкція буде виглядати так:
Select * From Cats
Результат наведеного запиту - вся таблиця Cats, представлена у тому вигляді, в якому вона міститься в кінці минулого розділу. Багато цікавляться тим, як розмістити результати виконання SQL Select в рядок. Найчастіше це потрібно, коли необхідно об'єднати прізвище, ім'я та по батькові особи, розміщені в роз'єднаних стовпцях. У нашому випадку об'єднаємо породу і забарвлення кішок з таблиці Cats. Нюанс полягає в тому, що різні СУБД використовують для рядковій конкатенації різні символи. В одних випадках це просто плюс (+), в інших – подвійна пряма риса (||) або символ амперсанда (&), часом використовується і операнд Concat. Тому перед об'єднанням необхідно прочитати анотацію до конкретної СУБД, з якою ви працюєте.
Select breed || ', ' || color From cats
Результат отримаємо наступний:
Breed, Color
Бобтейл, Grey
Керл, White
Мау, Black
Бобтейл, Grey
Бурмилла, Black
Select breed From Cats
То отримаємо цілком очікуваний результат:
Breed
Бобтейл
Керл
Мау
Бобтейл
Бурмилла
Як бачимо, порода бобтейл дублюється два рази. Аргумент Distinct дозволить виключити дублювання, достатньо лише дописати запит:
Select distinct breed From Cats
Select * From cats Where color = 'Black'
Результатом виконання даного запиту стануть наступні рядки таблиці:
3
Мау
Пантера
30032017
Black
5
Бурмилла
Афіна
08012017
Black
Також можна комбінувати умови, використовуючи логічні оператори And, Or, Not.
Select breed, count(*) From cats Group by breed
Результатом виконання стане наступна таблиця:
Breed
Count
Бобтейл
2
Керл
1
Мау
1
Бурмилла
1
Як бачимо, кошенят породи бобтейл у нас двоє, інших же всього по одному. На практиці за таким запитом, грунтуючись на таблиці, заводчик може зрозуміти, кішки яких порід користуються попитом у покупців, а яких – ні. Цілком ймовірно, що з-за величезної кількості записів в реальній таблиці захочеться ще уточнити запит і вивести тільки ті породи кошенят, яких залишилося не більше, наприклад, десяти. Для уточнення або фільтрації груп використовується пропозиція Having. Воно дозволяє відкинути певні групи, аналогічно речення Where, отбрасывающему окремі рядки. Умова задається за агрегатної функції. Допишемо запит:
Select breed, count(*) From cats Group by breed Having count(*) <=10
Оскільки умова ми поставили «кількість кошенят кожної породи не більше 10», то результат отримаємо такий же, як у прикладі без уточнення. Але тут важливо зрозуміти саму схему роботи пропозиції Having. А ось якщо змінимо логічне умова на Having count(*) =1 то результат скоротиться до трьох рядків і виведе породи кошенят, яких залишилося всього по одному.
Синтаксис оператора
Щоб правильно використовувати будь-який оператор, необхідно спершу ознайомитися із синтаксисом розглянутого мови програмування. Коли говоримо конкретно про мову SQL Select (оператор) має наступний синтаксис:Select
Повідомляє базі даних, що ми передаємо запит. Це ключове слово.
One, two, three
Список стовпців для виведення
From
Вказує на ім'я таблиці, з якої будуть вибиратися дані. Також є обов'язковим ключовим словом.
Це так званий «короткий» синтаксис оператора, проте він вказує нам на те, що без ключових слів Select і from СУБД наш запит не виконає. Повний синтаксис оператора представлений на наступному малюнку: Тут пропозиція Where дозволяє уточнити пошук, задавши умову. Для групування значень і застосування до них агрегатної функції використовується пропозиція Group by, а щоб уточнити результат вже після угруповання, використовується пропозиція Having. Order by дозволить сортування вибраних стовпчиків за зростанням або за спаданням. Щоб більш наочно ознайомитися з оператором Select, уявімо, що в нашій базі даних є наступна таблиця Cats з інформацією:
Id
Breed
Name
Birthday
Color
1
Бобтейл
Лорд
01042017
Grey
2
Керл
Фінт
16032017
White
3
Мау
Пантера
30032017
Black
4
Бобтейл
Тайсон
23022017
Grey
5
Бурмилла
Афіна
08012017
Black
Кожен рядок таблиці містить унікальний номер кошеня, його породу, кличку, дату народження і забарвлення. Далі будемо розглядати, як працює оператор Select (SQL), спираючись на дані з цієї таблиці.
Як відбувається вибірка даних з таблиці
Як було розглянуто вище, для вибірки потрібних даних з таблиці обов'язково використовуються ключові слова. Після ключового слова Select зазначаються стовпці для виводу. Можна зробити перелік потрібних стовпців через кому, тоді вся конструкція буде виглядати так:Select color, breed, name From Cats
Як бачимо, ми можемо упорядковувати стовпці в тому порядку, в якому вони нам необхідні. Крім того, можемо виводити тільки необхідні нам стовпці. Існує також коротка запис для перегляду всіх стовпців таблиці. Для цього після Select вказується зірочка (*) через пробіл. Вся конструкція буде виглядати так:
Select * From Cats
Результат наведеного запиту - вся таблиця Cats, представлена у тому вигляді, в якому вона міститься в кінці минулого розділу. Багато цікавляться тим, як розмістити результати виконання SQL Select в рядок. Найчастіше це потрібно, коли необхідно об'єднати прізвище, ім'я та по батькові особи, розміщені в роз'єднаних стовпцях. У нашому випадку об'єднаємо породу і забарвлення кішок з таблиці Cats. Нюанс полягає в тому, що різні СУБД використовують для рядковій конкатенації різні символи. В одних випадках це просто плюс (+), в інших – подвійна пряма риса (||) або символ амперсанда (&), часом використовується і операнд Concat. Тому перед об'єднанням необхідно прочитати анотацію до конкретної СУБД, з якою ви працюєте.
Select breed || ', ' || color From cats
Результат отримаємо наступний:
Breed, Color
Бобтейл, Grey
Керл, White
Мау, Black
Бобтейл, Grey
Бурмилла, Black
Виключення надлишкових даних
Distinct – функція Select (SQL), що дозволяє виключити дублювання абсолютно ідентичних рядків з результату вибірки. Наприклад, ми хочемо дізнатися, кішки яких порід є в нашій таблиці. Якщо використовуємо простий запит:
Select breed From Cats
То отримаємо цілком очікуваний результат:
Breed
Бобтейл
Керл
Мау
Бобтейл
Бурмилла
Як бачимо, порода бобтейл дублюється два рази. Аргумент Distinct дозволить виключити дублювання, достатньо лише дописати запит:
Select distinct breed From Cats
Уточнення запиту
В реальності практично жоден запит не виводить дані у вигляді повного набору рядків таблиці. Розглянемо, яке речення в Select (SQL) дозволить задати критерії для відбору тільки потрібних рядків. Таким пропозицією служить Where. У цьому реченні застосовується предикат – умовний вираз, що дає на виході значення "істина" або "брехня". Оператор Select витягне тільки ті дані з таблиці, для яких вираз буде мати значення True, або "істина". Допоможе розібратися з даною конструкцією проста вибірка. Припустимо, ми хочемо знати все про кішок чорного забарвлення.Select * From cats Where color = 'Black'
Результатом виконання даного запиту стануть наступні рядки таблиці:
3
Мау
Пантера
30032017
Black
5
Бурмилла
Афіна
08012017
Black
Також можна комбінувати умови, використовуючи логічні оператори And, Or, Not.
Пропозиція Group by
Пропозиція Group by, використовуване в Select (SQL), дозволяє згрупувати запити значень певного стовпця (або стовпців), а потім застосувати до них агрегатну функцію. До агрегатним функцій належать: Count – підраховує кількість рядків, відібраних запитом. Sum – арифметична сума всіх відібраних значень стовпця. Min – виводить мінімальне з відібраних значень стовпця. Max – відповідно, максимальне з відібраних значень стовпця. Avg – середнє значення. Схему роботи даної пропозиції простіше всього зрозуміти на конкретному прикладі. Припустимо, ми хочемо дізнатися, скільки кошенят кожної породи у нас є. Для цього необхідно сформувати наступний простий запит:Select breed, count(*) From cats Group by breed
Результатом виконання стане наступна таблиця:
Breed
Count
Бобтейл
2
Керл
1
Мау
1
Бурмилла
1
Як бачимо, кошенят породи бобтейл у нас двоє, інших же всього по одному. На практиці за таким запитом, грунтуючись на таблиці, заводчик може зрозуміти, кішки яких порід користуються попитом у покупців, а яких – ні. Цілком ймовірно, що з-за величезної кількості записів в реальній таблиці захочеться ще уточнити запит і вивести тільки ті породи кошенят, яких залишилося не більше, наприклад, десяти. Для уточнення або фільтрації груп використовується пропозиція Having. Воно дозволяє відкинути певні групи, аналогічно речення Where, отбрасывающему окремі рядки. Умова задається за агрегатної функції. Допишемо запит:
Select breed, count(*) From cats Group by breed Having count(*) <=10
Оскільки умова ми поставили «кількість кошенят кожної породи не більше 10», то результат отримаємо такий же, як у прикладі без уточнення. Але тут важливо зрозуміти саму схему роботи пропозиції Having. А ось якщо змінимо логічне умова на Having count(*) =1 то результат скоротиться до трьох рядків і виведе породи кошенят, яких залишилося всього по одному.
Сортування
Познайомимося з Order by – пропозицією оператора Select (SQL), що дозволяє відсортувати виводяться рядки за зростанням або спаданням значень в одному або декількох стовпцях. Важливо пам'ятати, що Order by – це заключне речення всієї конструкції оператора Select. Воно розміщується після Select, From, Where, Group by, Having. При проведенні сортування є три важливих моменти: 1) Можна вказати будь-яку кількість стовпців, кожний з яких окремо можна відсортувати або за зростанням (ASC), або за спаданням (DESC). 2) Всі зазначені стовпці в операторі Order by повинні обов'язково бути присутнім серед вибраних стовпців Select. 3) Необов'язково перераховувати конкретні імена стовпців для сортування, можна просто вказати їх номери, під якими вони йдуть в інструкції Select. Сподіваємося, що з допомогою нашої статті ви отримали базові знання про використання SQL запитів і тепер без праці виберете необхідну інформацію з вашої СУБД.Цікаво по темі
SQL distinct: опис, приклади, властивості
Найчастіше при використанні SQL для вибірки інформації з таблиць, користувач отримує надлишкові дані, які полягають в наявності абсолютно ідентичних
Як задається SQL-сортування?
При роботі з базами даних часто виникає необхідність вивести результат запиту в певному порядку, наприклад, за алфавітом. Для цього в СУБД існує
SQL Where: способи застосування та приклади
Для вибору даних з бази використовується конструкція Select[набор данних]from[имя таблици]. Як показує досвід, в 80 % випадків використання запитів
HAVING SQL: опис, синтаксис, приклади
Серед інших параметрів оператора SELECT мови SQL параметр HAVING є вкрай корисним. Це стосується тих випадків, коли результуючу вибірку потрібно не
MySQL - запит у запиті. MySQL: приклади запитів. Вкладені запити MySQL
Основні особливості вкладених запитів. Як побудувати в MySQL запит в запиті. Для чого необхідні вкладені запити. Приклад вкладеного запиту MySQL.
MySQL select select from: оператор вибірки
MySQL - одна з найпопулярніших систем управління базами даних (СУБД). У даній статті ми розглянемо базову функціональність оператора вибірки SELECT,