Синтаксис мови програмування SQL описується комітетом ISO/IEC SC 32 як частина стандарту ISO/IEC 9075. Цей стандарт не знаходиться у вільному доступі. Незважаючи на існування стандарту, код SQL неможливо переносити між різними системами баз даних без змін.
Елементи мови
Мова SQL поділяється на кілька видів елементів:
Пункти (диз'юнкти) (англ.Clauses), що є складовими частинами інструкцій та запитів. (Іноді вони не обов'язкові.)[1]
Предикати (англ.Predicates), які описують умови, результатом яких є значення тризначної логіки SQL (true/false/unknown) або Булевізначення істинності і які використовуються для обмеження ефекту інструкцій та запитів, або для зміни потоку виконання програми.
Запити (англ.Queries), які отримують дані на основі заданих критеріїв.
Інструкції (англ.Statements), які чинять дію на схему даних чи самі дані, або контролюють транзакції, потік виконання програми, з'єднання, сесії, та виконують діагностику.
Інструкції SQL також включають крапку з комою (";") для позначення кінця інструкції. Хоча вона не є обов'язковою на кожній платформі, вона описується як стандартна частина граматики SQL.
Незначимі пропуски загалом ігноруються в інструкціях і запитах SQL, дозволяючи форматувати код SQL з метою покращення читабельності.
Оператори
Оператор
Опис
Приклад
=
дорівнює
Author='Alcott'
<>
не дорівнює (багато СКБД приймають крім <> також !=)
SQL перевіряє умови WHEN в порядку в якому вони з'являються в коді. Якщо в коді не задано виразу ELSE, SQL за замовчуванням припускає ELSE NULL. Скорочений синтаксис, названий в стандарті SQL простим case (англ."simple case"), схожий на інструкцію перемикач в інших мовах:
CASEnWHEN1THEN'One'WHEN2THEN'Two'ELSE'I cannot count that high'END
Є два скорочення для окремих випадків CASE: COALESCE та NULLIF.
Вираз COALESCE повертає значення першого зліва операнда який не є NULL, або NULL якщо всі операнди є NULL.
COALESCE(x1,x2)
еквівалентно до:
CASEWHENx1ISNOTNULLTHENx1ELSEx2END
Вираз NULLIF має два операнди і повертає NULL якщо операнди мають однакове значення, інакше повертає значення першого.
NULLIF(x1,x2)
еквівалентно до:
CASEWHENx1=x2THENNULLELSEx1END
Запити
Запит - найчастіше виконувана операція в 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]
↑Leon, Alexis; Leon, Mathews (1999). Eliminating duplicates - SELECT using DISTINCT. SQL: A Complete Reference. New Delhi: Tata McGraw-Hill Education. с. 143. ISBN9780074637081. Процитовано 21 жовтня 2015. [...] the keyword DISTINCT [...] eliminates the duplicates from the result set.