Операції та агрегатні функції.



При створенні запитів на мові SQL використовуються реляційні та булеві оператції, спеціальні операції умов, а також агрегатні функції.

Реляційні операції

Реляційні операції – це математичні символи, які вказують на певний тип порівняння двох значень. SQL використовує наступні операції:

=  рівне;
>  більше ніж;
<  менше ніж;
>=  більше або рівне;
<=  менше або рівне;
<>  не дорівнює.

 

Ці операції мають стандартні значення для числових значень. Для символьних значень їх визначення залежить від синтаксису перетворення ASCII або EBCDIC.

Булеві операції

Основні булеві операції (NOT , AND, OR) Булеві вирази набувають значення істина або хибність згідно таблиці:

a b a AND b a OR b
TRUE TRUE TRUE TRUE
TRUE FALSE FALSE TRUE
TRUE NULL NULL TRUE
FALSE FALSE FALSE FALSE
FALSE NULL FALSE NULL
NULL NULL NULL NULL

 

a NOT a
TRUE FALSE
FALSE TRUE
NULL NULL

 

Мова SQL дозволяє використовувати також спеціальні операції, а саме:

IN – визначає набір значень, в який дане значення може бути включене або ні (A IN (1, 2, 3, 4, 5); B IN (‘X’, ‘Y’, ‘Z’));

BETWEEN – визначає діапазон значень, куди дане значення може входити (A BETWEEN 1 AND 5; B BETWEEN ‘X’ AND ‘Z’). Тут числа ’1’ і ’5’та символи ’X’ і ’Z’ входять у діапазон;

LIKE – використовується тільки для даних символьних типів, де у значеннях шукає входження рядка; при використанні символ (_) він заміняє будь-який один символ, а символ (%) заміняє послідовність будь-яких символів. Наприклад вираз

Text LIKE ‘S_’

дасть значення істина, якщо значення текстового поля Text починається з літери S, а другий символ довільний. 

Text LIKE ‘S%’

дасть значення істина, якщо значення поля Text починається з літери S,а решту – будь які символи;

IS NULL – вказує на невизначене значення.

Агрегатні функції

Агрегатні функції видають конкретне значення для всієї вибірки.

Такими функціями є:

COUNT – видає кількість вибраних значень;

SUM – видає арифметичну суму вибраних значень;

AVG – видає середнє значення вибраних значень;

MAX – видає найбільше значення серед вибраних значень;

MIN – видає найменше значення серед вибраних значень.

Мова SQL - вибірка даних

       Вибірка даних здійснюється за допомогою основного та найбільш функціонального оператора:

Оператор SELECT

Оператор SELECT – дозволяє проводити вибірки даних з однієї чи декількох таблиць і перетворювати до потрібного вигляду отримані результати які, як правило, представляються у вигляді таблиці.

Синтаксис оператора:

SELECT
 [ ALL | DISTINCT ] * |
 <ім’я таблиці>.* |
 [ <ім’я таблиці>.]<назва поля> [AS <псевдонім>] [, …] |
 <вираз> [AS <псевдонім>] [, …]
[ FROM
<ім’я таблиці> [, …] ]
[WHERE …]
[GROUP BY …]
[HAVING …]
[ORDER BY …] ;

ALL | DISTINCT – предикати, які використовуються для обмеження числа записів, що повертаються. За замовчуванням використовується ALL (повертає усі значення), якщо предикати відсутні. DISTINCT – виключає записи, що містять значення, які повторюються у всіх вибраних полях. Впливає на результат тоді, коли у запиті аналізуються не всі поля з таблиці. Символ «*» означає, що вибрані всі поля заданої таблиці або таблиць. Параметр <ім’я таблиці> – назва таблиці, з якої потрібно вибрати записи, <назва поля> – назва поля, з якого вибирають дані; якщо ж задано декілька полів, то дані вибираються у визначеному порядку, AS – задає нову назву заголовка стовпця у запиті, <псевдонім> – назва, що буде заголовком стовпця замість початкового.

