- •Модуль 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
- •Література
Функції sql:
-
організація даних – SQL дає користувачу можливість визначити структуру представлення даних, а також встановлювати відношення між елементами бази даних;
-
вибірка даних – SQL дає можливість користувачу чи прикладній програмі отримати із бази даних інформацію, яка в ній міститься;
-
опрацювання даних – SQL дає можливість користувачу чи прикладній програмі змінювати базу даних, тобто додавати нові дані, оновлювати чи вилучати існуючі;
-
управління доступом – за допомогою SQL можна обмежувати можливості користувача щодо вибірки і зміни даних та захистити дані від несанкціонованого доступу;
-
спільне використання даних – SQL координує спільне використання даних користувачами, які працюють паралельно так, щоб вони не заважали один одному;
-
цілісність даних – SQL дозволяє забезпечити цілісність бази даних, захищаючи її від руйнації через неузгоджені зміни чи відмови системи.
Роль sql
Сам по собі SQL це не СУБД і не який-небудь окремий програмний продукт. SQL – це інструмент, за допомогою якого здійснюється зв’язок користувача з базою даних. SQL працює лише з реляційними базами даних.
Ядро бази даних – це серцевина СУБД. Воно відповідає за фізичне структурування даних, а також запис їх на диск та зчитування з диску. Ядро сприймає SQL-запити від інших компонентів СУБД. SQL використовує самі різні функції, зокрема: 1) SQL-мова інтерактивних запитів; 2) SQL-мова програмування бази даних; 3) SQL-мова адміністрування бази даних. Адміністратор бази даних використовує SQL для визначення структури бази даних та управління доступом до даних; 4) SQL – це мова створення клієнт-серверних програм; 5) SQL – це мова доступу до даних в Internet; 6) SQL – це мова розосереджених баз даних, тобто SQL дозволяє розподілити дані між різними обчислювальними системами і зв’язати відповідне програмне забезпечення; 7) SQL – мова шлюзів баз даних.
Переваги sql:
-
незалежність від конкретних СУБД;
-
міжплатформна переносимість;
-
наявність стандартів;
-
підтримка компаніями IBM та Microsoft;
-
реляційна основа;
-
високорівнева структура;
-
можливість виконання інтерактивних запитів;
-
забезпечення програмного доступу до бази даних;
-
можливість різноманітного представлення даних;
-
повноцінність, як мови опрацьовування баз даних;
-
можливість динамічного визначення даних;
-
підтримка архітектури клієнт-сервер;
-
підтримка корпоративних прикладних програм;
-
розширюваність та підтримка об’єктно-орієнтованого програмування;
-
можливість доступу до даних в Internet;
-
інтеграція з мовою Java (протокол JDBC);
-
промислова інфраструктура.
-
Синтаксис sql.
Коментар. Всякий коментар – це необов'язковий текст, який друкується в окремому рядку програми, щоб пояснити цю програму. Коментар повинен починатися з двох дефісів. Коли СУБД знаходить їх, вона ігнорує те, що стоїть за ними, тобто сам коментар. Коментарі займають цілий рядок.
Команда SQL. Будь-яка команда SQL – це допустима комбінація лексем, якій передує яке-небудь ключове слово. Тут під лексемою розуміється основна неподільна частинка мови SQL в тому значенні, що граматично ніякої лексеми не можна розділити на більш дрібні складові елементи. Лексемами є ключові слова, ідентифікатори, оператори, літерали і інші символи.
Речення. Будь-яка команда SQL включає не менш одну пропозицію. В найзагальнішому випадку всяка пропозиція SQL – це фрагмент команди SQL, який починається з якого-небудь ключового слова, є обов’язковим або необов’язковим і повинен бути записаний в певному порядку. В даному прикладі ми маємо чотири пропозиції, а саме: SELECT, FROM, WHERE, ОRDER.
Ключові слова.
Довільне ключове слово, іноді зване
зарезервованим, –
це таке слово, яке в мові SQL має певне
значення і застосування якого в SQL строго
регламентовано. Слід мати на увазі, що
використовування будь-якого ключового
слова зовні контексту (наприклад, як
ідентифікатора) буде вважатися помилкою.
В
Ідентифікатори. Довільний ідентифікатор – це таке слово, яке розробник бази даних застосовує для того, щоб іменувати об’єкти довільної бази даних, у тому числі таблиці, стовпці, псевдо імена (псевдоніми) і представлення. Ідентифікатор не може бути ключовим словом, і його довжина не може перевищувати 128 знаків. Знаком в SQL може бути будь-який символ алфавіту, включаючи символи латинського алфавіту і латинські ідеограми. В нашому прикладі іменами, зокрема, є au_fname, au_lname, authors і state.
Завершальна крапка з комою. Запис кожної команди SQL повинен закінчуватися крапкою з комою.
Приклад команди SQL:
--Retrieve authors from New York
SELECT au_fname, au_lname
FROM authors
WHERE state = 'Lviv'
ORDER BY au_lname;
Таблиця 1.1. Ключові слова SQL
ABSOLUTE |
COMMIT |
ELSE |
INSERT |
Null |
||||
ACTION |
CONNECT |
END |
INT |
ONLY |
||||
ADD |
CONNECTION |
END-EXEC |
INTEGER |
OPEN |
||||
ALL |
CONSTRAINT |
ESCAPE |
INTERSECT |
OPTION |
||||
ALLOCATE |
CONSTRAINTS |
EXCEPT |
INTERVAL |
OR |
||||
ALTER |
CONTINUE |
EXCEPTION |
INTO |
ORDER |
||||
AND |
CONVERT |
EXEC |
IS |
OUTER |
||||
ANY |
CORRESPONDING |
EXECUTE |
ISOLATION |
OUTPUT |
||||
ARE |
COUNT |
EXISTS |
JOIN |
OVERLAPS |
||||
AS |
CREATE |
EXTERNAL |
KEY |
PAD |
||||
ASC |
CROSS |
EXTRACT |
LANGUAGE |
PARTIAL |
||||
ASSERTION |
CURRENT |
FALSE |
LAST |
POSITION |
||||
AT |
CURRENT DATE |
FETCH |
LEADING |
PRECISION |
||||
AUTHORIZATION |
CURRENT TIME |
FIRST |
LEFT |
PREPARE |
||||
AVG |
CURRENTJTIMESTAMP |
FLOAT |
LEVEL |
PRESERVE |
||||
BEGIN |
CURRENTJJSER |
FOR |
LIKE |
PRIMARY |
||||
BETWEEN |
CURSOR |
FOREIGN |
LOCAL |
PRIOR |
||||
BIT |
DATE |
FOUND |
LOWER |
PRIVILEGES |
||||
BIT LENGTH |
DAY |
FROM |
MATCH |
PROCEDURE |
||||
BOTH |
DEALLOCATE |
FULL |
MAX |
PUBLIC |
||||
|
DEC |
GET |
MIN |
READ |
||||
CASCADE |
DECIMAL |
GLOBAL |
MINUTE |
REAL |
||||
CASCADED |
DECLARE |
GO |
MODULE |
REFERENCES |
||||
CASE |
DEFAULT |
GOTO |
MONTH |
RELATIVE |
||||
CAST |
DEFERRABLE |
GRANT |
NAMES |
RESTRICT |
||||
CATALOG |
DEFERRED |
GROUP |
NATIONAL |
REVOKE |
||||
CHAR |
DELETE |
HAVING |
NATURAL |
RIGHT |
||||
CHARACTER |
DESC |
HOUR |
NCHAR |
ROLLBACK |
||||
CHARJ.ENGTH |
DESCRIBE |
IDENTITY |
NEXT |
ROWS |
||||
CHARACTER LENGTH |
DESCRIPTOR |
IMMEDIATE |
NO |
SCHEMA |
||||
CHECK |
DIAGNOSTICS |
IN |
NOT |
SCROLL |
||||
CLOSE |
DISCONNECT |
INDICATOR |
NULL |
SECOND |
||||
COALESCE |
DISTINCT |
INITIALLY |
NULLIF |
SECTION |
||||
COLLATE |
DOMAIN |
INNER |
NUMERIC |
SELECT |
||||
COLLATION |
DOUBLE |
INPUT |
OCTET LENGTH |
SESSION |
||||
COLUMN |
DROP |
INSENSITIVE |
|
SESSIONJJSER |
||||
SET |
SUM |
TRAILING |
UPPER |
WHENEVER |
||||
SIZE |
SYSTEM USER |
TRANSACTION |
USAGE |
WHERE |
||||
SMALLINT |
TABLE |
TRANSLATE |
USER |
WITH |
||||
SOME |
TEMPORARY |
TRANSLATION |
USING |
WORK |
||||
SPACE |
THEN |
TRIM |
VALUE |
WRITE |
||||
SQL |
TIME |
TRUE |
VALUES |
YEAR |
||||
SQLCODE |
TIMESTAMP |
UNION |
VARCHAR |
ZONE |
||||
SQLERROR |
TIMEZONEJHOUR |
UNIQUE |
VARYING |
|
||||
SQLSTATE |
TIMEZONE MINUTE |
UNKNOWN |
VIEW |
|
||||
SUBSTRING |
TO |
UPDATE |
WHEN |
|
||||
Таблиця 1.2. Потенційні ключові слова SQL |
||||||||
AFTER |
EQUALS |
OLD |
RETURN |
TEST |
||||
ALIAS |
GENERAL |
OPERATION |
RETURNS |
THERE |
||||
ASYNC |
IF |
OPERATORS |
ROLE |
TRIGGER |
||||
BEFORE |
IGNORE |
OTHERS |
ROUTINE |
TYPE |
||||
BOOLEAN |
LEAVE |
PARAMETERS |
ROW |
UNDER |
||||
BREADTH |
LESS |
PENDANT |
SAVEPOINT |
VARIABLE |
||||
COMPLETION |
LIMIT |
PREORDER |
SEARCH |
VIRTUAL |
||||
CALL |
LOOP |
PRIVATE |
SENSITIVE |
VISIBLE |
||||
CYCLE |
MODIFY |
PROTECTED |
SEQUENCE |
WAIT |
||||
DATA |
NEW |
RECURSIVE |
SIGNAL |
WHILE |
||||
DEPTH |
NONE |
REF |
SIMILAR |
WITHOUT |
||||
DICTIONARY |
OBJECT |
REFERENCING |
SQLEXCEPTION |
|
||||
EACH |
OFF |
REPLACE |
SQLWARNING |
|
||||
ELSEIF |
OID |
RESIGNAL |
STRUCTURE |
|
SQL - це мова з вільним форматом речень. Будь-яка його команда може:
• бути надрукована як у верхньому, так і в нижньому регістрі (наприклад, ключові слова SELECT і select вважаються ідентичними);
• продовжуватися на наступному рядку скільки завгодно довго за умови, що ви не будете розбивати на дві частини слова, лексеми і рядки в лапках (тобто рядкові константи);
• бути надрукована на одному рядку з будь-якими іншими командами;
• починатися на будь-якій позиції горизонтальної розмітки екрану/листа.
Проте вам слід дотримуватися певного стилю написання команд SQL, наприклад використовувати верхній регістр для ключових слів і нижній регістр для ідентифікаторів. Крім того, можна починати кожне речення з нового рядка з відповідним відступом. Питання стилю не можна ігнорувати, тому що його відсутність приводить до наступних помилок:
-
неправильна орфографія при написанні якого-небудь ідентифікатора або команди;
-
відсутність завершальної крапки з комою;
-
невірний порядок розміщення речень в тілі команди;
-
відсутність лапок у стрічкових констант (літералів) і констант дати і часу;
-
наявність лапок у цифровых констант;
-
невірне сумісне застосування імен таблиць і імен;
В літературі по SQL ввідне ключове слово будь-якої команди часто називають дієсловом, тому що воно явно вказує на ту дію, яку необхідно вчинити.
Оскільки вживати ключові слова як ідентифікатори заборонено, ви цілком можете вбудовувати будь-які ключові слова всередину ідентифікаторів як складову частину слова. Наприклад: group і max не можна використовувати як ідентифікатор, а ідентифікатор groups і max_price цілком допустимі.
select au fname,
AU_LNAME
FROM
authors WhErE state = 'NY' order
bY AU_lname;
Команда, приведена в прикладі еквівалентна попередній команді.
Застосовувати пропуски в іменах бази даних не рекомендується. Але якщо дуже хочеться, можна вставити пропуски в будь-який ідентифікатор, тоді його треба буде укласти в одинарні лапки, от так:' last name'. Проте підкреслимо ще раз: краще застосовувати не пропуски, а знак підкреслення (last name) або ідентифікатор, набраний заголовними і прописними буквами (LastName).
Вираз - це будь-яка дозволена комбінація символів, яка служить для обчислення єдиного агрегованого значення даних. Складаючи будь-який вираз, ви можете комбінувати математичні або логічні оператори, ідентифікатори, константи, функції, імена стовпців і т.д.
Комерційні СУБД накладають власні, обмеження на довжину ідентифікатора і на алфавіт. Тому має сенс проаналізувати документацію по вашій СУБД, використовуючи ключі пошуку „ідентифікатори” і „імена”.
Більше того, різні СУБД мають свої власні додаткові ключові слова, які, очевидно, не можуть бути ідентифікаторами в „рідній” СУБД (але цілком можуть бути ідентифікаторами по канонах SQL і, можливо, в інших СУБД). От чому непогано було б організувати пошук в документації по вашій СУБД з використанням ключів пошуку „ключові слова” і „зарезервовані слова”.