| ADD table-constraint-definition
| ALTER [
COLUMN ]
column-definition
| DROP [
COLUMN ]
column-name
| DROP CONSTRAINT constraint-name
| MODIFY [
COLUMN ]
column-definition
alter-option-list2 ::=
PSQL_MOVE [
COLUMN ]
column-name TO [ [
PSQL_PHYSICAL ]
PSQL_POSITION ]
new-column-position |
RENAME COLUMN column-name TO new-column-name
| REFERENCES table-name [ (
column-name ) ] [
referential-actions ]
column-definition ::=
column-name data-type [
DEFAULT Expression ] [
column-constraint [
column-constraint ]... [
CASE |
COLLATE collation-name ]
data-type ::=
data-type-name [ (
precision [ ,
scale ] ) ]
index-definition ::= ( index-segment-definition [ , index-segment-definition ]... )
index-number ::= user-defined-value (an integer between 0 and 118)
join-definition ::=
table-reference [
INNER ]
JOIN table-reference ON search-condition
| table-reference CROSS JOIN table-reference
password ::=
user-defined-name | 'string'
predicate ::=
expression [
NOT ]
BETWEEN expression AND expression
| expression comparison-operator expression-or-subquery
| expression [
NOT ]
IN (
query-specification )
| expression [
NOT ]
IN (
value [ ,
value ]... )
| expression [
NOT ]
LIKE value
| expression IS [
NOT ]
NULL
| expression comparison-operator ANY (
query-specification )
| expression comparison-operator ALL (
query-specification )
| EXISTS (
query-specification )
proc-expr ::= same as normal expression but does not allow IF expression, or ODBC-style scalar functions
proc-search-condition ::= same as normal search-condition, but does not allow any expression that includes a subquery.
proc-stmt ::=
[ label-name : ] BEGIN [ ATOMIC ] [ proc-stmt [ ; proc-stmt ]...
] END [ label-name ]
| CALL procedure-name ( proc-expr [ , proc-expr ]...
)
| DECLARE cursor-name CURSOR FOR select-statement [ FOR UPDATE | FOR READ ONLY ]
| DECLARE variable-name data-type [ DEFAULT proc-expr | = proc-expr ]
| DELETE WHERE CURRENT OF cursor-name
| FETCH [ fetch-orientation [ FROM ] ] cursor-name [ INTO variable-name [ , variable-name ] ]
| IF proc-search-condition THEN proc-stmt [ ; proc-stmt ]... [ ELSE proc-stmt [ ; proc-stmt ]... ] END IF
| IF proc-search-condition proc-stmt [ELSE proc-stmt]
| [ label-name : ] LOOP proc-stmt [ ; proc-stmt ]... END LOOP [ label-name ]
| PRINT proc-expr [ , 'string' ]
| select-statement-with-into
| SET variable-name = proc-expr
| SIGNAL [ ABORT ] sqlstate-value
| START TRANSACTION [tran-name]
| UPDATE SET column-name = proc-expr [ , column-name = proc-expr ]... WHERE CURRENT OF cursor-name
| [ label-name : ] WHILE proc-search-condition DO [ proc-stmt [ ; proc-stmt ] ]... END WHILE [ label-name ]
| [ label-name : ]
WHILE proc-search-condition proc-stmt
[ ORDER BY order-by-expression [ ,
order-by-expression ]... ] [
FOR UPDATE ]
FROM table-reference [ ,
table-reference ]...
[ WHERE search-condition ]
| NEW [
AS ]
correlation-name [
OLD [
AS ]
correlation-name ]
| referential-delete-action [
referential-update-action ]
result ::= user-defined-name data-type
| search-condition OR search-condition
select-item ::=
expression [ [
AS ]
alias-name ] |
table-name . *
| COUNT ( [
DISTINCT |
ALL ]
expression )
| SUM ( [
DISTINCT |
ALL ]
expression )
| AVG ( [
DISTINCT |
ALL ]
expression )
| MIN ( [
DISTINCT |
ALL ]
expression )
| MAX ( [
DISTINCT |
ALL ]
expression )
| STDEV ( [
DISTINCT |
ALL ]
expression )
| PRIMARY KEY (
column-name [ ,
column-name ]... )
| FOREIGN KEY (
column-name [ ,
column-name ] )
[ ( column-name [ ,
column-name ]... ) ]
| table-constraint-definition
FROM table-reference [ ,
table-reference ]...
[ WHERE search-condition ]
[ GROUP BY expression [ ,
expression ]...
[ HAVING search-condition ]
| SELECT [ (
column-name [ ,
column-name ]... ) ]
| UPDATE [ (
column-name [ ,
column-name ]... ) ]
| INSERT [ (
column-name [ ,
column-name ]... ) ]
| [db-name.]
table-name [ [
AS ]
alias-name ]
table-subquery ::=
query-specification [ [
UNION [
ALL ]
query-specification ]... ][
ORDER BY order-by-expression [ ,
order-by-expression ]... ]
value ::=
literal |
USER | ?
values-clause ::=
DEFAULT VALUES |
VALUES (
expression [ ,
expression ]... )
|DECLARE CURSOR Statement
|DECLARE Variable Statement
|RELEASE SAVEPOINT Statement
|START TRANSACTION Statement
|Expression [
NOT ]
BETWEEN Expression AND Expression
|Expression [
NOT ]
LIKE StringLiteral
|Expression IS [
NOT ]
NULL
|'(' Predicate ')'
CompareOperator ::= '=' | '>=' | '>' | '<=' | '<' | '<>' | '!='
|CONVERT '('
Expression ','
DataType ')'
|Expression '+'
Expression
|Expression '-'
Expression
|Expression '*'
Expression
|Expression '/'
Expression
|Expression '&'
Expression
|Expression '|'
Expression
|Expression '^'
Expression
|FunctionName '(' [
ExpressionList ] ')'