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