Створення та використання зображень засобами SQL

Зображення (VIEW) є віртуальною таблицею, вміст якої визначається SQL запитом. Для користувача бази даних зображення виглядає як реальна таблиця, що складається з рядків і стовпців. Однак, на відміну від таблиці, зображення як сукупність значень в базі даних реально не існує. Рядки та стовпці даних, які користувач бачить з допомогою зображення, є результатами запиту, що лежить в його основі. SQL створює ілюзію зображення, привласнюючи йому ім'я, як таблиці, і зберігає його визначення в базі даних.

Коли СУБД зустрічає в інструкції SQL запиту, звернення до зображення, вона відшукує його визначення, збережене в базі даних. Потім СУБД перетворює запит, який посилається на зображення, в еквівалентний йому запит, який в свою чергу звертається до вихідних таблиць зображення і виконує його. Таким чином, СУБД створює ілюзію існування зображення у вигляді окремої таблиці і в той же час зберігає цілісність вихідних таблиць.

Якщо визначення зображення просте, то СУБД формує кожен рядок результуючої віртуальної таблиці при кожному зверненні до зображення, витягуючи дані з вихідних таблиць. Якщо ж визначення складне, СУБД виконує запит, що визначає зображення, і зберігає його результати в тимчасовій таблиці. З неї СУБД бере дані для формування результатів, при зверненні до даного зображення. Коли тимчасова таблиця стає непотрібною, СУБД видаляє її. Але незалежно від того, як саме СУБД виконує інрукцію, що є визначенням зображення, для користувача результат буде одним і тим же. SQL запит на вибірку даних із зображення здійснюється так само, як і на вибірку даних з реальної таблиці.

Читати повністю

Використання індексів в таблицях бази даних

Що являє собою індекс? Індекс — це впорядкований вказівник на записи в таблиці.

Вказівник означає, що індекс містить значення одного або декількох полів в таблиці і адреси розміщення цих даних. Іншими словами, індекс складається з пар значень «значення поля» — «фізичне розміщення цього поля». Таким чином, за значенням поля чи полів, які входять до індексу, за допомогою індексу можна швидко знайти те місце в таблиці, де розміщується запис, що містить це значення. Впорядкований — означає, що значення полів, які зберігаються в індексі, впорядковані.

Єдине, чому сприяють індекси — це прискорення пошуку запису за його індексованим полем (індексоване — те що входить до індексу). Пошук за допомогою індексу здійснюється в багато разів швидше, ніж при послідовному переборі всіх значень з таблиці.

Індекс не є частиною таблиці — це окремий об’єкт, пов’язаний з таблицею і іншими об’єктами бази даних. Це дуже важливий момент реалізації СУБД, що дозволяє відділити збереження інформації від її подання.

Читати повністю

Введення обмежень в базах даних

В базі даних існують такі види обмежень:

  1. Первинний ключ — PRIMARY KEY.
  2. Унікальний ключ — UNIQUE KEY.
  3. Зовнішній ключ — FOREIGN KEY — може включати автоматичні тригери ON UPDATE і ON DELETE; перевірки — CHECK.

