- •Мова sql(Structured Query Language) – як універсальний засіб створення баз даних, маніпулювання данними та отримамання потрібної інформації.
- •Умова відбору (ключове слово where)
- •Зрівняння.
- •Ліве з’єднання (left join)
- •Сортування результату (фраза order by)
- •Групування результатів (фраза group by). Агрегатні функціії.
- •Використання фрази group by
- •Використання фрази having
- •Підзапити
- •Ключові слова exists I not exists
- •Модифікація даних (оператор update)
- •Видалення даних з бази(оператор delete).
- •Створенння таблиць (оператор create table).
- •Check (Naukov_stupin in(‘не має’, ‘кадидат’, ‘доктор’))
- •Використання транзакцій.
- •Управління доступом даних
- •Insert – право втавляти в таблицю нові рядки;
- •Надання привілеїв іншим користувачам (оператор grant)
- •Insert - користувач з цим привілеєм може виконувати оператор insert для цієї таблиці;
- •Відміна наданих привілеїв (оператор revoke)
Сортування результату (фраза order by)
Взагалі кажучи, рядки резудьтуючої таблиці SQL-запиту не впорядковані якимось чином. Але їх можна впорядкувати певним чином, для чого в операторі SELECT використовується фраза ORDER BY. Фраза ORDER BY містить список розділених комами ідентифікаторів стовпчиків таблиць по яким потрібно впорядкувати результуючу таблицю. Фраза ORDER BY дозволяє впорядкувати вибрані записи в порядку зростання (ASC) або спадання (DESC) значення стовпчиків, незалежно від того є вони в результуючій таблиці чи ні. Але в деяких діалектах вимагається, щоб фраза ORDER BY містила лише назви стовчиків, які зустрічаються в списку виборки оператора SELECT. Отже, якщо потрібно впорядкувати результат запиту з попереднього прикладу по коду, необхідно в кінці SQL-оператора додати ORDER BY a.kod. Оператор матиме вид:
SELECT a.kod AS kod_a,a.suma AS suma_a, b.kod AS kod_b,b.suma AS suma_b
FROM table_a a LEFT JOIN table_b b ON a.kod=b.kod
ORDER BY a.kod
Результат запиту матиме вид:
|
kod_a |
suma_a |
kod_b |
suma_b |
|
1 |
100 |
1 |
50 |
|
1 |
100 |
1 |
47 |
|
1 |
55 |
1 |
50 |
|
1 |
55 |
1 |
47 |
|
1 |
40 |
1 |
50 |
|
1 |
40 |
1 |
47 |
|
2 |
150 |
2 |
35 |
|
2 |
150 |
2 |
80 |
|
2 |
89 |
2 |
35 |
|
2 |
89 |
2 |
80 |
|
3 |
28 |
NULL |
NULL |
а результат SQL-оператора
SELECT a.kod AS kod_a,a.suma AS suma_a, b.kod AS kod_b,b.suma AS suma_b
FROM table_a a LEFT JOIN table_b b ON a.kod=b.kod
ORDER BY a.kod, a.suma
матиме вид:
|
kod_a |
suma_a |
kod_b |
suma_b |
|
1 |
40 |
1 |
50 |
|
1 |
40 |
1 |
47 |
|
1 |
55 |
1 |
50 |
|
1 |
55 |
1 |
47 |
|
1 |
100 |
1 |
50 |
|
1 |
100 |
1 |
47 |
|
2 |
89 |
2 |
35 |
|
2 |
89 |
2 |
80 |
|
2 |
150 |
2 |
35 |
|
2 |
150 |
2 |
80 |
|
3 |
28 |
NULL |
NULL |
Групування результатів (фраза group by). Агрегатні функціії.
Стандарт ISO містить визначення 5 агрегатних функцій:
|
COUNT |
Повертає кількість значень у вказаному стовпчику |
|
SUM |
Повертає суму значень у вказаному стовпчику |
|
AVG |
Повертає середнє значення у вказаному стовпчику |
|
MIN |
Повертає мінімальне значеня у вказаному стовпчику |
|
MAX |
Повертає максимальне значеня у вказаному стовпчику |
Всі ці функції оперують зі значеннями одного стовпчика і повертають єдине значення. Функції COUNT, MIN, MAX можуть застосовуватись як до числових стовпчиків, так і до нечислових, а функції SUM i AVG застосовують лише до числових стовпчиків. За виключенням COUNT(*), при обчисленні значення функцій значення NULL не враховуються. Варіант COUNT(*) є особливим випадком застосування функкції COUNT. COUNT(*) повертає загальну кількість рядків результуючої таблиці, незалежно від того містяться там NULL-значення, дубльовані рядки або любі інші значення. Якщо до застосування агрегатних функцій необхідно виключити дубльовані значення, то потрібно перед іменем стовпчика, який є аргументом агрегатної функції помістити ключове слово DISTINCT, наприклад COUNT(DISTINCT kod). Слід зауважити, що не всі діалекти підтримують цю конструкцію. Скажімо Access не підтримує такого використання COUNT.
Стандарт ISO допускає використання ключового слова ALL (тобто всіх), що означає, що виключати дублі непотрібно. За змовчуванням, діє ALL.
Слід зауважити, що ключове слово DISTINCT в кожному запиті можна вказати не більше одного разу. Агрегатні функції можуть використовуватись тільки в списку фрази SELECT, або в складі HAVING. У всіх інших випадках використання агрегатних недопустимо. Якщо список у фразі SELECT є агрегатні функції і в тексті запиту відсутня фраза GROUP BY, тоді список у фразі SELECT не повинен містити назви стовпчиків. Наприклад, такий запит
SELECT kod, SUM(suma)
FROM table_a
є некоректним, поскільки назва стовпчика kod не повинна зустрічатись у списку фрази SELECT.
Приклади використання агрегатних функцій. Запит
SELECT COUNT(kod)
FROM table_a
Поверне число 6 – кількість рядків table_a. Запит
SELECT MAX(suma)
FROM table_a
поверне максимальне значення стовпчика suma – 150. Запит
SELECT MIN(suma) AS suma_min,AVG(suma) AS suma_avg
FROM table_a
поверне таку таблицю результату:
-
suma_min
suma_avg
28
77
де suma_min означає найменше значення стовпчика suma, а suma_avg середнє значення стовчика suma таблиці table_a. Запит
SELECT MAX(suma),MIN(suma),AVG(suma)
FROM table_a
WHERE data<#15-1-2002#
поверне, відповідно, максимальне, мінімальне і середнє значення стовпчика suma для покупок, які були здійснені до 15-1-2002року. Це числа 150, 55 і 101,666666666667 відповідно.
