17) Основний синтаксис оператора select
Оператор SELECT - один з найбільш важливих і найбільш поширених операторів SQL. Він дозволяє робити вибірки даних з таблиць і перетворювати до потрібного вигляду отримані результати.
Будучи дуже потужним, він здатний виконувати дії, еквівалентні операторам реляційної алгебри, причому в межах єдиної виконуваної команди. При його допомозі можна реалізувати складні і громіздкі умови відбору даних з різних таблиць.
Оператор SELECT - засіб, який повністю абстрагировано від питань представлення даних, що допомагає сконцентрувати увагу на проблемах доступу до даних.
Операції над даними виробляються в масштабі наборів даних, а не окремих записів.
SELECT [ALL | DISTINCT]
[GROUP BY ім'я_стовпця [. n]]
[HAVING <критерии выбора групп>]
[ORDER BY ім'я_стовпця [. n]]
Оператор SELECT визначає поля (стовпці), які будуть входити в результат виконання запиту.
У списку вони розділяються комами і наводяться в такій черговості, в якій повинні бути представлені в результаті запиту.
Якщо використовується ім'я поля, що містить прогалини або роздільники, його слід укласти в квадратні дужки.
Символом * можна вибрати все поля.
Якщо обробляється ряд таблиць, то (при наявності однойменних полів в різних таблицях) в списку полів використовується повна специфікація поля, тобто Імя_табліци.Імя_поля.
Обробка елементів оператора SELECT виконується в наступній послідовності:
FROM - визначаються імена використовуваних таблиць;
WHERE - виконується фільтрація рядків об'єкта відповідно до заданих умов;
GROUP BY - утворюються групи рядків. мають одне і те ж значення в зазначеному стовпці;
HAVING - фільтруються групи рядків об'єкта відповідно до зазначеного умовою;
SELECT - встановлюється, які стовпці повинні бути присутніми в вихідних даних;
ORDER BY - визначається впорядкованість результатів виконання операторів.
Пропозиція FROM задає імена таблиць і уявлень, які містять поля, перераховані в операторі SELECT. Необов'язковий параметр псевдоніма - це скорочення, яке встановлюється для імені таблиці.
Параметр WHERE визначає критерій відбору записів з вхідного набору. Але в таблиці можуть бути присутніми повторювані записи (дублікати). Предикат ALL задає включення у вихідний набір всіх дублікатів, відібраних за критерієм WHERE (це значення діє за замовчуванням).
Предикат DISTINCT слід застосовувати в тих випадках, коли потрібно відкинути блоки даних, що містять дублюючі записи в обраних полях.
За допомогою WHERE-параметра користувач визначає, які блоки даних з наведених у списку FROM таблиць з'являться в результаті запиту.
За ключовим словом WHERE слід перелік умов пошуку, що визначають ті рядки, які повинні бути обрані при виконанні запиту.
Існує п'ять основних типів умов пошуку (або предикатів):
1. Порівняння: порівнюються результати обчислення одного виразу з результатами обчислення іншого.
2. Діапазон: перевіряється, чи потрапляє результат обчислення виразу в заданий діапазон значень.
3. Належність безлічі: перевіряється, чи належить результат обчислень виразу заданій множині значень.
4. Відповідність шаблоном: перевіряється, чи відповідає деякий строкове значення заданим шаблоном.
5. Значення NULL: перевіряється, чи містить даний стовпець визначник NULL (невідоме значення).
У мові SQL можна використовувати наступні оператори порівняння:
<= – меньше или равно;
> = - більше або дорівнює;
Більш складні предикати можуть бути побудовані за допомогою логічних операторів AND, OR та NOT, а також дужок, що використовуються для визначення порядку обчислення виразу. Обчислення виразу в умовах виконується за такими правилами:
Вираз обчислюється зліва направо.
Першими обчислюються подвираженія в дужках.
Оператори NOT виконуються до виконання операторів AND і OR.
Оператори AND виконуються до виконання операторів OR.
Для усунення будь-якої можливої неоднозначності рекомендується використовувати дужки.
ОператорBETWEEN використовується для пошуку значення всередині деякого інтервалу, що визначається своїми мінімальним і максимальним значеннями. При цьому зазначені значення включаються в умова пошуку.
При використанні заперечення NOT BETWEEN потрібно, щоб перевіряти значення лежало поза межами заданого діапазону.
ОператорIN використовується для порівняння деякого значення зі списком заданих значень, при цьому перевіряється, чи відповідає результат обчислення виразу одному зі значень в наданому списку. За допомогою оператора IN може бути досягнутий той же результат, що і в разі застосування оператора OR, однак оператор IN виконується швидше.
NOT IN використовується для відбору будь-яких значень, крім тих, які вказані в представленому списку.
За допомогою оператораLIKE можна виконувати порівняння вирази з заданим шаблоном, в якому допускається використання символів-замінників:
Символ% - замість цього символу може бути підставлений будь-яку кількість довільних символів.
Символ _ замінює один символ рядка.
[] - замість символу рядка буде підставлений один з можливих символів, зазначений в цих обмежниках.
[^] - замість відповідного символу рядка будуть підставлені всі символи, крім зазначених у обмежниках.
ОператорIS NULL використовується для порівняння поточного значення зі значенням NULL - спеціальним значенням, що вказує на відсутність будь-якого значення.
IS NOT NULL використовується для перевірки присутності значення в поле.
ПараметрORDER BY сортує дані вихідного набору в заданій послідовності.
Сортування може виконуватися по декількох полях, в цьому випадку вони перераховуються за ключовим словом ORDER BY через кому.
Спосіб сортування задається ключовим словом, вказуються в рамках параметра ORDER BY слідом за назвою поля, по якому виконується сортування.
За замовчуванням реалізується сортування за зростанням. Явно вона задається ключовим словом ASC. Для виконання сортування в зворотному порядку необхідно після імені поля, по якому вона виконується, вказати ключове слово DESC.
Побудова обчислюваних полів
У загальному випадку для створення обчислюваного (похідного) поля в списку SELECT слід вказати деякий вираз мови SQL.
У цих виразах застосовуються арифметичні операції додавання, віднімання, множення і ділення, а також вбудовані функції мови SQL.
Можна вказати ім'я будь-якого стовпця (поля) таблиці або запиту, але використовувати ім'я стовпця тільки тієї таблиці або запиту, які вказані в списку пропозиції FROM відповідної інструкції. При побудові складних виразів можуть знадобитися дужки.
Стандарти SQL дозволяють явно задавати імена стовпців результуючої таблиці, для чого застосовується фраза AS.
Використання підсумкових функцій
За допомогою підсумкових (агрегатних) функцій в рамках SQL-запиту можна отримати ряд узагальнюючих статистичних відомостей про безліч відібраних значень вихідного набору.
Користувачеві доступні наступні основні підсумкові функції:
Count (Вираз) - визначає кількість записів в вихідному наборі SQL-запиту;
Min / Max (Вираз) - визначають найменше та найбільше з безлічі значень в деякому полі запиту;
Avg (Вираз) - ця функція дозволяє розрахувати середнє значення безлічі значень, що зберігаються в певному полі відібраних запитом записів.
Sum (Вираз) - обчислює суму безлічі значень, що містяться в певному полі відібраних запитом записів.
Найчастіше в якості вираження виступають імена стовпців. Вираз може обчислюватися і за значеннями кількох таблиць.