- •Державна податкова адміністрація україни
- •Поняття інформаційної системи
- •Життєвий цикл інформаційної системи
- •Історія розвитку субд
- •Реляційна модель даних
- •Математичні відношення
- •Реляційні ключі
- •Реляційна цілісність
- •Реляційна алгебра
- •Операції з’єднання
- •Нормалізовані відношення
- •Коли субд можна вважати реляційною
- •Основні типи даних визначених стандартом iso
- •Integer
- •Формати представлення дат
- •Формат time
- •Коротка характеристика сучасних субд
- •Основи мови sql
- •Insert into ustanova(kod,nazva) values(10234,’Академія дпс України’)
- •Прості запити
- •Умова відбору (ключове слово where)
- •Зрівняння
- •Використання діапазонів (between / not between)
- •Умови відбору з перевіркою входження у множину (in / not in)
- •Умови відбору з допомогою шаблону (like / not like)
- •Використання значення null в умовах відбору (is null / not null)
- •Використання множини таблиць в одному запиті
- •Імена таблиць і стовпчиків
- •З’єднання таблиць (join)
- •Ліве з’єднання (left join)
- •Сортування результату (фраза order by)
- •Групування результатів (фраза group by). Агрегатні функції
- •Використання фрази group by
- •Використання фрази having
- •Підзапити
- •Ключові слова any I all
- •Ключові слова exists I not exists
- •Комбінування результуючих таблиць (операції union, intersect і except)
- •Поновлення бази даних
- •Вставка нових даних
- •Модифікація даних (оператор update)
- •Використання inner join, left join в операторі update
- •Видалення даних з бази(оператор delete)
- •Визначення даних
- •Створення баз даних
- •Створення таблиць (оператор create table)
- •Видалення таблиць (оператор drop table)
- •Створення індексу (оператор create index)
- •Видалення індексу (оператор drop index)
- •Модифікація структури таблиці (оператор alter table)
- •Використання транзакцій
- •Управління доступом даних
- •Надання привілеїв іншим користувачам (оператор grant)
- •Відміна наданих привілеїв (оператор revoke)
Прості запити
Призначення оператора SELECT полягає в тому, щоб вибирати необхідні дані з однієї або декількох таблиць. Це виключно потужний оператор, який здатний виконувати дії, еквівалентні операторам реляційної алгебри selection, projection i join. Загальний формат оператора SELECT має вид:
SELECT [DISTINCT | ALL] {* | column_expression [ AS new_name][,…]}
FROM table_name [alias][,…]
[WHERE condition]
[GROUP BY column_list] [HAVING condition]
[ORDER BY column_list]
Параметр column_expression– це ім’я стовпчика або алгебричного виразу над декількох імен. Параметрtable_name– це є ім’я існуючої в базі таблиці або представлення, до яких потрібно доступитись. Необов’язковий параметрalias– це скорочення для імені таблиціtable_name. Обробка елементів оператора SELECT виконується в такій послідовності:
FROM - Визначаються імена таблиць, які використовуються
WHERE - Виконується фільтрація рядків згідно заданої умови відбору
GROUP BY - Утворюються групи рядків з однаковими значеннями в зазначених колонках
HAVING – Фільтруються групи рядків об'єкту згідно вказаної умови
SELECT – Встановлюється, які стовпчики повинні бути у вихідних даних
ORDER BY – Визначається порядок результату виконання оператора.
Порядок фраз в операторі SELECT не можна змінювати. Тільки дві фрази –SELECT і FROM є обов’язковими, всі інші можуть бути пропущеними. Результат запиту до таблиць є таблиця. Символ * в операторі SELECT означає, що будуть вибрані всі стовпчики таблиці.
Приклади. Нехай в таблиціtable_aзберігається інформація про покупки товарів, а вtable_b– про продаж цих товарів. Ці таблиці мають такий вид:
table_a table_b
|
kod |
suma |
data |
|
kod |
suma |
data |
|
1 |
100 |
1.1.2002 |
|
1 |
50 |
12.1.2002 |
|
2 |
150 |
2.1.2002 |
|
1 |
47 |
14.1.2002 |
|
1 |
55 |
10.1.2002 |
|
2 |
35 |
10.1.2002 |
|
1 |
40 |
15.1.2002 |
|
2 |
80 |
1.2.2002 |
|
2 |
89 |
2.2.2002 |
|
|
|
|
|
3 |
28 |
10.2.2002 |
|
|
|
|
В стовпчики “kod” в обох таблицях заноситься код товару. В стовпчик “suma” таблиці table_a заноситься вартість закупленого товару, а в таблиці table_b – сума проданого товару. В стовпчик “data” таблиці table_a заноситься дата закупки товару, а в table_b – дата продажу товару.
Задача. Одержати перелік товарів з відповідними сумами і датами, які були закуплені. Відповідний оператор SELECT матиме вид:
SELECT kod,suma,data
FROM table_a
Оскільки не задана умова відбору фраза WHERE не потрібна. Результат запиту матиме вид:
|
kod |
suma |
data |
|
1 |
100 |
1.1.2002 |
|
2 |
150 |
2.1.2002 |
|
1 |
55 |
10.1.2002 |
|
1 |
40 |
15.1.2002 |
|
2 |
89 |
2.2.2002 |
|
3 |
28 |
10.2.2002 |
Точно такий же результат буде після виконання такого SELECT’у:
SELECT *
FROM table_a
Якщо потрібно відобразити лише код товару і відповідну суму, причому в першій колонці результату має бути сума а у другій - код, оператор SELECT матиме вид:
SELECT suma, kod
FROM table_a
Результат запиту матиме вид:
|
suma |
Kod |
|
100 |
1 |
|
150 |
2 |
|
55 |
1 |
|
40 |
1 |
|
89 |
2 |
|
28 |
3 |
(6 рядків)
Використання ключового слова DISTINCT. Задача. Потрібно скласти перелік кодів товарів які закуповувались. Якщо оператор SELECT задати таким чином:
SELECT kod
FROM table_a
Результат запиту матиме вид:
|
Kod |
|
1 |
|
2 |
|
1 |
|
1 |
|
2 |
|
3 |
(6 рядків)
Зверніть увагу на дубльовані рядки, оскільки, на відміну від операції реляційної алгебри projection, оператор SELECT не виключає дубльованих рядків. Для видалення з результуючої таблиці дубльованих рядків використовується ключове слово DISTINCT. Відредагований запит матиме вид:
SELECT DISTINCT kod
FROM table_a
Результат запиту матиме вид:
|
Kod |
|
1 |
|
2 |
|
3 |
(3 рядки)
При використанні ключового слова ALL оператор SELECT повертає всі рядки.
За змовчуванням (не вказано ні DISTINCT ні ALL), вважається, що діє ALL.
Обчислювальні поля. Задача. Одержати перелік товарів з відповідними сумами і відповідними сумами податку ПДВ, які закладені у вартість закуплених товарів. Відповідний оператор SELECT матиме вид:
SELECT kod,suma,(suma*0.2)/(1+0.2) AS pdv
FROM table_a
Результат запиту матиме вид:
|
kod |
suma |
Pdv |
|
1 |
100 |
16.666666 |
|
2 |
150 |
25 |
|
1 |
55 |
9.3333333 |
|
1 |
40 |
6.6666666 |
|
2 |
89 |
27.666666 |
|
3 |
28 |
4.6666666 |
(6 рядків)
