Топ питань
Часова шкала
Чат
Перспективи
Синтаксис 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
Зноски
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads