Im Folgenden sind die im Handbuch in den Kapiteln 3 bis 6 definierten grundlegenden Syntaxelemente in alphabetischer Reihenfolge zusammengestellt.
Für diese Syntaxelemente wird in der Syntax der SQL-Anweisungen nur ihre Bezeichnung (das ist der Name links vom Definitionszeichen „::=“) angegeben.
abfrageausdruck ::=
[ abfrageausdruck { UNION [ALL | DISTINCT] | EXCEPT [DISTINCT] }]
{ select_ausdruck | TABLE tabelle | join_ausdruck | ( abfrageausdruck ) }
aggregat ::= <{ wert | NULL }, . . . >
alphanumerisches_literal ::=
{ '[ zeichen ...]'[ trenner ...'[ zeichen ...]']... |
X'[ hex hex ]...'[ trenner ...'[ hex hex ]...']... }
hex ::= 0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f|A|B|C|D|E|F
annotation ::= /*% annotation_text %*/
anweisungsbezeichner ::= einf_name
argumente ::= siehe user_defined_function
ausdruck ::=
{
wert |
[ tabelle .] { spalte | { spalte ( posnr ) | spalte[posnr] } | { spalte ( min..max ) | spalte[min..max] } } |
funktion |
unterabfrage |
un_op ausdruck |
ausdruck bin_op ausdruck |
case_ausdruck |
cast_ausdruck |
( ausdruck )
}
spalte ::= einf_name
posnr ::= vorzeichenlose_ganzzahl
min ::= vorzeichenlose_ganzzahl
max ::= vorzeichenlose_ganzzahl
un_op ::= { + | - }
bin_op ::= { * | / | + | = | || }
berechtigungsschlüssel ::= einf_name
buchstabe ::= siehe einf_name
case_ausdruck ::=
| |
| |
|
cast_ausdruck ::= CAST ({ ausdruck | NULL } AS datentyp )
catalog ::= einf_name
datentyp ::=
{
[{[ dimension ] | ( dimension )}] CHAR[ACTER][( länge )] |
CHAR[ACTER] VARYING( max ) | VARCHAR( max ) |
[{[ dimension ] | ( dimension ) }] { NATIONAL CHAR[ACTER] | NCHAR } [ ( cu_länge [CODE_UNITS])] |
{ NATIONAL CHAR[ACTER] VARYING | NCHAR VARYING | NVARCHAR } ( cu_max [CODE_UNITS]) |
[{[ dimension ] | ( dimension )}]
{
SMALLINT |
INT[EGER] |
NUMERIC [( stellen [, bruchteil ])] |DEC[IMAL][( stellen [, bruchteil ])] |
REAL |
DOUBLE PRECISION |
FLOAT [( stellen )] |
DATE |
TIME (3) |
TIMESTAMP (3)
}
}
einf_basistabellenname ::= einf_name
einf_bedingungsname ::= einf_name
einf_indexname ::= einf_name
einf_name ::= { regulärer_name | spezialname }
regulärer_name ::= buchstabe [ { buchstabe | ziffer | _ } ] ...
spezialname ::= " zeichen... "
buchstabe ::= 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|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
ziffer ::= 0|1|2|3|4|5|6|7|8|9
einf_schemaname ::= einf_name
einf_spacename ::= einf_name
einf_stogroupname ::= einf_name
einf_viewname ::= einf_name
festpunktzahl ::= siehe numerisches_literal
funktion ::= { zeitfunktion | zeichenkettenfunktion | numerische_funktion | mengenfunktion | tabellenfunktion | kryptofunktion | user_defined_function }
ganzzahl ::= siehe numerisches_literal
gleitpunktzahl ::= siehe numerisches_literal
hex ::= siehe alphanumerisches_literal
index ::= siehe qualifizierter_name
integritätsbedingungsname ::= siehe qualifizierter_name
join_ausdruck ::=
{
tabellenangabe CROSS JOIN tabellenangabe |
tabellenangabe [ INNER | { LEFT | RIGHT | FULL } [OUTER] ]
JOIN tabellenangabe ON suchbedingung |
tabellenangabe UNION JOIN tabellenangabe |
( join_ausdruck )
}
korrelationsname ::= einf_name
kryptofunktion ::= { ENCRYPT ( ausdruck , schlüssel ) | DECRYPT ( ausdruck2 , schlüssel , datentyp ) }
schlüssel ::= ausdruck
literal ::= { alphanumerisches_literal | national_literal | spezial_literal | numerisches_literal | zeit_literal }
max ::= vorzeichenlose_ganzzahl
mengenfunktion ::= { operator ([ ALL | DISTINCT ] ausdruck ) | COUNT(*) }
operator ::= {AVG | COUNT | MAX | MIN | SUM }
min ::= vorzeichenlose_ganzzahl
modifikatoren ::= siehe praedikat
muster ::= siehe praedikat
national_literal ::=
|
|
uc-zeichen ::= { zeichen | esc 4hex | esc+ 6hex | esc esc }
numerische_funktion ::=
{
ABS ( ausdruck ) |
CEIL[ING] ( ausdruck ) |
FLOOR ( ausdruck ) |
MOD ( dividend,divisor ) |
SIGN ( ausdruck ) |
{ CHAR_LENGTH | CHARACTER_LENGTH } ( ausdruck [USING { CODE_UNITS | OCTETS }]) |
OCTET_LENGTH ( ausdruck ) |
POSITION ( ausdruck IN ausdruck [USING CODE_UNITS]) |
JULIAN_DAY_OF_DATE ( ausdruck ) |
EXTRACT ( bestandteil FROM ausdruck )
}
numerisches_literal ::= { ganzzahl | festpunktzahl | gleitpunktzahl }
ganzzahl ::= [{+|-}] vorzeichenlose_ganzzahl [.]
festpunktzahl ::= [{+|-}] { vorzeichenlose_ganzzahl [. vorzeichenlose_ganzzahl ] | vorzeichenlose_ganzzahl . | . vorzeichenlose_ganzzahl }
gleitpunktzahl ::= festpunktzahl E[{+|-}] vorzeichenlose_ganzzahl
vorzeichenlose_ganzzahl ::= ziffer ...
operand ::= siehe praedikat
praedikat ::=
{
zeile vergleichs_op zeile |
vektor_spalte vergleichs_op ausdruck |
zeile vergleichs_op { ALL | SOME | ANY } unterabfrage |
zeile [NOT] BETWEEN zeile AND zeile |
vektor_spalte [NOT] BETWEEN ausdruck AND ausdruck |
ausdruck IS [NOT] CASTABLE AS datentyp |
zeile [NOT] IN { unterabfrage | ( zeile ,...) } |
vektor_spalte [NOT] IN ( ausdruck , ausdruck ,...) |
operand [NOT] LIKE muster [ESCAPE zeichen ...] |
operand [NOT] LIKE_REGEX regulärer_ausdruck [FLAG modifikatoren ] |
ausdruck IS [NOT] NULL |
EXISTS unterabfrage
}
zeile ::= { ( ausdruck ,...) | ausdruck | unterabfrage }
vektor_spalte ::= [ tabelle .]{ spalte[min..max] | spalte ( min..max ) }
vergleichs_op ::= { = | < | > | <= | >= | <> }
operand ::= ausdruck
muster ::= ausdruck
zeichen ::= ausdruck
regulärer_ausdruck ::= ausdruck
modifikatoren ::= ausdruck
pragma ::= --%PRAGMA pragma_text ,... zeilenende
qualifizierter_name ::=
{
index |
integritätsbedingungsname |
routine |
schema |
space |
stogroup |
tabelle
}
index ::= [[ catalog .] einf_schemaname .] einf_indexname
integritätsbedingungsname ::= [[ catalog .] einf_schemaname .] einf_bedingungsname
routine ::= [[ catalog .] einf_schemaname .] einf_routinenname
schema ::= [ catalog .] einf_schemaname
space ::= [ catalog .] einf_spacename
stogroup ::= [ catalog .] einf_stogroupname
tabelle ::=
{
[[ catalog .] einf_schemaname .] einf_basistabellenname |
[[ catalog .] einf_schemaname .] einf_viewname |
korrelationsname
}
regulaerer Ausdruck ::= siehe praedikat
regulärer_name ::= siehe einf_name
routine ::= siehe qualifizierter_name
routinenparameter ::= einf_name
schema ::= siehe qualifizierter_name
schlüssel ::= siehe kryptofunktion
select_ausdruck ::=
SELECT [ALL | DISTINCT] select_liste
FROM tabellenangabe ,...
[WHERE suchbedingung ]
[GROUP BY spalte ,...]
[HAVING suchbedingung ]
select_liste ::= { * | { tabelle .* | ausdruck [[AS] spalte ] } }
space ::= siehe qualifizierter_name
spalte ::= siehe ausdruck
spaltenbedingung ::=
{
NOT NULL |
UNIQUE |
PRIMARY KEY |
REFERENCES tabelle [( spalte )] |
CHECK ( suchbedingung )
}
spaltendefinition ::=
spalte { datentyp [ voreinstellung ] | FOR REF( tabelle ) }
[[CONSTRAINT integritätsbedingungsname ] spaltenbedingung ] ...
[ call_dml_klausel ]
voreinstellung ::= DEFAULT
{
alphanumerisches_literal |
national_literal |
numerisches_literal |
zeit_literal |
CURRENT_DATE |
CURRENT_TIME(3) |
LOCALTIME(3) |
CURRENT_TIMESTAMP(3) |
LOCALTIMESTAMP(3) |
USER |
CURRENT_USER |
SYSTEM_USER |
NULL |
REF( tabelle )
}
call_dml_klausel ::= CALL DML call_dml_voreinst [ call_dml_symb_name ]
spezial_literal ::=
{
CURRENT_CATALOG |
CURRENT_ISOLATION_LEVEL |
CURRENT_REFERENCED_CATALOG |
CURRENT_SCHEMA |
[CURRENT_]USER |
SYSTEM_USER
}
spezialname ::= siehe einf_name
stogroup ::= siehe qualifizierter_name
suchbedingung ::=
{ praedikat | suchbedingung { AND | OR } suchbedingung | NOT suchbedingung
| (
suchbedingung
) }
tabelle ::= siehe qualifizierter_name
tabellenangabe ::=
{
tabelle [[AS] korrelationsname [( spalte , ...)]] |
unterabfrage [AS] korrelationsname [( spalte , ...)] |
TABLE([ catalog .] tabellenfunktion ) [WITH ORDINALITY] [[AS] korrelationsname [( spalte , ...)]] |
join_ausdruck
}
tabellenbedingung ::=
{
UNIQUE ( spalte ,...) |
PRIMARY KEY ( spalte ,...) |
FOREIGN KEY ( spalte ,...) REFERENCES tabelle [( spalte ,...)] |
CHECK ( suchbedingung )
}
tabellenfunktion ::=
{ CSV ([FILE] datei DELIMITER delimiter [QUOTE quote ] [ESCAPE escape ], datentyp ,...) | DEE [()] }
unterabfrage ::= ( abfrageausdruck )
user_defined_function ::= einf_routinenname argumente
argumente ::= ([ ausdruck [{, ausdruck }...]])
vektor_spalte ::= siehe praedikat
vergleichs_op ::= siehe praedikat
voreinstellung ::= siehe spaltendefinition
vorzeichenlose_ganzzahl ::= siehe numerisches_literal
wert ::=
{
literal |
: benutzervariable [[INDICATOR] : indikatorvariable ] |
routinenparameter |
lokale_variable |
?
}
zeichen ::= siehe praedikat
zeichenkettenfunktion ::=
| |
| |
|
zeichen ::= ausdruck
länge ::= vorzeichenlose_ganzzahl
zeitfunktion ::=
{
CURRENT_DATE |
CURRENT_TIME(3) |
LOCALTIME(3) |
CURRENT_TIMESTAMP(3) |
LOCALTIMESTAMP(3) |
DATE_OF_JULIAN_DAY ( ausdruck )
}
zeit_literal ::=
{
DATE ' jahr-monat-tag ' |
TIME ' stunde:minute:sekunde '
TIMESTAMP' jahr-monat-tag stunde:minute:sekunde '
}
zeile ::= siehe praedikat
ziffer ::= siehe einf_name