Imath wiki - мова sql, історія, базові оператори

Як вже говорилося, в 1970-х роках Едгар Кодд запропонував використовувати реляційну модель. Крім самої моделі, він так само запропонував мову для роботи з даними в рамках цієї моделі, названий DSL / Alpha. Згодом, на основі DSL / Alpha з'явилася мова SQUARE, а на його основі, в свою чергу, мова SEQUEL, який (зважаючи на деяку плутанину в торгових марках) був перейменований пізніше в SQL.

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

Останнє зауваження. SQL історично не є акронімом, хоча його нерідко розшифровують як Structured Query Language. Новомосковскется або по буквах, або як "sequel" (сиквел).

Багато з вас знайомі з імперативними мовами програмування. SQL не є імперативною мовою, і зараз його прийнято відносити до декларативних. Інші декларативні мови - це, наприклад, різні мови розмітки, скажімо, HTML або XML.

Декларативність SQL полягає в тому, що, замість того, щоб вказувати, як досягти результату (як в імперативних мовах), ви вказуєте, якого результату треба досягти і на основі яких вхідних даних. Всю іншу роботу виконує компонент СУБД, званий оптимізатором.

На SQL досить складно писати "повні" програми - звичайно потрібно вбудовувати SQL-виклики в якийсь імперативний (або функціональний) мову.

Спочатку SQL був основним способом роботи користувача з базою даних і дозволяв виконувати наступний набір операцій:

  • створення в базі даних нової таблиці;
  • додавання в таблицю нових записів;
  • зміна записів;
  • видалення записів;
  • вибірка записів з однієї або декількох таблиць (відповідно до заданого умовою);
  • зміна структур таблиць.

Згодом SQL ускладнився - збагатився новими конструкціями, забезпечив можливість опису та управління новими збереженими об'єктами (наприклад, індекси, уявлення, тригери і процедури) - і став набувати рис, властиві мовам програмування загального призначення.

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

Кожна пропозиція SQL - це або запит даних з бази, або звернення до бази даних, яке призводить до зміни даних в базі. Розрізняють такі типи запитів, відповідно до змін, що відбуваються в базі даних в результаті їх виконання:

  • запити на створення або зміна в базі даних нових або існуючих об'єктів (при цьому в запиті описується тип і структура створюваного або змінюваного об'єкта);
  • запити на отримання даних;
  • запити на додавання нових даних (записів);
  • запити на видалення даних;
  • звернення до СУБД.

В основному, всі вирази SQL мають наступний синтаксис:

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

  • запити, які оперують самими таблицями (створення і зміна таблиць);
  • запити, які оперують з окремими записами (або рядками таблиць) або наборами записів.

Кожна таблиця описується в вигляді перерахування своїх полів (стовпців таблиці) із зазначенням

  • типу збережених в кожному полі значень;
  • зв'язків між таблицями (завдання первинних і вторинних ключів);
  • інформації, необхідної для побудови індексів.

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

  • вставка нового рядка;
  • зміна значень полів рядка або набору рядків;
  • видалення рядка або набору рядків.

Найголовніший вид запиту - це запит, який повертає (користувачеві) певний набір рядків, з яким можна здійснити одну з трьох операцій:

Таким чином використання SQL зводиться, по суті, до формування всіляких вибірок рядків і здійсненню операцій над усіма записами, що входять в набір.

Мова SQL представляє собою сукупність

  • операторів,
  • інструкцій,
  • і обчислюваних функцій.

Переваги і недоліки

переваги

недоліки

Невідповідність реляційної моделі даних

Творці реляційної моделі даних Едгар Кодд, Крістофер Дейт і їх прихильники вказують на те, що SQL не є істинно реляційних мовою. Зокрема, вони вказують на такі дефекти SQL з точки зору реляційної теорії:

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

Складність Хоча SQL і замислювався як засіб роботи кінцевого користувача, врешті-решт він став настільки складним, що перетворився в інструмент програміста. Відхилення від стандартів Незважаючи на наявність міжнародного стандарту ANSI багато розробників СУБД вносять зміни в мову SQL, застосовуваний в розроблюваної СУБД, тим самим відступаючи від стандарту. Таким чином з'являються специфічні для кожної конкретної СУБД діалекти мови SQL.

У SQL існує чотири великі групи операторів.

Оператори управління схемою даних

це оператори, які можна створювати, редагувати і видаляти таблиці (відносини), бази даних, обмеження, індекси і т.п. а так само отримувати інформацію про існуючою схемою даних.

  • CREATE створює об'єкт БД (саму базу, таблицю, уявлення, користувача і т. Д.),
  • ALTER змінює об'єкт,
  • DROP видаляє об'єкт;
Оператори управління даними

це оператори, які дозволяють отримувати, створювати, змінювати і видаляти дані з створених таблиць.

  • SELECT зчитує дані, що задовольняють заданим умовам,
  • INSERT додає нові дані,
  • UPDATE змінює існуючі дані,
  • DELETE видаляє дані;
Оператори управління СУБД

це оператори, що дозволяють налаштовувати СУБД, управляти дозволами, створювати користувачів, і т.п.

  • GRANT надає користувачеві (групі) дозволу на певні операції з об'єктом,
  • REVOKE відкликає раніше видані дозволи,
  • DENY задає заборона, має пріоритет над вирішенням;
Оператори управління транзакціями

дозволяють визначати групи операцій, які можуть бути скасовані або вчинені тільки "все разом". Тобто при помилку однієї операції, автоматично скасовується вся транзакція.

  • COMMIT застосовує транзакцію,
  • ROLLBACK відкочується все зміни, зроблені в контексті поточної транзакції,
  • SAVEPOINT ділить транзакцію на більш дрібні ділянки.

Розглянемо деякі з них більш детально.

Оператори управління схемою даних

Оператори створення елементів схеми в загальному називаються CREATE.

Оператори створення

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

Схожі статті