Даний оператор не змінює дані у БД, де відбувається вибір. У найпростішому випадку дію оператора SELECT можна сформулювати так: вибрати <елемент> із <джерела>.

Фраза FROM

Фраза FROM міститься у операторі SELECT і є обов’язковою у випадку вибірки даних хоча б з однієї чи кількох таблиць. Дана фраза може бути опущена у вибірках результатів із деяких виразів чи функцій, наприклад SELECT 2+3;

Порядок таблиць у виразі не важливий — більшість сучасних СУБД проводять попередній аналіз та планування оптимізації виконання запиту.

Синтаксис:

FROM <ім’я таблиці> [, …];

Тут <ім’я таблиці> – назва таблиці, з якої потрібно вибрати записи.

Приклади.

Розглянемо таблицю Students (табл.1), яка складається з п’яти полів і п’яти записів: Num містить ідентифікаційні номери студентів; Surname - прізвища студентів; Name - імена студентів; Age - вік студентів; Speciality – спеціальність, на якій студент навчається.

Таблиця 1

Num Surname Name Age Speciality
1 Крупик Віктор 19 Інформатика
2 Прапій Степан 19 Інформатика
3 Працків Оксана 18 Інформатика
4 Селань Віктор 20 Математика
5 Ятрів Олег 17 Інформатика
6 Петрів Назар 20  

 

Дана таблиця буде використовуватись при розгляді решти прикладів.

Приклад 1.

Вивести всі значення таблиці Students.

Запит матиме вигляд:

SELECT * FROM Students;

Результат – табл. 2

Таблиця 2

Num Surname Name Age Speciality
1 Крупик Віктор 19 Інформатика
2 Прапій Степан 19 Інформатика
3 Працків Оксана 18 Інформатика
4 Селань Віктор 20 Математика
5 Ятрів Олег 17 Інформатика
6 Петрів Назар 20  

 

Приклад 2.

Інший варіант реалізації прикладу 1.

SELECT
 Num, Surname, Name, Age, Speciality
FROM
 Students;

Даний запит також виводить усі значення таблиці Students (табл.1).

Результат – табл. 2

Приклад 3.

Вивести тільки значення поля Age (вік студентів), з новою назвою заголовка стовпця s_age.

Запит матиме вигляд:

SELECT
 Age AS s_age
FROM
 Students;

Результат – табл. 3

Таблиця 3

s_age
19
19
18
20
17
20

 

Для отримання переліку даних без повторень, використовують оператор DISTINCT.

Приклад 4.

Вивести якого віку є студенти у таблиці Students .

Запит матиме вигляд:

SELECT DISTINCT
 Age
FROM
 Students;

Результатом дії будуть унікальні дані (табл. 5).

Таблиця 5

Age
17
18
19
20

 

В команді SELECT можуть міститись не тільки імена стовпців таблиці чи таблиць, але і обчислювальні вирази.

Приклад 5.

Вивести прізвища студентіві їх вік у місяцях вважаючи, що у таблиці вказаний повний рік (12 місяців).

Запит матиме вигляд:

SELECT
 Surname, Age*12, ' місяців '
FROM
 Students;

Фраза WHERE

Фраза WHERE є необов’язковою. Дана фраза визначає умову вибірки результуючих рядків. Якщо фраза WHERE не включена у запит, то результатом будуть усі результуючі рядки. Якщо в запиті використовуються декілька таблиць і фраза WHERE відсутня, то результатом буде скалярний добуток таблиць.

Синтаксис:

[WHERE <умова>]

де <умова> – умова або умови вибору значень із поля чи полів які включають операції відношення, логічні операції, функції тощо.

Приклад 6.

Вибрати прізвища студентів, яким є дев’ятнадцять років. Для цього використаємо фразу WHERE.

Запит матиме вигляд:

SELECT
 Surname, Age
FROM
 Students
WHERE
 Age=19;

Результат – табл. 6

Таблиця 6

Surname Age
Крупик 19
Прапій 19

 

Приклад 7.

 Вибрати студентів, що поступили на інформатику і яким менше 19 років.

Запит матиме вигляд:

SELECT
 Surname, Age, Speciality
FROM
 Students
