Топ питань
Часова шкала
Чат
Перспективи

Синтаксис SQL

З Вікіпедії, вільної енциклопедії

Remove ads

Синтаксис мови програмування SQL описується комітетом ISO/IEC SC 32 як частина стандарту ISO/IEC 9075. Цей стандарт не знаходиться у вільному доступі. Незважаючи на існування стандарту, код SQL неможливо переносити між різними системами баз даних без змін.

Елементи мови

Мова SQL поділяється на кілька видів елементів:

  • Пункти (диз'юнкти) (англ. Clauses), що є складовими частинами інструкцій та запитів. (Іноді вони не обов'язкові.)[1]
  • Вирази (англ. Expressions), які можуть генерувати скалярні значення, або таблиці з стовпчиками і рядками даних
  • Предикати (англ. Predicates), які описують умови, результатом яких є значення тризначної логіки SQL (true/false/unknown) або Булеві значення істинності і які використовуються для обмеження ефекту інструкцій та запитів, або для зміни потоку виконання програми.
  • Запити (англ. Queries), які отримують дані на основі заданих критеріїв.
  • Інструкції (англ. Statements), які чинять дію на схему даних чи самі дані, або контролюють транзакції, потік виконання програми, з'єднання, сесії, та виконують діагностику.
    • Інструкції SQL також включають крапку з комою (";") для позначення кінця інструкції. Хоча вона не є обов'язковою на кожній платформі, вона описується як стандартна частина граматики SQL.
  • Незначимі пропуски загалом ігноруються в інструкціях і запитах SQL, дозволяючи форматувати код SQL з метою покращення читабельності.
Remove ads

Оператори

Узагальнити
Перспектива
Більше інформації Оператор, Опис ...

Іноді пропонувались та розроблялись інші оператори, такі як Skyline operator[en] (для знаходження лише записів які не "гірші" за будь-які інші)s


SQL має вираз case/when/then/else/end, який був впроваджений в SQL-92. В найзагальнішій формі, яка називається стандартом SQL "searched case":

CASE WHEN n > 0
          THEN 'positive'
     WHEN n < 0
          THEN 'negative'
     ELSE 'zero'
END

SQL перевіряє умови WHEN в порядку в якому вони з'являються в коді. Якщо в коді не задано виразу ELSE, SQL за замовчуванням припускає ELSE NULL. Скорочений синтаксис, названий в стандарті SQL простим case (англ. "simple case"), схожий на інструкцію перемикач в інших мовах:

CASE n WHEN 1
            THEN 'One'
       WHEN 2
            THEN 'Two'
       ELSE 'I cannot count that high'
END

Такий синтаксис використовує неявні перевірки рівності, зі звичними пересторогами щодо порівняння з NULL.

Є два скорочення для окремих випадків CASE: COALESCE та NULLIF.

Вираз COALESCE повертає значення першого зліва операнда який не є NULL, або NULL якщо всі операнди є NULL.

COALESCE(x1,x2)

еквівалентно до:

CASE WHEN x1 IS NOT NULL THEN x1
     ELSE x2
END

Вираз NULLIF має два операнди і повертає NULL якщо операнди мають однакове значення, інакше повертає значення першого.

NULLIF(x1, x2)

еквівалентно до:

CASE WHEN x1 = x2 THEN NULL ELSE x1 END
Remove ads

Запити

Узагальнити
Перспектива

Запит - найчастіше виконувана операція в SQL. Для здійснення запитів використовується декларативна інструкція SELECT. SELECT отримує дані з однієї чи більше таблиць, або виразів. Стандартна інструкція SELECT не здійснює постійних змін бази даних. Деякі нестандартні реалізації SELECT можуть мати постійні ефекти, такі як варіант SELECT INTO що зустрічається в деяких базах даних.[2]

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

До запиту входить список колонок, які повинні включатись в кінцевий результат, зазвичай одразу після ключового слова SELECT. Можна використати символ "зірочка" ("*"), щоб описати, що запит повинен повертати всі колонки всіх таблиць з якими працює. SELECT - найкладніша інструкція SQL, з необов'язковими ключовими словами і пунктами до яких входять:

  • Пункт FROM, який задає таблиці з яких треба отримати дані. FROM може включати необов'язкові підпункти JOIN щоб задати правила для з'єднаних таблиць.
  • Пункт WHERE що містить предикат який обмежує рядки що повертаються запитом. WHERE видаляє всі рядки з результуючої множини, де предикат порівняння не дорівнює True.
  • Пункт GROUP BY відображає рядки що містять спільні значення в меншу множину рядків. GROUP BY часто використовують в поєднанні з функціями агрегації SQL, або для видалення повторюватих рядків з результуючої множини. Пункт WHERE застосовується до GROUP BY.
  • Пункт HAVING включає предикат що використовується для фільтрування рядків отриманих в результаті обчислення GROUP BY. Через те що він працює з результатами GROUP BY, функції агрегації можуть використовуватись в предикаті пункту HAVING.
  • Пункт ORDER BY визначає які колонки використати для сортування даних результату, і в якому порядку здійснити сортування (зростаючому чи спадаючому). Без пункту ORDER BY, порядок рядків що повертається запитом SQL не визначений.
  • Ключове слово DISTINCT [3] усуває повторення даних.[4]
Remove ads

Зноски

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads