- •1. Dмl: команди вибірки даних
- •2. Вибірка без використання фрази where
- •2.1. Проста вибірка
- •2.2. Виключення дублікатів
- •3. Вибірка з використанням фрази where
- •3.1. Використання операторів порівняння
- •3.2. Використання between
- •3.3. Використання in
- •3.4. Використання like
- •3.5. Залучення невизначеного значення (null-значення)
- •4. Вибірка з упорядкуванням
- •5. Запити з обчисленням. Обчислення у межах Select
- •6. Агрегування даних. Використання агрегатних функцій у запитах
- •6.1. Агрегатні sql-функції
- •6.2. Функції без використання фрази group by
- •6.3. Використання агрегатних функцій з угрупованнями. Фраза group by
- •6.4. Використання фрази having
- •7. Dмl: Запити з використанням кількох таблиць
- •7.1. Засоби одночасної роботи з множиною таблиць
- •7.2. Запити, що використовують з'єднання
4. Вибірка з упорядкуванням
Для сортування даних, одержуваних за допомогою оператора SELECT служить ключове слово ORDER BY. За його допомогою можна сортувати результати по будь-якому стовпцю чи виразу, зазначеному в <списку_вибору>. Дані можуть бути упорядковані як по зростанню - ASC (ASCending), так і по убуванню - DESC (DESCending), а за замовчуванням приймається ASC.
Синтаксис фрази упорядкування:
[ORDER BY <ім'я_стовпця> [ASC | DESC],... ]
Приклад. сортувати список авторів за алфавітом:
SELECT author FROM authors ORDER BY author;
При включенні в список ORDER BY кількох стовпців СУБД сортує рядки результату за значеннями першого стовпця списку поки не з'явиться кілька рядків з однаковими значеннями даних у цьому стовпці. Такі рядки сортуються за значеннями наступного стовпця зі списку ORDER BY і т.д.
Крім того, у список ORDER BY можна включати не тільки ім'я стовпця, а його порядкову позицію в переліку SELECT. Завдяки цьому можливо упорядкування результатів на основі стовпців, що обчислюються, що не мають імен.
5. Запити з обчисленням. Обчислення у межах Select
Із синтаксису фрази SELECT (п.5.1) видно, що в ній може міститися не тільки перелік стовпців таблиці чи символ *, але і вирази.
Синтаксис виразів має вигляд
( {[ [+] | - ] {значення | функція_СУБД} [ + | - | * | ** ]}... )
Синтаксис SQL_функцій - одна з наступних конструкцій:
{SUM|AVG|MIN|MAX|COUNT} ( [[ALL]|DISTINCT][таблиця.]стовпець )
{SUM|AVG|MIN|MAX|COUNT} ( [ALL] вирази )
COUNT(*)
Фраза SELECT може включати не тільки вирази, але й окремі числові чи текстові константи. Слід зазначити, що текстові константи повинні укладатися в апострофи (').
SQL дозволяє виконувати різні арифметичні операції над стовпцями результуючого відношення. У конструкції <список_вибору> можна використовувати константи, функції і їхньої комбінації з арифметичними операціями і дужками.
В арифметичних виразах допускаються операції додавання (+), вирахування (-), ділення (/), множення (*), а також різні функції (COS, SIN, ABS - абсолютне значення і т.д.).
У SQL також визначені так називані агрегатні функції, що здійснюють дії над сукупністю однакових полів у групі записів. Серед них:
AVG(<ім'я поля>) - середнє за всіма значеннями даного поля
COUNT(<ім'я поля>) чи COUNT (*) - число записів
MAX(<ім'я поля>) - максимальне з усіх значень даного поля
MIN(<ім'я поля>) - мінімальне з усіх значень даного поля
SUM(<ім'я поля>) - сума всіх значень даного поля
Варто враховувати, що кожна агрегуюча функція повертає єдине значення. Приклади: визначити дату публікації самої "древньої" книги в нашій базі даних
Якщо при завантаженні рядків таблиці в який-небудь з рядків, що вводяться, відсутнє значення для якого-небудь стовпця, то СУБД введе в таке поле NULL-значення. NULL-значення "придумане" для того, щоб представити єдиним образом "невідомі значення" для будь-яких типів даних. За допомогою спеціальної команди можна установити в СУБД один з режимів представлення NULL-значень при виконанні числових розрахунків: заборона чи дозвіл заміни NULL-значення нулем. У першому випадку будь-яке арифметичне вираження, що містить невизначений операнд, буде також мати невизначене значення. В другому випадку результат обчислень буде мати чисельне значення (якщо це значення потрапляє в діапазон представлення відповідного типу даних).
Приклад. Використання скалярних виразів і перейменувань колонок у запитах (ключове слово AS…):
SELECT
TOVAR.TNAME,
TOVAR.KOL,
TOVAR.PRICE,
"=" AS EQU,
TOVAR.KOL*TOVAR.PRICE AS SUMMA
FROM TOVAR;
У результаті одержимо таблицю з колонками, яких не було у вихідній таблиці TOVAR:
TNAME |
KOL |
PRICE |
EQU |
SUMMA |
Болт |
10 |
100 |
= |
1000 |
Гайка |
20 |
200 |
= |
4000 |
Гвинт |
30 |
300 |
= |
9000 |