WHERE
 Speciality='Інформатика' AND Age<19;

Результат - табл. 7

Таблиця 7

Surname Age Speciality
Працків 18 Інформатика
Ятрів 17 Інформатика

 

Приклад 8.

Вивести прізвища всіх студентів для яких не задана спеціальність.

Запит матиме вигляд:

SELECT
 Surname, Age, Speciality
FROM
 Students
WHERE
Speciality is null;

Результат – табл.8

Таблиця 8

Surname Age Speciality
Ціпій 20  

 

Якщо потрібно вивести прізвища студентів із визначеними спеціальностями, то запит матиме вигляд:

SELECT
 Surname, Age, Speciality
FROM
 Students
WHERE
 Speciality is not null;

Приклади використання функцій between і in у запитах.

Select * from Students where Age between 17 and 19;

Select * from Students where Age in (17,19);

Фраза GROUP BY

Фраза GROUP BY є необов’язковою. Використовується при формуванні підсумкових запитів і об’єднує записи з однаковими значеннями у вказаному списку полів в один запис. Дозволяє застосовувати агрегатні функції до кожної групи, яка визначається загальним значенням поля або полів, вказаних в цій фразі.

Синтаксис:

GROUP BY

Параметр <таблиця> можна не використовувати у тих випадках, коли користувач працює з однією таблицею.

Параметр <назва поля> – поле, по якому відбувається групування. Йому може передувати ім’я таблиці, якщо вибір виконується більше ніж з однієї таблиці.

Приклад 9.

Підрахувати кількість студентів на кожній із спеціальностей і вивести назву спеціальності і кількість студентів на ній. Для зручності скористаємось реченням GROUP BY.

Запит матиме вигляд:

SELECT
 Speciality, COUNT(Speciality)
FROM
 Students
GROUP BY
 Speciality;

Тут функція Count повертає кількість записів у групі.

Результат - табл. 9

                                                   Таблиця 9

Speciality COUNT ( Speciality)
Інформатика 4
Математика 1

 

Фраза HAVING

Фраза HAVING є необов’язковою. Після того, як записи будуть згруповані за допомогою GROUP BY, фраза HAVING відбере ті значення з отриманих записів, що задовольнять умовам вибірки, які вказані у HAVING .

Синтаксис:

[HAVING <умова>]

Параметр <умова> – умова або умови відбору значень із отриманих записів.

Приклад 10.

Видати назви спеціальностей на які поступило більше трьох людей та точну їх кількість. Для цього у GROUP BY застосуємо HAVING .

Запит матиме вигляд:

SELECT
 Speciality, COUNT(Speciality)
FROM
 Students
GROUP BY
 Speciality
HAVING
 COUNT(Speciality)>3;

Результат - табл. 10

                                 Таблиця 10

Speciality COUNT (Speciality)
Інформатика 4

 

Фраза ORDER BY

Фраза ORDER BY є необов’язковою. Дана фраза сортує результуючі записи, що отримані після виконання запиту за зростанням або спаданням указаних полів чи поля. Його необхідно вказувати для сортування результату запиту. За замовчуванням задано порядок сортування за зростанням.

Синтаксис:

[ ORDER BY
{ <назва поля> [ ASC | DESC ] } [,…]]

<назва поля> – поле, за яким відбувається сортування. ASC (DESC) – зареєстровані слова для розташування елементів у зростаючому (спадному) порядку.

Приклад 11.

Вивести на екран всю інформацію про студентів, яка відсортована у спаданні за віком студентів, а потім у зростанні за їх прізвищами.

Запит матиме вигляд:

SELECT *
FROM
 Students
ORDER BY
 Age DESC, Surname ASC;

Результат – табл. 11

Таблиця 11

Num Surname Name Age Speciality
6 Петрів Назар 20  
4 Селань Віктор 20 Математика
1 Крупик Віктор 19 Інформатика
2 Прапій Степан 19 Інформатика
3 Працків Оксана 18 Інформатика
5 Ятрів Олег 17 Інформатика

 


Дата добавления: 2022-01-22; просмотров: 20; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!