Download SQL

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
The SQL Database Grammar
CSE
4100
BNF Grammar for SQL
/*
The grammar rules that follow have been taken from
/*
"System R", Appendix II, M.M. Astrahan, et al., ACM Trans.
/*
on Database Systems, Vol. 1, No. 2, June 1976.
/*
The rules given below in BNF have the following assumptions:
/*
(1) all non-terminals are in lower-case,
/*
(2) all terminals (recognized by LEX/lex.yy.c) are in upper-case,
<statement>
::= <dml-statement>
|
<ddl-statement>
<dml-statement>
::=
|
|
|
<selection>
<insertion>
<deletion>
<update>
<selection>
::=
<select-clause> FROM <from-list>
<where-clause> <grp-ord-clause>
<select-clause>
::=
SELECT
<select-list>
::=
|
<sel-expr-list>
MULT-OP
<sel-expr-list>
::=
|
<sel-expr>
<sel-expr-list>
::=
<expr>
<sel-expr>
<select-list>
COMMA
<sel-expr>
SQL.1
*/
*/
*/
*/
*/
*/
The SQL Database Grammar
<from-list>
CSE
4100
<where-clause>
::=
|
<table-name>
<from-list> COMMA
::=
|
<empty>
WHERE <boolean>
<table-name>
<nested-select>
<nested-select>
::= <empty>
| <and-or> <table-name> <comparison> LPAR
<selection> RPAR
<grp-ord-clause>
::=
|
|
<empty>
GROUP BY
ORDER BY
<insertion>
::=
INSERT INTO <receiver> COLON <insert-spec-source>
<receiver>
::=
<table-name>
<insert-spec-target>
::=
|
<empty>
LPAR <field-name-list>
::=
|
<field-name >
<field-name-list>
COMMA
<field-name>
::=
|
<field-name >
<field-name-list>
COMMA
<field-name>
::=
<literal>
<field-name-list>
<field-name-list>
<insert-spec-source>
<field-spec-list>
<field-spec-list>
<insert-spec-target>
RPAR
SQL.2
The SQL Database Grammar
<deletion>
CSE
4100 <update>
::=
DELETE
<table-name>
<where-clause>
::=
UPDATE <table-name> <set-clause-list> <where-clause>
<set-clause-list>
::=
<set-clause>
<set-clause>
::=
SET
<boolean>
::=
|
<boolean-term>
<boolean> OR <boolean-term>
<boolean-term>
::=
|
<boolean-factor>
<boolean-term> AND
<boolean-factor>
::=
<boolean-primary>
<boolean-primary>
::=
<predicate>
<predicate>
::=
<expr>
<comparison>
::=
<comp-op>
<comp-op>
::=
|
|
EQ
<relat-op>
<in-notin>
::=
|
<empty>
<all-any>
<all-any-opt>
<field-name>
EQ
<comparison>
<expr>
<boolean-factor>
<table-spec>
<all-any-opt>
SQL.3
The SQL Database Grammar
CSE
4100
<all-any>
::=
ALL
|ANY
<in-notin>
::=
IN
|NOT IN
<relat-op>
::=
NE
|RWEDGE
<table-spec>
::=
|
<literal>
<expr>
<literal>
::=
|
<lit-tuple>
LPAR <entry-list>
::=
|
<entry>
LWEDGE <entry-list>
::=
|
<entry>
<entry-list>
::=
::=
|
<constant>
<arith-term >
<expr> ADD-OP
::=
|
<arith-factor>
<arith-term> MULT-OP
::=
::=
::=
<opt-add-op> <primary>
<empty> |ADD-OP
AND |OR
<lit-tuple>
<entry-list>
<entry>
<expr>
<arith-term>
<arith-factor>
<opt-add-op>
<and-or>
|GE
|LWEDGE
COMMA
|LE
RPAR
RWEDGE
<entry>
<arith-term>
<arith-factor>
SQL.4
The SQL Database Grammar
<primary>
CSE
4100
::=
|
|
|
<field-spec>
<set-fn> LPAR <expr>
LPAR <expr> RPAR
<constant>
RPAR
<field-spec-list>
::=
<field-spec>
<field-spec>
::=
|
<field-name>
<table-name>
<set-fn>
::=
AVG
<constant>
::=
|
QUOTE <constant-value>
INTEGER
<constant-value>
::=
IDENTIFIER
<field-name>
::=
IDENTIFIER
<table-name>
::=
IDENTIFIER
<empty>
::=
EPSILON
|MAX
DOT
|MIN
<field-name>
|SUM
|COUNT
QUOTE
|VALUE
SQL.5
The SQL Database Grammar
CSE
4100
<ddl-statement>
::=
<create-table>
<create-table>
::=
CREATE TABLE <table-name>
<field-defn-list>
<field-defn-list>
::=
|
<field-defn>
<field-defn-list>
<field-defn>
::=
<field-name>
<type>
::=
|
|
CHAR LPAR INTEGER RPAR
INT LPAR INTEGER RPAR
FLOAT LPAR INTEGER RPAR
<null-opt>
::=
|
<empty>
COMMA NONULL
LPAR
COMMA
COLON
<field-defn>
<type>
<null-opt>
RPAR
SQL.6
Related documents