Дейт К. Д27 Руководство по реляционной субд db2/ Пер с англ и предисл. М. Р. Когаловского

Вид материалаРуководство
Приложение с синтаксис операций манипулирования данными языка sql c.1. введение
С.2. имена
С.з. скалярные выражения
С.4. выражения селекции
С.5. предикаты
С.6. предложения манипулирования данными
Подобный материал:
1   ...   26   27   28   29   30   31   32   33   34

ПРИЛОЖЕНИЕ С

СИНТАКСИС ОПЕРАЦИЙ МАНИПУЛИРОВАНИЯ ДАННЫМИ ЯЗЫКА SQL




C.1. ВВЕДЕНИЕ



В данном разделе приводится представленная в виде нормальных форм Бэкуса (Язык нормальных форм Бэкуса — формальный метаязык, используемый для описания синтаксиса различных языков программирования, языков описания данных и других искусственных языков. Впервые был предложен Д. Бэкусом для описания синтаксиса алгоритмического языка АЛГОЛ-60.— Примеч. пер.) грамматика четырех операций манипулирования данными языка SQL (SELECT, UPDATE, DELETE и INSERT), описанных в этой книге. В этой грамматике используется следующее удобное сокращение:

— Если «xyz» — какая-либо синтаксическая категория, то «список-xyz» — это синтаксическая категория, которая представляет собой список, состоящий из одной или более «xyz». При этом каждая пара смежных «xyz» в списке разделяется последовательностью литер, включающей запятую, а также, возможно, предшествующие ей и следующие за ней один или более пробелов.

Категории «идентификатор», «константа» и «целое» являются по отношению к этой грамматике терминальными.

Примечание. Не описанные в тексте этой книги аспекты четырех рассматриваемых предложений, например операторы сравнения >ANY, =ALL и др., игнорируются. Кроме того, в интересах ясности и краткости предлагаемая грамматика не отражает точно диалекта языка SQL, поддерживаемого системой DB2, и является в некоторой степени нестрогой в том смысле, что она допускает генерацию определенных конструкций, которые оказываются недопустимыми в DB2. Она позволяет, например, использовать в качестве аргумента такой функции, как AVG, ссылку на другую функцию, скажем, SUM, что не допускается в DB2.

С.2. ИМЕНА



имя — таблицы : : = имя — базовой — таблицы

| имя — представления | псевдоним ) синоним

имя — базовой — таблицы : : = [имя — пользователя.] идентификатор

имя — пользователя : : = идентификатор

имя — представления : : = [имя — пользователя.] идентификатор

псевдоним : : = идентификатор

синоним : : = идентификатор

имя—столбца : := [имя—таблицы.] идентификатор

С.З. СКАЛЯРНЫЕ ВЫРАЖЕНИЯ



скалярное — выражение

. : : скалярный—терм [арифметический—оператор скалярное — выражение]

скалярный — терм : : = [+ | –] скалярное — значение

скалярное — значение : : = имя — столбца

| ссылка — на — функцию | константа | USER

| (скалярное — выражение)

ссылка — на — функцию : : = COUNT (*)

| имя — функции (скалярное — выражение)

| имя — функции (DISTINCT имя — столбца)

имя — функции : : = COUNT | SUM|AVG | MAX | MIN

арифметический — оператор : : = + | – |*|/

С.4. ВЫРАЖЕНИЯ СЕЛЕКЦИИ



выражение — селекции : : = фраза — select

фраза — from

[фраза — where]

[фраза — группирования [фраза — having]]

фраза — select : : == SELECT [DISTINCT] спецификация — селекции

спецификация — селекции : : = * | список — элемент — селекции

элемент — селекции : : = имя — таблицы.*

| скалярное выражение

фраза — from : : = FROM список — элемент — from

элемент — from : : = имя — таблицы [псевдоним]

фраза — where : : = WHERE предикат

фраза — группирования : : = GROUP BY список — имя — столбца

фраза — having : : = HAVING предикат

С.5. ПРЕДИКАТЫ



предикат

: : = условие

|условие AND предикат

|условие OR предикат

|NOT предикат

условие

: : = условие — сравнения

| условие — between

|условие — like

|условие — in

|условие — exists

условие — сравнения

: : = скалярное — выражение оператор — сравнения скалярное — выражение

|скалярное — выражение оператор — сравнения

(выражение — селекции — для — столбца)

[скалярное—выражение IS [NOT] NULL

оператор – сравнения

: : =+| ¬=| < | ¬ < | <= | > | ¬ > | > =

выражение — селекции — для — столбца

: : = фраза — селекции — для — столбца

фраза — from

[ фраза — where]

[фраза — группирования [фраза — having]]

фраза — селекции — для — столбца

: : = SELECT [DISTINCT] скалярное — выражение

условие — between

: : = имя — столбца [NOT] BETWEEN скалярное — выражение

AND скалярное — выражение условие — like

: : = имя — столбца [NOT] LIKE скалярное — выражение

условие — in

: : = скалярное выражение [NOT] IN (множество — скаляров)

множество — скаляров

: : = список — константа

| выражение — селекции — для — столбца

условие — exists

: := EXISTS (выражение—селекции)

С.6. ПРЕДЛОЖЕНИЯ МАНИПУЛИРОВАНИЯ ДАННЫМИ



предложение

: : = предложение — select

| предложение — update

| предложение — delete

| предложение — insert

предложение — select

: : = выражение — union [фраза — упорядочения];

выражение — union

: : = выражение — селекции [UNION выражение — union]

фраза — упорядочения

: : = ORDER BY список — элемент — упорядочения

элемент — упорядочения

: : = упорядочиваемый — столбец [ASC ] DESC]

упорядочиваемый — столбец

: : = имя — столбца | целое

предложение — update

: : = UPDATE имя — таблицы [псевдоним]

SET список — присваивание — столбцу [фраза — where];

присваивание — столбцу

: : = имя — столбца = скалярное — выражение

| имя — столбца = NULL

предложение — delete

: : = DELETE FROM имя — таблицы [псевдоним] [фраза — where]

предложение — insert

: : = INSERT INTO имя — таблицы (список — имя — столбца)

исходные — значения;

исходные — значения

: : = VALUES (список — элемент — вставки)

| выражение — селекции

элемент — вставки

: : = константа | NULL