Топ питань
Часова шкала
Чат
Перспективи
Синтаксис 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