Загальні
елементи SQL
5.1 ()
Функція b> p>
Визначає термінальні символи мови і елементи рядків. p>
Формат b> p>
:: = | |:: = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9:: = |:: = A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z:: = a | d | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z:: =
Див Синтаксичних правил 1. p>
Синтаксичні правила b> p>
() Є
будь-яким символом з визначеного в реалізації безлічі символів, відмінним
від () і (). Якщо в
реалізації індикатор кінця рядка є символом, він також повинен бути
виключений з ().
Зауваження: Див Формат для ()
в 5.3,
"()".
Безліч ()
повинно включати всі символи, відмінні від () і
(), Що зустрічаються в термінальних продукціях
мови SQL, і символи знака відсотка і підкреслення.
Загальні правила b> p>
Ні. p>
5.2 ()
Функція b> p>
визначає не невизначений значення p>
Формат b> p>
:: = |:: ='...':: = | = | Або (),
повинно бути більше 0.
Якщо () опущена, то вона передбачається
рівний 1. Якщо () опущений, то передбачається
рівним 0. Якщо опущена (), то значення
визначається в реалізації.
() Для
() Не повинен бути більше, ніж
() Для ().
CHARACTER специфікує тип даних рядків символів з довжиною,
спеціфіціруемой ().
NUMERIC специфікує тип даних точних чисел з точністю і
масштабом, спеціфіціруемимі через () і
().
DECIMAL специфікує тип даних точних чисел з масштабом,
спеціфіціруемим () і визначається в
реалізації точністю, яка дорівнює або більшої зна чення вирішення зазначеної
().
INTEGER специфікує тип даних точних чисел з певною в
реалізації точністю і масштабом 0.
SMALLINT специфікує тип даних точних чисел з масштабом 0 і
визначеної у реалізації точністю не більшою, ніж визначена у
реалізації точність INTEGER.
FLOAT специфікує тип даних приблизних чисел з двійкової
точністю, яка дорівнює або більшої значення зазначеної
().
REAL специфікує тип даних приблизних чисел з певною
в реалізації точністю.
DOUBLE PRECISION специфікує тип даних приблизних чисел з
визначеної у реалізації точністю більшою, ніж визначена у реалізації
точність для REAL.
Загальні правила b> p>
Ні. p>
5.6 () і
) ()
Функція b> p>
специфікує одне або більше значень, параметрів або пе-ремінних. p>
Формат b> p>
:: = | | | USER:: = |:: = []:: = [INDICATOR]:: = []:: = [INDICATOR]
Синтаксичні правила b> p>
()
специфікує значення, яке не вибирається з таблиці.
()
ідентифікує параметр або параметр і параметр-індикатор. Тип даних
параметра-індикатора повинен бути типом точних чисел зі шкалою 0.
Бетон ()
параметрів-індикаторів визначається в реалізації.
()
ідентифікує змінну включає мови або змінну що включає
мови та змінну-індикатор. Тип даних змінної-індикатора повинен бути
визначеним у реалізації типом даних для параметрів-індикаторів.
()
специфікує параметр або змінну, яким може бути присвоєно
значення.
()
повинна міститися в (). () Повинна з триматися під
().
Тип даних USER - це символьний рядок довжини, визначеної в
реалізації.
Загальні правила b> p>
Якщо () містить () і значення параметра-індикатора негативно, те значення,
спеціфіціруемое () - не визначене. В іншому випадку значення,
спеціфіціруемое () - це значення параметра, що ідентифікується ().
Якщо () містить () і значення змінної-індикатора негативно, те значення,
спеціфіціруемое () - не визначене. В іншому випадку значення,
спеціфіціруемое () - це значення змінної, ідентифікованої ().
Значення, спеціфіціруемое () --
це значення, що представляється цим ().
Значення, спеціфіціруемое USER, так само (), вказаною як
() (), Що містить (), виконання якого викликало обчислення
() USER.
()
Функція b> p>
Вказівка іменованого стовпця. p>
Формат b> p>
:: = [.]:: = |
Синтаксичні правила b> p>
вказує іменований стовпець. Сенс
вказівки стовпця залежить від контексту.
Нехай C () в
().
Тоді:
a) Якщо ()
містить (), то повинна міститися в області дії одного або більше
() Або (), рівних (). Якщо таких
() Або
() більше одного, то використовується ім'я з найбільш
локальної областю дії. Таблиця, ассоціірованнаяс зазначеним () або
(), Должнавключать стовпець з () C.
b) Якщо () не
включає (), то вона повинна
утримуватися в областідействія одного або більше
() Або (). Нехай фраза "можливі кваліфікаторов" позначає
ті () і (), для яких ассоціірованниетабліци включають стовпець, () якого є C. Повинен існувати в
точності один можливий кваліфікаторов з найбільш локальної областю
дії, і це () або () неявно використовується.
Зауваження: "Область дії"
(table name> або ()
специфікується о 5.20
"()", 6.2,
"()", 8.5,
"()", 8.11,
"()" І 8.12,
"()".
Якщо ()
міститься в () T
і область дії явно чи неявно зазначеного
() () Є деякий () або (), що містить () T, то () є "зовнішньої посиланням" на таблицю,
пов'язану з цим ().
Нехай T позначає таблицю, пов'язану з явно або неявно специфіковані
() R. Тип даних () є тип даних стовпця C
таблиці T.
Загальні правила b> p>
"C" або "RC" посилаються на стовпець C даній
рядка T.
5.8 ()
Функція b> p>
специфікує значення, що отримується застосуванням функції до аргументу. p>
Формат b> p>
:: = COUNT (*) | |:: = (AVG | MAX | MIN | SUM | COUNT) (DISTNICT):: = (AVG | MAX | MIN | SUM) ([ALL])
Синтаксичні правила b> p>
Аргумент COUNT (*) і джерело аргументу () і () - це
таблиця або група згрупованої таблиці у відповідності зі специфікаціями
в 5.19,
"()", 5.24,
"()" І 5.25,
"()".
Нехай R позначає аргумент або джерело аргументу
().
()
() І кожна () в () () повинні недвозначно посилатися на стовпець R і не повинні
посилатися на стовпець, породжений з
().
() Повинно
включати (),
яка посилається на стовпець R, і не повинно включати (). Якщо
() Є
зовнішньої посиланням, то () не повинно містити ніяких операторів.
Зауваження: "Зовнішнє посилання" визначається в 5.7,
"().
Якщо () містить (), що є зовнішньої посиланням, то () повинна міститися
в () ().
Зауваження: "Зовнішнє посилання" визначається в 5.7,
"().
Нехай T тип даних значень, які є результатами обчислення
() Або
().
Якщо вказується COUNT, то тип даних результату () - це тип
точних чисел з певною в реалізації точністю і масштабом 0.
Якщо вказується MAX або MIN, то тип даних результату є T.
Якщо вказується SUM або AVG, то:
a) тип T не повинен бути типом символьних рядків.
b) якщо вказується SUM і T - тип точних чисел з масштабом S, то тип
даних результату - тип точних чисел з певною в реалізації точністю
і масштабом S.
c) якщо вказується AVG і T - тип точних чисел з масштабом S, то тип
даних результату - тип точних чисел до визначених у реалізації
точністю і масштабом.
d) якщо T - тип приблизних чисел, то тип результату - тип
приблизних чисел з певною в реалізації точністю.
Загальні правила b> p>
Аргументом
() Є безліч значень. Це безліч
виходить шляхом видалення невизначених значень і всіх надлишкових
дублюючих значень зі стовпця R, на який посилається ().
Аргументом
() Є мультімножество значень. Це
мультімножество виходить шляхом видалення всіх невизначених значень з
результату застосування
() До кожного рядка R. Вказівка або не зазначення ALL
не впливає на зміст
().
Нехай S позначає аргумент () або ().
Тоді:
a) Якщо задається
() COUNT, то результатом є потужність S.
b) Якщо задається функція COUNT (*), то результатом є потужність R.
c) Якщо задається функція AVG, MAX, MIN або SUM і S пусто, то результатом
є невизначене значення.
d) Якщо задається MAX або MIN, то результатом є, відповідно,
максимальне або мінімальне значення в S. Ці результати визначаються з
використанням правил порівняння, визначених в 5.11,
"".
e) Якщо задається SUM, то результатом є суммазначеній в S. Сума
повинна бути в межах діапазону значень типу даних результату.
f) Якщо задається AVG, то результатом є среднеезначеніе значень в
S. Сума значень в S должнабить в межах діапазону значень типу даних
результату.
5.9 ()
Функція b> p>
специфікує значення. p>
Формат b> p>
:: = | + | -:: = | * | /:: = [+|-]:: = | | | ()
Синтаксичні правила b> p>
(), Що включає, не повинно містити ніяких двомісних операторів.
Перший ()
(), Наступної за одномісним оператором, не повинен бути
знаком плюс або мінус.
Якщо тип даних ()
є типом символьних рядків, то () не повинно містити ніяких
операторів. Типом даних результату є тип символьних рядків.
Якщо тип даних обох операндів оператора є типом точних
чисел, то тип даних результату є типом точних чисел з точністю і
масштабом, що визначаються наступним чином:
a) Нехай s1 і s2 - масштаби першого і другого операндів, відповідно.
b) Точність результату додавання і віднімання визначається в реалізації, і
масштаб є max (s1, s2).
c) Точність результату множення визначається в реалізації, і масштаб є
s1 + s2.
d) Точність і масштаб результату поділу визначаються в реалізації.
Якщо тип даних якого-небудь операнда оператора є типом
приблизних чисел, то тип даних результату є тип приблизних
чисел. Точність результату визначається в реалізації.
Загальні правила b> p>
Якщо значення () є
невизначеним значенням, то результатом () є невизначене значення.
Якщо оператори не вказані, то результатом () є значення
зазначеного ().
Коли () застосовується до рядку таблиці, кожна посилання на стовпець
цієї таблиці є посиланням на значення цього стовпчика у цьому рядку.
Одномісні арифметичні оператори + і - специфікує
одномісний плюс і одномісний мінус, відповідно. Одномісний плюс не
змінює свого операнда. Одномісний мінус змінює знак свого операнда.
Двомісні арифметичні оператори +, -, * і/специфікує
додавання, віднімання, множення і ділення відповідно. Дільник НЕ
повинен бути дорівнює 0.
Якщо типом результату арифметичного оператора є тип цілих
чисел, то:
a) Якщо оператор не оператор ділення, то математичний результат операції
повинен бути точно представимо з точністю і масштабом типу результату.
b) Якщо оператор - це оператор ділення, то наближений математичний
результат операції, представлений з точністю і масштабом типу результату
не повинен втрачати ніяких лідируючих значущих цифр.
Першими обчислюються вирази в дужках. Коли порядок обчислення
не визначається дужками, одномісні оператори застосовуються перед
операторами множення і ділення, оператори множення і ділення застосовуються
перед операторами додавання і віднімання, і оператори одного рівня
передування застосовуються зліва направо.
5.10 ()
Функція b> p>
специфікує умова, для якого може бути обчислено істіностное значення "true", "false" або "unknown". p>
Формат b> p>
:: = | | | | | |
Синтаксичні правила b> p>
Ні. p>
Загальні правила b> p>
Результат () виходить його
застосуванням до цьому рядку таблиці.
5.11 ()
Функція b> p>
специфікує порівняння двох значень. p>
Формат b> p>
:: = (|):: = = | | <|> | =
Синтаксичні правила b> p>
Тип даних першим
() І () або
другий () повинні бути порівнянними.
Загальні правила b> p>
Нехай x позначає результат першого () і нехай y позначає результат
() Або другий (). Потужність
результату () не повинна бути більше
одиниці.
Якщо x або y є невизначеними значеннями або якщо
результат () порожній, то результатом
"x y" є unknown.
Якщо x і y є не невизначеними значеннями, то результатом
"xy" є true або false: "x = y"
є true тоді і тільки тоді, коли x і y рівні. "x
y "є true тоді і тільки тоді, коли x і y не рівні." x <
y "є true тоді і тільки тоді, коли x менше, ніж y." x
> Y "є true тоді і тільки тоді, коли x більше, ніж y.
"x = y" є true тоді і тільки тоді, коли x НЕ
менше, ніж y.
Числа порівнюються відповідно до їх алгебраїчними значеннями.
Порівняння двох символьних рядків визначається через порівняння
() З однаковими порядковими позиціями.
Якщо рядки не мають однакову довжину, то порівняння проводиться з робочою
копією коротшою рядки, доповненої справа пробілами
таким чином, щоб вона мала довжину, що дорівнює довжині іншого рядка.
Два рядки рівні, якщо всі () з
однаковими порядковими позиціями збігаються. Якщо два рядки не рівні, то
їхнє ставлення визначається на основі порівняння першої пари нерівних
() З лівого кінця рядків. Це порівняння
проводиться відповідно до визначеної у реалізації
послідовністю зіставлення.
Хоча "x = y" є unknown, якщо x і y є
невизначеними значеннями, в контекстах GROUP BY, ORDER BY і DISTINCT
невизначений значення ідентичне або є дублікатом іншого
невизначеного значення.
()
Функція b> p>
специфікує порівняння з інтервалом. p>
Формат b> p>
:: = [NOT] BETWEEN AND
Синтаксичні правила b> p>
Типи даних усіх трьох
() Повинні бути порівнянними.
Загальні правила b> p>
Нехай x, y і z позначають результати першого, другого і третього
(),
відповідно.
Результат "x BETWEEN y AND z" той же самий, що й
результат "x> = y AND x