Классика баз данных - статьи

       

Здесь мы предлагаем упрощенную версию


Здесь мы предлагаем упрощенную версию BNF-синтаксиса для SEQUEL 2. Акцент сделан на читаемости, а не на строгости, поэтому были допущены некоторые незначительные неоднозначности. Опущены некоторые возможности, которые присущи конкретно System R. Они относятся к массовой загрузке данных и управлению физическими сегментами. Кроме того, синтаксис допускает образование некоторых операторов, которые семантически бессмысленны. Более полный, но менее читаемый синтаксис используется в настоящее время в проекте System R.

В этой нотации квадратные скобки [] обозначают необязательные конструкции. Разделы, которые описывают операторы запросов, определения, манипулирования и контроля данных, относятся как к встраиваемому, так и к автономному вариантам языка. Последний раздел, который описывает операции с курсором, предназначен для использования в режиме встраивания в основной язык.

statement ::= query | dml-statement | ddl-statement | control-statement | cursor-statement

dml-statement ::= assignment | insertion | deletion | update

query ::= query-expr [ ORDER BY ord-spec-list ]

assignment ::= ASSIGN TO receiver : query-expr | ASSIGN TO receiver : CURSOR cursor-name

receiver ::= table-name [ (field-name-list) ]

field-name-list ::= field-name | field-name-list, field-name

insertion ::= INSERT INTO receiver : insert-spec

insert-spec ::= query-expr | lit-tuple

deletion ::= DELETE table-name [ var-name ] [ where-clause ]

update ::= UPDATE table-name [ var-name ] SET set-clause-list [ where-clause ]

where-clause ::= WHERE boolean | WHERE CURRENT OF cursor-name

set-clause-list ::= set-clause | set-clause-list, set-clause

set-clause ::= field-name = expr | field-name = ( query-block )

query-expr ::= query-block | query-expr set-op query-block | ( query-expr )

set-op ::= INTERSECT | UNION | MINUS

query-block ::= select-clause [ INTO target-list ] FROM from-list [ WHERE boolean ] [ GROUP BY field-spec-list [ HAVING boolean ] ]

select-clause ::= SELECT [ UNIQUE ] sel-expr-list | SELECT [ UNIQUE ] *


Содержание  Назад  Вперед