- •Модуль 1 Тема 1. Вступ до sql. Синтаксис sql. Типи даних.
- •1. Вступ до sql.
- •Функції sql:
- •Роль sql
- •Переваги sql:
- •Синтаксис sql.
- •Типи даних.
- •1.3.1. Команди
- •1.3.2. Імена
- •1.3.3. Типи даних
- •1.3.4. Константи
- •1.3.4.1. Числові константи
- •1 .3.4.2. Літерні рядки
- •1.3.4.3. Константи дати і часу
- •1.3.4.4. Іменовані константи
- •1.3.5. Вирази
- •1.3.6. Вбудовані функції
- •Тема 2. Створення баз даних
- •Мова визначення даних
- •2. Створення бази даних
- •Тема 3. Створення таблиць
- •1. Команда створення таблиці.
- •2. Заборона значення null за допомогою обмеження not null
- •Тема 4. Вставка стрічок з допомогою оператора insert. Вилучення стрічок з допомогою оператора delete, редагування стрічки з допомогою команди update.
- •Вставка рядків за допомогою команди insert.
- •Додавання рядка за допомогою положення стовпця
- •Додавання рядка за допомогою назв стовпців
- •Додавання рядків з однієї таблиці в іншу
- •Зміна рядків за допомогою команди update.
- •Зміна рядків
- •Видалення рядків за допомогою команди delete
- •Видалення рядків
- •Тема 5. Оператор select
- •Оператор select.
- •Обчислювальні стовпчики. Альтернативне ім’я стовпчику.
- •Порівняння значення стовпчика із константою
- •Правила виконання однотабличних запитів на вибірку
- •Тема 6. Комбінування умов з допомогою операторів and, or, not. Порівняння по шаблону. Порівняння з діапазоном. Сортування стрічок з допомогою речення order by.
- •Порівняння значень виразів має наступну синтаксичну діаграму:
- •Тема 7. Створення псевдонімів. З’єднання таблиці із собою. Вибір даних з кількох таблиць
- •1. Створення псевдонімів.
- •2. З’єднання таблиці із собою.
- •3. Просте з’єднання таблиць (з’єднання за рівністю)
- •Запити з використанням відношення „головна – підлегла” таблиці (предок – нащадок)
- •3. Запити на вибірку до трьох і більше таблиць
- •4. Запити на об’єднання
- •Тема 8. Введення обмежень в базах даних
- •1. Види обмежень в базі даних.
- •Основні принципи роботи з обмеженнями
- •Присвоєння назви обмеженню
- •2. Первинний і унікальний ключі.
- •3. Зовнішні ключі.
- •4. Обмеження check
- •5. Вилучення обмежень.
- •Тема 9. Використання збережуваних процедур в базах даних. Використання генераторів ключів у базах даних в InterBase. Використання тригерів у базах даних.
- •1. Визначення збережуваної процедури.
- •1.2. Цикли й оператори розгалуження.
- •2. Створення генераторів.
- •2.1. Індекси.
- •2.2. Обробка виключень і помилок.
- •3. 1.Означення тригера.
- •3.2. Приклад тригера.
- •3.3. Контекстні змінні.
- •Тема 10. Безпека в базах даних
- •1. Користувач InterBase.
- •3. Організація користувачі у групи за допомогою ролей.
- •4. Права. Роздача прав.
- •5. Анулювання прав.
- •Модуль 2 Тема 11. Оператор exists. Сумування і групування даних.
- •1.1. Оператор exists.
- •1.2. Використання exists з співвіднесеними підзапитами.
- •1.3. Комбінація оператора exists і з’єднання.
- •1.4. Використання not exists.
- •1.5. Використання складних підзаписів з оператором exists.
- •2.1. Агрегатні (статистичні) функції
- •2.2. Правила опрацювання значення null агрегатними функціями:
- •2.3.Опрацювання унікальних записів агрегатними функціями
- •2.4. Агрегатні функції і значення null
- •3.1. Групування записів
- •3.2. Секція having – умова відбору груп
- •3.3. Обмеження на умову відбору груп
- •3.4. Значення null і умова відбору груп
- •3.5. Секція having без секції group by
- •Тема 12. З’єднання з базою даних. Використання збережуваних процедур в Delphi
- •1. З’єднання з сервером
- •2. Використання збережуваних процедур в Delphi.
- •Компонент tStoredProc.
- •Тема 13. Використання механізму транзакцій компонента Database. Керування транзакціями
- •Тема 14. Сервер баз даних InterBase і компоненти InterBase Express.
- •1. Сервер баз даних InterBase і компоненти InterBase Express
- •2. Механізм доступу до даних InterBase Express
- •3. Компонент tibDatabase.
- •Тема 15. Виконання запитів за допомогою компонента tibDataSet
- •1. Вибірка даних з таблиці.
- •2. Редагування даних за допомогою візуальних компонентів.
- •3. Програмне редагування даних.
- •Тема 16. Підпорядковані запити в таблицях Механізм master-detail
- •Література
-
Порівняння значення стовпчика із константою
= < = ! < (не менше)
< > = ! > (не більше)
> <> != (не дорівнює)
Приклад 5. Вибрати всю інформацію про наявні на складі товари, які коштують понад 3 грн.:
SELECT *
FROM Tovary
WHERE Cina > 3
Товари –5) |
||
Назва |
Одиниці |
Ціна |
дріжджі |
кг. |
3.60 |
ковбаса |
кг. |
17.50 |
Можна порівнювати значення стовпчика із значенням іншого стовпчика (тої самої або іншої таблиці).
-
Правила виконання однотабличних запитів на вибірку
Далі буде описана процедура генерації результату SQL – запита на вибірку (потім вона буде доповнюватися). Ці результати отримуються після почергового застосування секцій, які входять в оператор SELECT.
Спочатку виконується секція FROM, потім секція WHERE, потім секція SELECT. Дії:
-
Взяти таблицю, вказану в секції FROM;
-
Якщо є секція WHERE – застосувати умову до кожного рядка (запиши лише ті рядки, для яких умова = TRUE. Якщо умова = FALSE або = NULL – рядок відкидається);
-
Для кожного рядка, що залишився – обчислити значення кожного елемента із списку полів секції SELECT – утворити рядок результуючої таблиці. При цьому: звертання до поля відповідає значенню стовпчика у даному біжучому рядку.
-
Якщо є ключове слово DISTINCT – вилучити всі рядки – дублікати (залишити лише унікальні рядки).
Контрольні питання:
-
Що виконує команда SELECT?
-
Яка структура команди SELECT?
-
Який шаблон задає вибір всіх полів у рядку SELECT?
-
Що таке альтернативне ім’я? Коли його використовують?
-
Вкажіть команди для порівняння значення між двома стовпчиками. Де вони вказуються?
-
Вкажіть правила виконання однотабличних запитів на вибірку.
Тема 6. Комбінування умов з допомогою операторів and, or, not. Порівняння по шаблону. Порівняння з діапазоном. Сортування стрічок з допомогою речення order by.
-
Комбінування умов з допомогою операторів AND, OR, NOT.
-
Порівняння по шаблону.
-
Порівняння з діапазоном.
-
Перевірка належності множині.
-
Сортування стрічок з допомогою речення ORDER BY.
-
Порівняння значень виразів має наступну синтаксичну діаграму:
Операції відношення: =, >, <, <> (аналогічно !=), >= (аналогічно !<), <= (аналогічно !>).
Коли порівнюються два вирази результатом може бути одне з трьох:
-
якщо порівняння істинне, то результат перевірки буде TRUE;
-
якщо порівняння хибне, то результат перевірки буде FALSE;
-
я кщо хоча б один з виразів має значення NULL, то результатом перевірки буде NULL.
Складні логічні вирази будуються за допомогою операцій NOT, AND, OR.
На результат логічного виразу також впливають значення NULL.
NOT |
TRUE |
FALSE |
NULL |
|
FALSE |
TRUE |
NULL |
AND |
TRUE |
FALSE |
NULL |
TRUE |
TRUE |
FALSE |
NULL |
FALSE |
FALSE |
FALSE |
FALSE |
NULL |
NULL |
FALSE |
NULL |
OR |
TRUE |
FALSE |
NULL |
TRUE |
TRUE |
TRUE |
TRUE |
FALSE |
TRUE |
FALSE |
NULL |
NULL |
TRUE |
NULL |
NULL |
Якщо в логічному виразі об’єднується більш ніж одна умова відбору, то за стандартом SQL пріоритети операцій йдуть у такому порядку:
-
NOT;
-
AND;
-
OR.
-
Перевірка на відповідність шаблону – це більш загальний спосіб, який дозволяє замінити STARTING … WITH … і CONTAINING.
Ш аблон – це літерний рядок, в який може входити довільна кількість підстановочних символів.
Підстановочний символ “%” (знак процента) означає довільну кількість будь-яких символів.
Приклад 1. Вивести всю інформацію про товари, назви яких починаються з літери “М” і закінчуються літерою “о”.
SELECT *
FROM Tovary
WHERE Nazva LIKE “М%о”
Підстановочний символ “_” (підкреслене тире) означає рівно один будь-який символ.
Приклад 2. Вивести всю інформацію про товари, назви яких містять п’ять символів, починаються з літери “М” і закінчуються літерою “о”.
SELECT *
FROM Tovary
WHERE Nazva LIKE “М_ _ _о”
Підстановочі символи можна використовувати в будь-якому місці шаблону, причому в шаблоні можна використовувати одразу декілька підстановочних символів.
Приклад 3.
SELECT Company
FROM Clienty
WHERE Company LIKE “Smiths_ n%”
Перевірку LIKE так само, як STARTING … WITH … та CONTAINING, можна застосовувати лише для тих стовпчиків, які мають літерний тип даних.
Якщо стовпчик в біжучому рядку має значення NULL, то результатом перевірок LIKE, STARTING … WITH … та CONTAINING буде значення NULL.
Інколи потрібно записати такий шаблон, який в якості значущого символу містить один із підстановочних символів. В таких випадках використовуються символи пропуску. Коли в шаблоні зустрічається символ пропуску, то символ, який записаний безпосередньо після нього вважається не підстановочним символом, а значущим, тобто відбувається пропуск символу. Безпосередньо після символу пропуску може бути записаний або один із двох підстановочних символів або сам символ пропуску, бо він також отримує в шаблоні особливе значення. Тоді додається секція ESCAPE, після якої у лапках вказується символ пропуску.
Приклад 4. Вивести всю інформацію про товари, коди яких починаються з таких чотирьох літер “А%ВС”, де “А%ВС” – назва, а символ “%” – літера.
SELECT *
FROM Tovary
WHERE Kod LIKE “А$%ВС%”
ESCAPE “$”
Перший символ “%” в шаблоні, який записаний після символу пропуску вважається значущим, а другий символ “%” – підстановочним.
Приклад 5. Вивести всю інформацію про товари, коди яких починаються з таких літер “_ A%$B”, потім йде будь-який символ і літера “C”.
SELECT *
FROM Tovary
WHERE Kod LIKE “$_А$%$$В_С%”
ESCAPE “$”
-
П еревірка належності діапазону значень має таку синтаксичну діаграму:
Приклад 6. Вивести дані про всі відпуски товарів, для яких кількість відпущеного товару лежить в діапазоні від 100 до 300 одиниць.
SELECT *
FROM Vidpusk
WHERE Kilkist BETWEEN 100 AND 300
В перевірці BETWEEN … AND … типи даних виразу, нижньої і верхньої меж повинні бути сумісні. Ця перевірка нічого нового не приносить, так як:
Х BETWEEN А AND В ((X > = A) AND (X < = B))
Правила опрацювання значення NULL перевірки BETWEEN … AND … :
-
якщо вираз, що перевіряється, має значення NULL або якщо обидві межі діапазону мають значення NULL, то результатом перевірки буде значення NULL.
-
якщо нижня межа дорівнює NULL, то результат перевірки дає FALSE тоді, коли вираз, який перевіряється має значення більше ніж значення верхньої межі і дає значення NULL в протилежному випадку.
-
якщо верхня межа має значення NULL, то перевірка BETWEEN … AND … дає FALSE тоді, коли вираз, що перевіряється має значення менше ніж значення нижньої межі і дає NULL в іншому випадку.
-
П еревірка належності множині значень має таку синтаксичну діаграму:
Приклад 7. Вивести дані про всі відпуски товарів, для яких кількість відпущеного товару дорівнює 50, 100 або 300 одиниць.
SELECT *
FROM Vidpusk
WHERE Kilkist ІN (50, 100, 300)
Перевірка належності множині значень краще за порівняння . Слід уникати множин, які складаються лише з одного елементу: X IN A, краще використати умову порівняння значень:
X = A.
Якщо вираз, що перевіряється, має значення NULL, то результатом перевірки буде NULL.
NULL IN (…) → NULL
І нколи буває потрібно явно перевіряти значення стовпчика на рівність значенню NULL, для цього використовується перевірка на рівність значенню NULL, яка має таку синтаксичну діаграму:
Приклад 8. Вивести всі дані про відпуски товарів зі складу, для яких невказаний покупець.
SELECT *
FROM Vidpusk
WHERE Pokupets IS NULL
Обернена формула перевірки IS NOT NULL дозволяє вибирати рядки, які не містять значень NULL у вказаному стовпчику.
Приклад 9. Вивести всі дані про відпуски товарів зі складу, для яких вказаний покупець.
SELECT *
FROM Vidpusk
WHERE Pokupets IS NOT NULL
На відміну від інших перевірок, перевірка на NULL не може повертати NULL в якості результату. Перевірка на NULL завжди повертає TRUE або FALSE. Може здатися дивним, що не можна перевіряти якесь значення на NULL за допомогою порівняння.
Приклад 9*. Хибний розв’язок попередньої задачі.
SELECT *
FROM Vidpusk
WHERE Pokupets = NULL
Ключове слово NULL в такій перевірці не можна використовувати, тому що насправді це не будь-яке конкретне значення, а просто сигнал, що значення відсутнє. Навіть якщо б порівняння Pokupets = NULL було можливим, то правила опрацювання значень NULL в порівняннях привели би до того, що результат був би зовсім не такий як очікується. Коли СУБД виявить рядок в якому поле Pokupets містить значення NULL. Що буде в результаті такої перевірки TRUE чи FALSE? Оскільки значення по обидві сторони від знаку дорівнює невідомі, то згідно правил виконання порівнянь повинно вийти NULL. Оскільки умова відбору набуває значення, яке не співпадає із значенням TRUE, то даний рядок відкується і він не ввійде в результуючу таблицю. Результуюча таблиця для цього запиту буде порожньою, тобто не міститиме жодного рядка.
-
Секція ORDER BY – це необов’язкова секція і вона повинна записуватись останньою в операторі SELECT.
Стовпчик – це ім’я стовпчика або його порядковий номер в секції SELECT.
Якщо є секція ORDER BY, то результуюча таблиця сортується згідно значення стовпчиків вказаних в секції ORDER BY.
Результат можна сортувати по зростанню чи по спаданню. Для цього в секції ORDER BY після імені стовпчика чи його порядкового номеру вказується зарезервоване слово ASC або DESC. ASC – розміщує результат у порядку зростання (з початку до кінця) по вказаному стовпчику чи його номеру, встановлюється за замовчуванням, а DESC – розміщує результат у порядку спадання (з кінця до початку) по вказаному стовпчику чи його номеру
Приклад 10. Вивести всю інформацію про відпуск товару зі складу та його ціну і результат вивести в порядку спадання прізвищ покупців.
SELECT V.*, T.Cina
FROM Vidpusk V, Tovary T
WHERE V.Tovar = T.Nazva
ORDER BY Pokupec DESC;
Контрольні питання:
-
Вкажіть операції відношення.
-
Які логічні оператори Ви знаєте?
-
Який пріоритет виконання логічних операторів?
-
Яка команда здійснює порівняння по шаблону? Вкажіть основні шаблони для порівняння.
-
Яка команда здійснює порівняння з діапазоном?
-
Яка команда здійснює перевірку належності множині?
-
Яка команда здійснює сортування записів?
-
Вкажіть команду сортування в порядку зростання та спадання.