Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Syntaxelemente von SESAM/SQL

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.

In der Syntax kursiv gedruckte eckige Klammern sind Sonderzeichen und müssen in der Anweisung angegeben werden.


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 ::=

{



CASE

WHEN suchbedingung THEN { ausdruck | NULL }
...

[ELSE { ausdruck | NULL }]
END |


CASE ausdruckx
WHEN ausdruck1 [, ausdruck2 ] ... THEN { ausdruck | NULL }
...

[ELSE { ausdruck | NULL }]

END |


NULLIF ( ausdruck1 , ausdruck2 ) |


COALESCE ( ausdruck1 , ausdruck2, ... ausdruckn ) |


{ MIN | MAX }( ausdruck1,ausdruck2, ..., ausdruckn )

}



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 ::=

{

N'[ zeichen ...]'[ trenner ...'[ zeichen ...]'] ... |
NX'[ 4hex ...]'[ trenner ...'[ 4hex ...]'] ...|
U&'[ uc-zeichen ...]'[ trenner... '[ uc-zeichen '...] ... [UESCAPE' esc '] }

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 ::=

{



SUBSTRING ( ausdruck FROM  startposition [FOR  teilkettenlänge ][USING CODE_UNITS]) |
TRANSLATE ( ausdruck USING [[ catalog .]INFORMATION_SCHEMA.] transname [DEFAULT zeichen ] [ ,länge ]) |
TRIM ([[LEADING |TRAILING | BOTH] [ zeichen ] FROM] ausdruck ) |
LOWER ( ausdruck ) |
UPPER ( ausdruck ) |
HEX_OF_VALUE ( ausdruck2 ) |
VALUE_OF_HEX ( ausdruck3 , datentyp ) |
REP_OF_VALUE ( ausdruck2 ) |
VALUE_OF_REP ( ausdruck3 , datentyp ) |
COLLATE ( ausdruck USING { DUCET_WITH_VARS | DUCET_NO_VARS } [ ,länge ]) |
NORMALIZE ( ausdruck [,NFC | NFD [, länge ]])

}


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