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

Елементи мови Мова SQL поділяється на кілька видів елементів: Пункти (диз'юнкти) (), що є складовими частинами інструкцій та запитів. (Іноді вони не обов'язкові.)ANSI/ISO/IEC International Standard (IS). Вирази (), які можуть генерувати скалярні значення, або таблиці з стовпчиками і рядками даних Предикати (), які описують умови, результатом яких є значення тризначної логіки SQL (true/false/unknown) або Булеві значення істинності і які використовуються для обмеження ефекту інструкцій та запитів, або для зміни потоку виконання програми. Запити (), які отримують дані на основі заданих критеріїв. Інструкції (), які чинять дію на схему даних чи самі дані, або контролюють транзакції, потік виконання програми, з'єднання, сесії, та виконують діагностику. Інструкції SQL також включають крапку з комою (";") для позначення кінця інструкції. Хоча вона не є обов'язковою на кожній платформі, вона описується як стандартна частина граматики SQL. Незначимі пропуски загалом ігноруються в інструкціях і запитах SQL, дозволяючи форматувати код SQL з метою покращення читабельності.

Оператори

Оператор Опис Приклад = дорівнює <> не дорівнює (багато СКБД приймають крім <> також !=) > більше ніж < менше ніж >= більше або дорівнює <= менше або дорівнює між двома величинами включно співставлення тексту з шаблоном одне з багатьох можливих значень or Порівняння з null (відсутністю даних) or булева перевірка істинності значення рівні або обоє null (обоє відсутні) використовується для зміни назви колонки в результаті запиту

Іноді пропонувались та розроблялись інші оператори, такі як (для знаходження лише записів які не "гірші" за будь-які інші)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' ENDSQL перевіряє умови WHEN в порядку в якому вони з'являються в коді. Якщо в коді не задано виразу ELSE, SQL за замовчуванням припускає ELSE NULL. Скорочений синтаксис, названий в стандарті SQL простим 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

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

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

До запиту входить список колонок, які повинні включатись в кінцевий результат, зазвичай одразу після ключового слова 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 усуває повторення даних.

Зноски