Синтаксис мови програмування SQL описується комітетом ISO/IEC SC 32 як частина стандарту ISO/IEC 9075. Цей стандарт не знаходиться у вільному доступі. Незважаючи на існування стандарту, код SQL неможливо переносити між різними системами баз даних без змін.
Елементи мови
Мова SQL поділяється на кілька видів елементів:
- Пункти (диз'юнкти) (англ. Clauses), що є складовими частинами інструкцій та запитів. (Іноді вони не обов'язкові.)
- Вирази (англ. Expressions), які можуть генерувати скалярні значення, або таблиці з стовпчиками і рядками даних
- Предикати (англ. Predicates), які описують умови, результатом яких є значення тризначної логіки SQL (true/false/unknown) або Булеві значення істинності і які використовуються для обмеження ефекту інструкцій та запитів, або для зміни потоку виконання програми.
- Запити (англ. Queries), які отримують дані на основі заданих критеріїв.
- Інструкції (англ. Statements), які чинять дію на схему даних чи самі дані, або контролюють транзакції, потік виконання програми, з'єднання, сесії, та виконують діагностику.
- Інструкції SQL також включають крапку з комою (";") для позначення кінця інструкції. Хоча вона не є обов'язковою на кожній платформі, вона описується як стандартна частина граматики SQL.
- Незначимі пропуски загалом ігноруються в інструкціях і запитах SQL, дозволяючи форматувати код SQL з метою покращення читабельності.
Оператори
Оператор | Опис | Приклад |
---|---|---|
= | дорівнює | Author = 'Alcott' |
<> | не дорівнює (багато СКБД приймають крім <> також != ) | Dept <> 'Sales' |
> | більше ніж | Hire_Date > '2012-01-31' |
< | менше ніж | Bonus < 50000.00 |
>= | більше або дорівнює | Dependents >= 2 |
<= | менше або дорівнює | Rate <= 0.05 |
BETWEEN | між двома величинами включно | Cost BETWEEN 100.00 AND 500.00 |
LIKE | співставлення тексту з шаблоном | First_Name LIKE 'Will%' |
IN | одне з багатьох можливих значень | DeptCode IN (101, 103, 209) |
IS or IS NOT | Порівняння з null (відсутністю даних) | Address IS NOT NULL |
IS [NOT] TRUE or IS [NOT] FALSE | булева перевірка істинності | PaidVacation IS TRUE |
IS NOT DISTINCT FROM | значення рівні або обоє null (обоє відсутні) | Debt IS NOT DISTINCT FROM - Receivables |
AS | використовується для зміни назви колонки в результаті запиту | SELECT employee AS "department1" |
Іноді пропонувались та розроблялись інші оператори, такі як [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
Запити
Запит - найчастіше виконувана операція в 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
усуває повторення даних.
Зноски
- ANSI/ISO/IEC International Standard (IS).
- Transact-SQL Reference. SQL Server Language Reference. SQL Server 2005 Books Online. Microsoft. 15 вересня 2007. Процитовано 17 червня 2007.
- SAS 9.4 SQL Procedure User's Guide. SAS Institute. с. 248. ISBN . Процитовано 21 жовтня 2015.
Although the UNIQUE argument is identical to DISTINCT, it is not an ANSI standard.
- ; Leon, Mathews (1999). Eliminating duplicates - SELECT using DISTINCT. SQL: A Complete Reference. New Delhi: Tata McGraw-Hill Education. с. 143. ISBN . Процитовано 21 жовтня 2015.
[...] the keyword DISTINCT [...] eliminates the duplicates from the result set.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Sintaksis movi programuvannya SQL opisuyetsya komitetom ISO IEC SC 32 yak chastina standartu ISO IEC 9075 Cej standart ne znahoditsya u vilnomu dostupi Nezvazhayuchi na isnuvannya standartu kod SQL nemozhlivo perenositi mizh riznimi sistemami baz danih bez zmin Elementi moviMova SQL podilyayetsya na kilka vidiv elementiv Punkti diz yunkti angl Clauses sho ye skladovimi chastinami instrukcij ta zapitiv Inodi voni ne obov yazkovi Virazi angl Expressions yaki mozhut generuvati skalyarni znachennya abo tablici z stovpchikami i ryadkami danih Predikati angl Predicates yaki opisuyut umovi rezultatom yakih ye znachennya triznachnoyi logiki SQL true false unknown abo Bulevi znachennya istinnosti i yaki vikoristovuyutsya dlya obmezhennya efektu instrukcij ta zapitiv abo dlya zmini potoku vikonannya programi Zapiti angl Queries yaki otrimuyut dani na osnovi zadanih kriteriyiv Instrukciyi angl Statements yaki chinyat diyu na shemu danih chi sami dani abo kontrolyuyut tranzakciyi potik vikonannya programi z yednannya sesiyi ta vikonuyut diagnostiku Instrukciyi SQL takozh vklyuchayut krapku z komoyu dlya poznachennya kincya instrukciyi Hocha vona ne ye obov yazkovoyu na kozhnij platformi vona opisuyetsya yak standartna chastina gramatiki SQL Neznachimi propuski zagalom ignoruyutsya v instrukciyah i zapitah SQL dozvolyayuchi formatuvati kod SQL z metoyu pokrashennya chitabelnosti OperatoriOperator Opis Priklad dorivnyuye span class n Author span span class w span span class o span span class w span span class s1 Alcott span lt gt ne dorivnyuye bagato SKBD prijmayut krim lt gt takozh span class n Dept span span class w span span class o lt gt span span class w span span class s1 Sales span gt bilshe nizh span class n Hire Date span span class w span span class o gt span span class w span span class s1 2012 01 31 span lt menshe nizh span class n Bonus span span class w span span class o lt span span class w span span class mi 50000 span span class p span span class mi 00 span gt bilshe abo dorivnyuye span class n Dependents span span class w span span class o gt span span class w span span class mi 2 span lt menshe abo dorivnyuye span class n Rate span span class w span span class o lt span span class w span span class mi 0 span span class p span span class mi 05 span span class k BETWEEN span mizh dvoma velichinami vklyuchno span class n Cost span span class w span span class k BETWEEN span span class w span span class mi 100 span span class p span span class mi 00 span span class w span span class k AND span span class w span span class mi 500 span span class p span span class mi 00 span span class k LIKE span spivstavlennya tekstu z shablonom span class n First Name span span class w span span class k LIKE span span class w span span class s1 Will span span class k IN span odne z bagatoh mozhlivih znachen span class n DeptCode span span class w span span class k IN span span class w span span class p span span class mi 101 span span class p span span class w span span class mi 103 span span class p span span class w span span class mi 209 span span class p span span class k IS span or span class k IS span span class w span span class k NOT span Porivnyannya z null vidsutnistyu danih span class n Address span span class w span span class k IS span span class w span span class k NOT span span class w span span class k NULL span span class k IS span span class w span span class p span span class k NOT span span class p span span class w span span class k TRUE span or span class k IS span span class w span span class p span span class k NOT span span class p span span class w span span class k FALSE span buleva perevirka istinnosti span class n PaidVacation span span class w span span class k IS span span class w span span class k TRUE span span class k IS span span class w span span class k NOT span span class w span span class k DISTINCT span span class w span span class k FROM span znachennya rivni abo oboye null oboye vidsutni span class n Debt span span class w span span class k IS span span class w span span class k NOT span span class w span span class k DISTINCT span span class w span span class k FROM span span class w span span class o span span class w span span class n Receivables span span class k AS span vikoristovuyetsya dlya zmini nazvi kolonki v rezultati zapitu span class k SELECT span span class w span span class n employee span span class w span span class k AS span span class w span span class ss department1 span Inodi proponuvalis ta rozroblyalis inshi operatori taki yak en dlya znahodzhennya lishe zapisiv yaki ne girshi za bud yaki inshi s SQL maye viraz case when then else end yakij buv vprovadzhenij v SQL 92 V najzagalnishij formi yaka nazivayetsya standartom SQL searched case CASE WHEN n gt 0 THEN positive WHEN n lt 0 THEN negative ELSE zero END SQL pereviryaye umovi WHEN v poryadku v yakomu voni z yavlyayutsya v kodi Yaksho v kodi ne zadano virazu ELSE SQL za zamovchuvannyam pripuskaye ELSE NULL Skorochenij sintaksis nazvanij v standarti SQL prostim case angl simple case shozhij na instrukciyu peremikach v inshih movah CASE n WHEN 1 THEN One WHEN 2 THEN Two ELSE I cannot count that high END Takij sintaksis vikoristovuye neyavni perevirki rivnosti zi zvichnimi perestorogami shodo porivnyannya z NULL Ye dva skorochennya dlya okremih vipadkiv CASE COALESCE ta NULLIF Viraz COALESCE povertaye znachennya pershogo zliva operanda yakij ne ye NULL abo NULL yaksho vsi operandi ye NULL COALESCE x1 x2 ekvivalentno do CASE WHEN x1 IS NOT NULL THEN x1 ELSE x2 END Viraz NULLIF maye dva operandi i povertaye NULL yaksho operandi mayut odnakove znachennya inakshe povertaye znachennya pershogo NULLIF x1 x2 ekvivalentno do CASE WHEN x1 x2 THEN NULL ELSE x1 ENDZapitiZapit najchastishe vikonuvana operaciya v SQL Dlya zdijsnennya zapitiv vikoristovuyetsya deklarativna instrukciya a href wiki Select SQL title Select SQL SELECT a SELECT otrimuye dani z odniyeyi chi bilshe tablic abo viraziv Standartna instrukciya SELECT ne zdijsnyuye postijnih zmin bazi danih Deyaki nestandartni realizaciyi SELECT mozhut mati postijni efekti taki yak variant SELECT INTO sho zustrichayetsya v deyakih bazah danih Zapiti dozvolyayut koristuvachu opisati bazhani dani zalishayuchi bazi danih stvorennya planu zapitu jogo optimizaciyu i vikonannya fizichnih operacij neobhidnih dlya otrimannya bazhanih rezultativ Do zapitu vhodit spisok kolonok yaki povinni vklyuchatis v kincevij rezultat zazvichaj odrazu pislya klyuchovogo slova SELECT Mozhna vikoristati simvol zirochka shob opisati sho zapit povinen povertati vsi kolonki vsih tablic z yakimi pracyuye SELECT najkladnisha instrukciya SQL z neobov yazkovimi klyuchovimi slovami i punktami do yakih vhodyat Punkt a href wiki From SQL class mw redirect title From SQL FROM a yakij zadaye tablici z yakih treba otrimati dani FROM mozhe vklyuchati neobov yazkovi pidpunkti a href wiki Join SQL title Join SQL JOIN a shob zadati pravila dlya z yednanih tablic Punkt a href wiki Where SQL title Where SQL WHERE a sho mistit predikat yakij obmezhuye ryadki sho povertayutsya zapitom WHERE vidalyaye vsi ryadki z rezultuyuchoyi mnozhini de predikat porivnyannya ne dorivnyuye True Punkt GROUP BY vidobrazhaye ryadki sho mistyat spilni znachennya v menshu mnozhinu ryadkiv GROUP BY chasto vikoristovuyut v poyednanni z funkciyami agregaciyi SQL abo dlya vidalennya povtoryuvatih ryadkiv z rezultuyuchoyi mnozhini Punkt WHERE zastosovuyetsya do GROUP BY Punkt a href wiki Having SQL title Having SQL HAVING a vklyuchaye predikat sho vikoristovuyetsya dlya filtruvannya ryadkiv otrimanih v rezultati obchislennya GROUP BY Cherez te sho vin pracyuye z rezultatami GROUP BY funkciyi agregaciyi mozhut vikoristovuvatis v predikati punktu HAVING Punkt a href wiki Order by title Order by ORDER BY a viznachaye yaki kolonki vikoristati dlya sortuvannya danih rezultatu i v yakomu poryadku zdijsniti sortuvannya zrostayuchomu chi spadayuchomu Bez punktu ORDER BY poryadok ryadkiv sho povertayetsya zapitom SQL ne viznachenij Klyuchove slovo DISTINCT usuvaye povtorennya danih ZnoskiANSI ISO IEC International Standard IS Transact SQL Reference SQL Server Language Reference SQL Server 2005 Books Online Microsoft 15 veresnya 2007 Procitovano 17 chervnya 2007 SAS 9 4 SQL Procedure User s Guide SAS Institute s 248 ISBN 9781612905686 Procitovano 21 zhovtnya 2015 Although the UNIQUE argument is identical to DISTINCT it is not an ANSI standard Leon Mathews 1999 Eliminating duplicates SELECT using DISTINCT SQL A Complete Reference New Delhi Tata McGraw Hill Education s 143 ISBN 9780074637081 Procitovano 21 zhovtnya 2015 the keyword DISTINCT eliminates the duplicates from the result set