Основи мови SQL у Kylix
У цьому розділі ми розглянемо команди мови структурованих запитів (Structured Query Language). Ви дізнаєтесь, що таке запит та як з ним працювати.
Основні відомості про мову SQLМова SQL існує у кількох стандартах. Найбільш підтримуваними та поширеними є стандарти SQL-89 і SQL-92. Останній стандарт називають стандартом ANSI. Із-за наявності безлічі стандртів мови існує безліч його діалектів. Ми розглянемо лише основні команди SQL для простих операцій із таблицями баз даних. У мові SQL немає багатьох типів команд, властивих більшості мов програмування. Так, у ньому немає операторів циклу, переходу і т. д. SQL-запит - це команда мовою SQL. Мова SQL за своєю суттю орієнтована на доступ до даних, і її зазвичай включають до складу різних засобів розробки. Середовище Kylix не залишилося осторонь. Більше того, всі її компоненти для роботи з базами даних підтримують мову SQL. Всі SQL-запити можна умовно розділити на два види:
статичний SQL-запит - включається до коду програми під час його розробки та не змінюється під час виконання програми. Єдиним способом змінити щось у запиті такого типу є включення до SQL-запиту параметрів та їх подальша зміна в ході роботи програми;
динамічний SQL-запит - створюється та змінюється в ході виконання програми. Ці запити є найбільш гнучкими та можуть відповідати конкретним діям користувача. Всі оператори та команди мови SQL можна розділити на три групи. Розглянемо ці групи, а також оператори, що входять до кожної групи. Оператори визначення даних - призначені для створення, видалення та зміни структури даних. Основні їх перераховані в табл. 17.1.
Таблиця17.1. Основні оператори визначення даних
| Оператор | Опис |
| CREATE TABLE | Призначений для створення таблиці бази даних |
| ALTER TABLE | Видаляє таблицю |
| DROP TABLE | Змінює структуру таблиці |
| CREATE INDEX | Створює індекс |
| DROP INDEX | Видаляє індекс |
| CREATE VIEW | Створює уявлення |
| DROP VIEW | Видаляє виставу |
Оператори керування даними - призначені для керування привілеями доступу до даних. Основні оператори представлені у табл. 17.2.
Таблиця 17.2. Основні оператори управління даними
| Оператор | Опис |
| GRAND | Призначає привілеї користувачам |
| REVOKE | Видаляє привілеї користувачів |
Оператори маніпулювання даними - призначені до роботи із записами таблиць. Основні оператори коротко описані у табл. 17.3.
Таблиця 17.3. Основні оператори маніпулювання даними
| Оператор | Опис |
| SELECT | Призначений для вибірки записів за певним форматом |
| UPDATE | Призначений для зміни та оновлення записів |
| INSERT | Вставляє нові записи до таблиці |
| DELETE | Видаляє записи з таблиці |
Використання наведених у табл. 17.1-17.3 операторів ми розглянемо далі у цьому розділі.
ПриміткаЗверніть увагу на той факт, що перевірка синтаксису запиту відбувається тільки учас роботи програми. Компілятор Kylix не обробляє запити SQL під час розробки програми.
Результатом виконання запиту є набір даних, який називається результуючим набором даних. Залишилося відзначити, що регістр літер команд SQL-запитів впливає їх виконання. Ми для наочності будемо використовувати великі літери для Операторів мови SQL. Точка з комою також не є обов'язковою в кінці кожної SQL-команди. Елементи списків, такі як імена таблиць і полів, обов'язково поділяються комами. Імена таблиць і полів полягають у одинарні або подвійні лапки, наприклад 'Number', "Table 1". Якщо ім'я не містить прогалин та інших спеціальних символів, його можна не укладати в лапки.
Функції мови SQLУ мові SQL, крім операторів, є кілька функцій, основні з яких будуть розглянуті далі. Статистичні функції - функції, призначені для статистичної обробки даних. Статистичні функції, що найчастіше використовуються Перераховані в табл. 17.4.
Таблиця 17.4. Основні статистичні функції
Строкові функції - функції, призначені до роботи з рядковими чачениями. Найчастіше використовувані їх представлені у табл. 17.5.
Таблиця 17.5. Основні рядкові функції
Перетворює символи рядка S на символи нижнього регістру
Оператори визначення данихДавайте розглянемо детальніше оператори визначення даних. Оператор CREATE TABLE служить для створення нової таблиці бази даних і має такий формат:
У цьому операторі обов'язковим є вказівка хоча б одного імені поля та його типу даних. Наведемо приклад створення простої таблиці:
CREATE TABLE MyTable (Number INTEGER, Name CHAR(20), Surname CHAR(20));
При цьому в каталозі поточної бази даних буде створено нову таблицю муТаblе, що складається з полів Number, Name і Surname. Перше поле має цілий тип (INTEGER), інші поля - символьного типу і обмежені довжиною в 20 символів. Якщо під час виконання цього запиту з'ясується, що таблиця з таким ім'ям вже існує, буде згенеровано виняткову ситуацію. Оператор DROP TABLE служить видалення наявної таблиці. Якщо таблиці з таким ім'ям не існує, буде згенеровано виняткову ситуацію: DROP TABLE МуТаЫе;
Під час виконання цієї операції будуть видалені всі файли, що стосуються таблиці МуТаЫе. Оператор ALTER TABLE призначений додавання чи видалення полів діючої таблиці бази даних. Під час дії цього оператора жодні інші програми не повинні звертатися до таблиці. Цей оператор має такий формат:
ALTER TABLE ADD, DROP, … ADD, DROP;
Операнд ADD додає до таблиці нове поле, а оператор DROP видаляє з таблиці існуюче поле. Операнди можуть розташовуватися всередині оператора ALTER TABLE довільно:
ALTER TABLE МуТаblе ADD Телефон INTEGER, ADD Address CHAR (50), DROP Number;
При виконанні даного прикладу таблицю МуТаblе додадуться два поля: felefon і Address, цілого чи символьного типу відповідно. Крім того, буде видалено поле Number.
Оператори маніпулювання данимиГоловним оператором маніпулювання даними є оператор SELECT. Цей оператор використовується для відбору даних, що відповідають складним умовам. Оператор SELECT має вигляд:
SELECT [DISTINCT] або * FROM [WHERE ] [ORDER BY ] [GROUP BY ] [UNION ]
Результатом виконання цього оператора буде набір записів, які відповідають заданим умовам. Параметр DISTINCT визначає, чи включатимуться в результуючий набір даних записи, що повторюються. Якщо він присутній в операторі SELECT, то записи, що повторюються, будуть виключені з набору даних. Якщо до списку полів входять поля кількох таблиць, для вказівки належності поля до тієї чи іншої таблиці використовують складовий оператор, що включає ім'я таблиці та, через точку, ім'я поля:
Операнд WHERE визначає критерії, яким повинні задовольняти записи в результуючому наборі даних. Операнд GROUP BY дозволяє групувати записи. Іноді буває необхідно виконати будь-які операції над групою записів. Операнд HAVING використовується разом із GROUP BY і дозволяє вибирати записи всередині груп. Операнд ORDER BY містить список полів, що визначають порядок сортування записів результуючого набору даних. заУмовчання сортування виконується в порядку зростання значень. Для сортування в порядку зменшення значень необхідно після імені поля поставити параметр DESC. Операнд UNION використовується для організації вкладених операторів SELECT. Вкладені оператори SELECT називають іноді підзапит. Наведемо приклади вибору записів із використанням оператора SELECT.
Приклад 17.1. Вибір всіх полів таблиціSELECT * FROM MyTable
В результаті виконання цього запиту будуть вибрані всі поля та записи з таблиці Мута. Піктограма * означає, що вибрано всі поля таблиці. Замість нього можна просто перерахувати через кому всі поля таблиці.
Приклад 17.2. Вибір даних із трьох полів таблиціSELECY Number, Surname, Telefon FROM MyTable
В результаті виконання прикладу 17.2 будуть обрані всі записи з полів Number, Surname та Telefon таблиці MyTable .
Приклад 17.3. Вибір унікальних значеньSELECT DISTINCT Surname FROM MyTable
В результаті ми отримаємо набір даних, який містить усі прізвища (Surname), що входять до таблиці муТаblе. У цей набір даних не буде двічі включено одне і те ж прізвище, тобто будуть виключені всі однофамільці.
Приклад 17.4. Вибір даних із двох таблицьSELECT * FROM МуТаЫе!, МуТаЫе2
Вибирає всі дані з таблиць МуТаblе1 та МуТаЫе2. Першими будуть розташовуватись поля таблиці MyTable1, а потім - поля другої таблиці.
Приклад 17.5. Вибір записів за значеннями числового поляSELECT Name, Surname FROM MyTable WHERE (Number>l) and (Number SET = , … SET = [WHERE];
У всіх записах, які відповідають умові відбору, будуть змінюватися значення полів.
Приклад 17.11. Зміназначень поляUPDATE MyTable SET Oklad = Oklad + 1000; WHERE Cklad ( ) VALUES ( );
Таким чином, до таблиці буде додано один запис.
DELETE FROM [WHERE];
З таблиці буде видалено всі записи, які відповідають умові вибору.
Приклад 17.13. Видалення записів із таблиціDELETE FROM MyTable WHERE Surname = 'Іванів';
Видаляє з таблиці MyTable усі записи, що містять прізвище Іванов. На цьому ми закінчуємо огляд основних операторів та функцій мови SQL. Додаткову інформацію ви можете отримати зі спеціальної літератури, присвяченої даній мові.