Теоретичний матеріал та презентація до Теми №5

1. Основи SQL та його роль у базах даних

Мова структурованих запитів (SQL — Structured Query Language) є загальноприйнятим міжнародним стандартом (ISO/IEC 9075) декларативного програмування, призначеним для створення, модифікації, управління та вибірки даних у реляційних (РСУБД) та об'єктно-реляційних системах управління базами даних (ОРСУБД) [8; 14].

На відміну від імперативних мов програмування (Python, C++), SQL є декларативною мовою: користувач описує що саме потрібно отримати у результаті, а як саме виконувати запит (вибір індексів, алгоритмів об'єднання таблиць та порядок сканування диска) визначає внутрішній планувальник запитів (Query Planner / Optimizer) СУБД [8].

Визначення SQL-схеми

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

Це пояснюється тим, що навіть якщо користувачів переставав задовольняти конкретний продукт — реляційна СКБД, — перехід на іншу реляційну СКБД не вимагав надмірних витрат часу чи коштів, адже обидві системи дотримувалися одних і тих самих мовних стандартів. Звісно, ​​на практиці між різними комерційними пакетами реляційних СКБД існує чимало відмінностей. Проте, якщо користувач сумлінно використовує лише ті можливості, що входять до стандарту, і якщо обидві реляційні системи точно цей стандарт підтримують, то перехід між ними має бути значно простішим. Ще однією перевагою наявності такого стандарту є можливість писати команди в прикладній програмі для роботи з базами даних, які можуть отримувати доступ до даних, що зберігаються у двох або більше реляційних СКБД, без необхідності змінювати підмову роботи з базою даних (SQL), за умови, що обидві СКБД підтримують стандартний SQL. Назва SQL нині розшифровується як Structured Query Language (мова структурованих запитів). Спочатку ця мова мала назву SEQUEL (Structured English Query Language — мова структурованих запитів англійською мовою); її було розроблено та впроваджено в підрозділі IBM Research як інтерфейс для експериментальної системи реляційних баз даних під назвою SYSTEM R. Сьогодні SQL є стандартною мовою для комерційних реляційних СКБД. Спільна робота Американського національного інституту стандартів (ANSI) та Міжнародної організації зі стандартизації (ISO) призвела до появи стандартної версії SQL (ANSI 1986), відомої як SQL-86 або SQL1. Згодом було розроблено переглянутий і значно розширений стандарт SQL-92 (також відомий як SQL2). Наступним визнаним стандартом став SQL:1999, який на етапі розробки мав назву SQL3. Двома пізнішими оновленнями стандарту стали SQL:2003 та SQL:2006; серед іншого, вони додали до мови підтримку можливостей XML. Ще одне оновлення, випущене у 2008 році, інтегрувало в SQL додаткові функції об'єктно-орієнтованих баз даних.

SQL — це комплексна мова для роботи з базами даних: вона містить команди для визначення даних, виконання запитів та оновлення інформації. Отже, ця мова поєднує в собі функції як DDL, так і DML. Крім того, вона містить засоби для визначення представлень (views) у базі даних, налаштування системи безпеки та авторизації, встановлення обмежень цілісності та керування транзакціями. Також передбачено правила вбудовування інструкцій SQL у мови програмування загального призначення, такі як Java, COBOL або C/C++.

Пізніші стандарти SQL (починаючи з SQL:1999) поділяються на базову специфікацію та спеціалізовані розширення. Базова частина має бути реалізована всіма розробниками реляційних систем керування базами даних (РСКБД), що відповідають стандарту SQL. Розширення можуть реалізовуватися як додаткові модулі, що купуються окремо для вирішення специфічних завдань, таких як інтелектуальний аналіз даних (data mining), робота з просторовими та часовими даними, створення сховищ даних, оперативна аналітична обробка (OLAP), робота з мультимедійними даними тощо.

Визначення даних і типи даних у SQL

У SQL терміни «таблиця», «рядок» і «стовпець» використовуються як відповідники формальних термінів реляційної моделі: «відношення», «кортеж» і «атрибут» відповідно. Ми будемо вживати ці терміни як взаємозамінні. Основною командою SQL для визначення даних є інструкція CREATE; її можна використовувати для створення схем, таблиць (відношень) і доменів (а також інших об'єктів, як-от представлень, тверджень і тригерів). Оскільки специфікація SQL є дуже об’ємною, тут наведено опис лише найважливіших можливостей. Детальнішу інформацію можна знайти у відповідних стандартах SQL.

Типи даних атрибутів і домени в SQL. До основних типів даних, доступних для атрибутів, належать: числові типи, рядки символів, рядки бітів, логічний тип (Boolean), а також типи для зберігання дати й часу.

■ Числові типи даних включають цілі числа різного розміру (INTEGER або INT та SMALLINT) і числа з плавною комою (дійсні числа) різної точності (FLOAT або REAL та DOUBLE PRECISION). Числа з фіксованою точністю можна оголошувати за допомогою конструкції DECIMAL(i,j) — або DEC(i,j) чи NUMERIC(i,j), — де i (точність) — це загальна кількість десяткових цифр, а j (масштаб) — кількість цифр після десяткової крапки.

■ Типи даних для рядків символів можуть бути фіксованої довжини (CHAR або CHARACTER, де n — кількість символів) або змінної довжини (VARCHAR, CHAR VARYING або CHARACTER VARYING, де n — максимальна кількість символів). Літеральне рядкове значення записується в одинарних лапках (апострофах); при цьому враховується регістр символів (розрізняються великі та малі літери).

■ Типи даних для рядків бітів можуть бути фіксованої довжини n (BIT) або змінної довжини (BIT VARYING, де n — максимальна кількість бітів). Значенням за замовчуванням для n (довжини рядка символів або бітів) є 1. Літеральні рядки бітів записуються в одинарних лапках, але перед ними ставиться літера B, щоб відрізняти їх від рядків символів; ...наприклад, B‘10101’.5 Також доступний інший тип даних для бітових рядків змінної довжини — BINARY LARGE OBJECT (або BLOB); він використовується для визначення стовпців, що містять великі бінарні значення, як-от зображення. Як і у випадку з CLOB, максимальну довжину BLOB можна задавати в кілобітах (K), мегабітах (M) або гігабітах (G). Наприклад, BLOB(30G) визначає максимальну довжину в 30 гігабіт.

■ Тип даних Boolean (логічний тип) має традиційні значення TRUE (істина) або FALSE (хиба). Оскільки в SQL існують значення NULL, тут застосовується тризначна логіка, тому третім можливим значенням для типу Boolean є UNKNOWN (невідомо). Питання щодо необхідності значення UNKNOWN та тризначної логіки розглядаються в розділі 5.

■ Тип даних DATE (дата) займає десять позицій і складається з компонентів YEAR (рік), MONTH (місяць) і DAY (день) у форматі YYYY-MM-DD. Тип даних TIME (час) займає щонайменше вісім позицій і складається з компонентів HOUR (година), MINUTE (хвилина) та SECOND (секунда) у форматі HH:MM:SS.

■ Тип даних TIMESTAMP (часова мітка) включає поля DATE і TIME, а також щонайменше шість позицій для десяткових часток секунди та необов’язковий кваліфікатор WITH TIME ZONE (з урахуванням часового поясу). Літеральні значення записуються як рядки в одинарних лапках із ключовим словом TIMESTAMP перед ними та пробілом між датою й часом; наприклад: TIMESTAMP ‘2008-09-27 09:12:47.648302’.

■ Ще одним типом даних, пов’язаним із DATE, TIME та TIMESTAMP, є тип INTERVAL (інтервал). Він визначає інтервал — відносне значення, яке можна використовувати для збільшення або зменшення абсолютного значення дати, часу чи часової мітки. Інтервали поділяються на інтервали типу YEAR/MONTH (рік/місяць) або DAY/TIME (день/час). Формати DATE, TIME та TIMESTAMP можна розглядати як особливий вид рядків. Тому їх, як правило, можна використовувати в операціях порівняння рядків, перетворюючи (або приводячи) їх до еквівалентних рядкових значень.

Доступність

Шрифти Шрифти

Розмір шрифта Розмір шрифта

1

Колір тексту Колір тексту

Колір тла Колір тла

Кернінг шрифтів Кернінг шрифтів

Видимість картинок Видимість картинок

Інтервал між літерами Інтервал між літерами

0

Висота рядка Висота рядка

1.2

Виділити посилання Виділити посилання

Вирівнювання тексту Вирівнювання тексту

Ширина абзацу Ширина абзацу

0