- •Модуль 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
- •Література
1.3.2. Імена
Кожний об’єкт в базі даних повинен мати ім’я. Повне ім’я кожного об’єкту повинно бути унікальним. Імена вказують, над якими об’єктами SQL-команда виконує свою дію. Основні об’єкти, які повинні мати імена згідно стандарту SQL1 – це таблиці, стовпчики, користувачі. Стандарт SQL2 до цього переліку ще додає схеми (колекції, набори таблиць), обмеження (умови, які накладаються на вміст таблиць та їх відношення) і домени (допустимі набори значень, які можуть бути занесені у стовпчик). За стандартом SQL1 імена повинні складати від 1 до 18 символів, починатися з літери і не містити пробілів, чи знаків пунктуації. Стандарт SQL2 дозволяє утворювати імена довжиною 128 символів.
Я кщо в команді вказане ім’я таблиці, то СУБД вважає, що відбувається звертання до однієї із Ваших власних таблиць, тобто до однієї з тих таблиць БД, яку створили Ви самі. Якщо Ви маєте відповідні привілеї, тобто відповідний дозвіл, то можна звертатися до таблиць, власниками яких є інші користувачі. Для цього використовується повне ім’я таблиці:
С тандарт SQL2 узагальнює поняття повного імені таблиці:
Д еякі СУБД організовані таким чином, що дозволяють створювати та опрацьовувати кілька баз даних (Inter Base, MS SQL SERVER). Вони дають можливість звертатися до таблиці із іншої бази даних.
Приклад 1. Звертання до таблиці із іншої БД за допомогою драйверів BDE.
DELETE FROM Pracivnyky
WHERE Kod IN
(SELECT Kod
FROM :ARCHIVE: Pracivnyky)
Цей запит вилучає із таблиці Pracivnyky біжучої бази даних інформацію про тих працівників, яка міститься в однойменній таблиці із бази даних, зв’язаної з BDE-аліасом ARCHIVE.
M S SQL Server реалізує звертання до бази даних так (діалект SQL Server: Transact-SQL):
Ця команда вибирає всю інформацію із таблиці Pracivnyky вказаної бази даних.
Якщо в команді вказане ім’я стовпчика, то СУБД сама визначає, якій саме таблиці із тих, що вказані у цій команді, належить даний стовпчик. Якщо в команді вказуються два однойменних стовпчика із різних таблиць, то необхідно вказувати повне ім’я стовпчика:
Я кщо стовпчик міститься в таблиці, власником якої є інший користувач, то повне ім’я має таку будову:
1.3.3. Типи даних
Стандарт SQL1 описує мінімальний набір типів даних. Ці типи підтримуються усіма комерційними СУБД. Стандарт SQL2 додав до переліку типів даних літерні рядки змінної довжини, значення дати і часу тощо.
Типи даних в SQL
Тип даних |
Опис |
CHAR (довжина) |
Літерні рядки постійної довжини SQL1 |
CHARACTER (довжина) |
|
VARCHAR (довжина) |
Літерні рядки змінної довжини SQL1 |
CHAR VARYING (довжина) |
|
CHARACTER VARYING (довжина) |
|
NCHAR (довжина) |
Локалізовані літерні рядки постійної довжини SQL2 |
NATIONAL CHAR (довжина) |
|
NATIONAL CHARACTER (довжина) |
|
NCHAR VARYING (довжина) |
Локалізовані літерні рядки змінної довжини SQL3 |
NATIONAL CHAR VARYING (довжина) |
|
NATIONAL CHARACTER VARYING (довжина) |
|
INTEGER |
Цілі числа SQL |
INT |
|
SMALLINT |
Малі цілі числа SQL1 |
BIT (довжина) |
Рядки бітів постійної довжини SQL2 |
BIT VARYING (довжина) |
Рядки бітів змінної довжини SQL2 |
NUMERIC (точність, степінь) |
Числа з плаваючою крапкою SQL1 |
DECIMAL (точність, степінь) |
|
DEC (точність, степінь) |
|
FLOAT (точність) |
|
REAL |
Числа з плаваючою крапкою низької точності SQL1 |
DOUBLE PRECISION |
Числа з плаваючою крапкою високої точності SQL1 |
DATE |
Дата SQL2 |
TIME (точність) |
Час SQL2 |
TIMESTAMP (точність) |
Дата-час SQL2 |
INTERVAL |
Інтервал SQL2 |
Різні СУБД по-різному опрацьовують типи даних. Розглянемо це на прикладі опрацювання дати і часу.
Приклад.
Для DB2
DATA << June 30, 1990 >>
TIME << 12:30 PM >>
TIMESTAMP – конкретний момент часу з точністю до наносекунди.
В цій СУБД значення дати і часу можна представити за допомогою літерних рядків. Підтримуються арифметичні дії над датами:
SELECT Prizv, DatePryjomu
FROM Pracivnyky
WHERE DatePryjomu > = ‘05/30/1990’+15 DAYS
Тут поле DatePryjomu типу DATE.
Для SQL Server
Є єдиний тип для представлення дати-часу DATATIME:
SELECT Prizv, DatePryjomu
FROM Pracivnyky
WHERE DatePryjomu > = ‘06/14/1990’
Оскільки не вказано часу, то за замовчуванням він вважається рівним опівночі. Якщо вказано точний час, то секція WHERE набуде вигляду:
WHERE DatePryjomu > = ‘06/14/1990 12:00 AM’
В SQL Server також підтримуються арифметичні дії над датами:
WHERE DatePryjomu > = DATEADD (DAY, 15, ‘05/30/1990’)
Для Oracle
Тип DATE TIMESTAMP (з SQL). Як і для SQL Server, якщо час явно не вказаний, то він вважається рівним опівночі:
WHERE DatePryjomu > = ‘14-JUN-90’
В Oracle також підтримуються арифметичні дії над датами:
WHERE DatePryjomu > = ‘30-MAY-90’ + 15