- •Тема 5. Мова реляційних запитів sql.
- •Роль та історія розвитку sql.
- •Простий приклад
- •Історія
- •Стандарти
- •3. Декларативність
- •Питання сумісності
- •Переваги стандартів sql
- •1. Незалежність від конкретної субд
- •2. Наявність стандартів
- •Недоліки стандартів sql
- •1. Невідповідність реляційної моделі даних
- •Коротко про стандарт sql:2003
- •Cтворення таблиці
- •Видалення таблиці
- •Вираз select
- •Частина from
- •Частина where
- •Відповідність шаблону
- •Значення null
- •Частина order by
- •Приклад нотації для визначення оператора select в Oracle
- •Декартів добуток
- •Тета-з’єднання
- •Натуральне з’єднання
Cтворення таблиці
<таблиця> ::=
CREATE TABLE ім’я_таблиці
(ім’я_стовпця тип_даних
[NULL | NOT NULL ] [,...n])
Видалення таблиці
DROP TABLE ім’я_таблиці [RESTRICT | CASCADE]
Індекси в стандарті мови
Створення індексів не передбачено стандартом SQL, однак більшість діалектів підтримують як мінімум наступний оператор:
CREATE [ UNIQUE ] INDEX ім’я_індексу
ON ім’я_таблиці(ім’я_стовпця [ASC|DESC][,...n])
Зазначені в операторі стовпці складають ключ індексу. Індекси можуть створюватися тільки для базових таблиць, але не для представлень (уявлень, подань). Якщо в операторі вказано ключове слово UNIQUE, унікальність значень ключа індексу буде автоматично підтримуватися системою. Вимога унікальності значень обов'язково для первинних ключів, а також можливо і для інших стовпців таблиці (наприклад, для альтернативних ключів). Хоча створення індексу допускається в будь-який момент, при його побудові для вже заповненої даними таблиці можуть виникнути проблеми, пов'язані з дублюванням даних в різних рядках. Отже, унікальні індекси (щонайменш, для первинного ключа) має сенс створювати безпосередньо при формуванні таблиці. В результаті система відразу візьме на себе контроль за унікальністю значень даних у відповідних стовпцях.
Якщо створений індекс згодом виявиться непотрібним, його можна видалити за допомогою оператора
DROP INDEX ім’я_індекса
Вираз select
Оператор SELECT – один з найбільш важливих і найбільш поширених операторів SQL. Він дозволяє робити вибірки даних з таблиць і перетворювати до потрібного вигляду отримані результати. Будучи дуже потужним, він здатний виконувати дії, еквівалентні операторам реляційної алгебри, причому в межах єдиної виконуваної команди. За його допомогою можна реалізувати складні і громіздкі умови відбору даних з різних таблиць.
Оператор SELECT – засіб, який повністю абстраговано від питань представлення даних, що допомагає сконцентрувати увагу на проблемах доступу до даних. Приклади його використання наочно демонструють один з основоположних принципів великих (промислових) СУБД: засоби зберігання даних і доступу до них відділені від засобів подання даних. Операції над даними виробляються в масштабі наборів даних, а не окремих записів. Оператор SELECT має наступний формат:
SELECT [ALL | DISTINCT ] {*|[ім’я_стовпця
[AS нове_ім’я]]} [,...n]
FROM ім’я_таблиці [[AS] псевдонім] [,...n]
[WHERE <умова_пошуку>]
[GROUP BY ім’я_стовпця [,...n]]
[HAVING <критерії вибору груп>]
[ORDER BY ім’я_стовпця [,...n]]
Оператор SELECT визначає поля (стовпчики), які будуть входити в результат виконання запиту. У списку вони розділяються комами і наводяться в такій черговості, у якій повинні бути представлені в результаті запиту. Якщо використовується ім'я поля, що містить пробіли або роздільники, його слід укласти в квадратні дужки. Символом * можна вибрати всі поля, а замість імені поля застосувати вираз із декількох імен.
Якщо обробляється ряд таблиць, то (при наявності однойменних полів у різних таблицях) у списку полів використовується повна специфікація поля, тобто ім’я_таблиці.ім’я_поля.