Обмеження бази даних бувають двох типів — на основі одного поля і на основі декількох полів таблиці. Давайте розглянемо створення обмежень детальніше. Першим в описі загального синтаксису обмежень йде ключове слово[CONSTRAINT <Ім'я обмеження>]. Тут CONSTRAINT означає обмеження. Як бачите, все це взяте в квадратні дужки і, значить, необов’язкове. В базі даних не може бути два обмеження з однаковими іменами.

За допомогою ключового слова CONSTRAINT можна задавати ім’я створюваному обмеженню і у випадку використання синтаксису обмежень на основі одного поля, і у випадку обмежень на основі декількох полів.

Якщо не вказати ім’я для обмеження, СУБД автоматично згенерує його. Однак краще все ж явно назначити ім’я, щоб покращити читабельність схеми бази даних і мати можливість, в подальшому, видалити його.

Читати повністю

Створення таблиці в базі даних

Перш ніж пиступити до розгляду SQL команди CREATE TABLE, розглянемо найбільш використовувані типи даних, які можуть приймати поля таблиці бази даних:

Тип Опис
BLOB Об'єкт, який зберігає дані великого обсягу, такі як графіка, текст і цифровий звук. Має декілька підтипів (sub_type), з яких найбільш використовуваним є 0: дані загального вигляду; 1: тексти. Підтип даних BLOB описується в їх контексті. Пам'ять під BLOB дані виділяється так званими сегментами. При оголошенні можна змінювати розмір сегмента, наприклад BLOB SEGMENT SIZE 1024. За замовчуванням розмір сегмента 80 байт.
CHAR(n); VARCHAR(n) Рядок тексту фіксованої довжини (від 1 до 32767 байт). Визначає кількість знаків.
DECIMAL (<точність>,
<масштаб>)
NUMERIC (<точність>,
<масштаб>)
Типи числових даних з фіксованими точністю і масштабом. Параметр <точність> (від 1 до 15) визначає загальну кількість цифр. <Масштаб> (від 1 до 15) визначає число цифр після коми. Повинно бути менше або дорівнює параметра <точність>. Розмір в пам'яті залежить від зазначеної точності.
DATE Дата (включає також інформацію про час).
FLOAT Дійсне число. 7 цифр точності. Займає 4 байта.
DOUBLE PRECISION Дійсне число підвищеної точності. Для наукових обчислень: 15 цифр точності. Займає завжди 8 байт.
INTEGER Ціле число від −2147483648 до 2147483648. Займає 4 байта.
SMALLINT Ціле число від −32768 до 32767. Займає 2 байта.

Отже, з типами розібралися, приступимо до створення таблиь. В SQL для цього існує команда CREATE TABLE, яка має наступний синтаксис:

Читати повністю

Створення бази даних засобами SQL

Для створення бази даних використовується оператор CREATE DATABASE, який має наступний синтаксис:

CREATE DATABASE «<ім'я файлу бази даних>»
[USER "<ім'я користувача>" [PASSWORD "<пароль>"]]
[PAGE_SIZE int]
[DEFAULT CHARACTER SET charset]

Якщо ви створюєте базу даних не на локальному комп'ютері, а на сервері, то необхідно в параметрі <ім'я файлу бази даних> вказати ім'я сервера. Також рекомендується в імені файлу використовувати тільки латинські букви, цифри та символ підкреслення. Даний файл зберігається з розширенням *.gdb.

Параметри USER і PASSWORD визначають користувача бази даних та його пароль. Користувач повинен існувати в списку облікових записів в базі даних безпеки на тому комп'ютері, де створюється база даних. Користувач з цим іменем стане власником створеної бази даних і матиме до неї необмежені повноваження з перегляду та зміни будь-яких даних і метаданих. Такими ж повноваженнями володіє і користувач SYSDBA.

Читати повністю

Використання циклів і операторів розгалуження в збережуваних процедурах

Основна проблема використання конструкції SELECT в збережуваних процедурах полягає в тому, що результуючий набір даних, який повертає SELECT є, як правило, таблиця з множиною рядків і стовпців, а вбудована в SQL процедурна мова не має засобів, які б дозволяли оперувати одночасно більш ніж одним записом. Тобто, якщо нам потрібно сформувати запит, який повертатиме один ря'док, для цього використовується SELECT, який має наступний формат:

SELECT {*|<Список полів>}
FROM <Список таблиць>
[WHERE <Критерій відбору>]
INTO змінна [, змінна,...];

Очевидно, що даний варіант конструкції SELECT відрізняється від стандартного наявністю фрази INTO після якої слюдує список змінних.

Приклад: написати процедуру, яка повертає кількість автомобілів, які містяться в таблиці Cars.

Читати повністю

Використання збережуваної процедури в SQL

Збережувана процедура — це частина метаданих бази даних, що представляє собою відкомпільовану у внутрішнє представлення InterBase підпрограму, написану спеціальною мовою, компілятор якої вбудований у ядро сервера InterBase.

Основою могутніх можливостей, закладених у збережувану процедуру, є процедурна мова програмування, що має у своєму складі як модифіковані речення звичайного SQL, такі, як INSERT, UPDATE і SELECT, так і засоби організації розгалужень і циклів (IF, WHILE), а також засоби обробки помилок і виняткових ситуацій. Мова збережуваних процедур дозволяє реалізувати складні алгоритми роботи з даними, а завдяки орієнтованості на роботу з реляційними даними збережувані процедури виходять значно компактнішими аналогічних процедур на традиційних мовах.

Існують два типи збережуваних процедур:

  1. Процедури вибору: як результат своєї роботи повертають набір даних або повідомлення про помилку.
  2. Процедури дії: за загальним призначенням не відрізняються від процедур (підпрограм) в алгоритмічних мовах, таких як Паскаль, основна відмінность полягає в синтаксисі мови і здійснюють з базою даних деяку дію.

Обидва типи збережуваних процедур створюються командою CREATE PROCEDURE, яка має наступний формат:

Читати повністю

Наступна сторінка »