abort abort :: = ABORT [ TRANSACTION | WORK ]
ABORT TRANSACTION WORK
alter_database alter_database :: = ALTER DATABASE name
[ [ WITH ] alter_database_option [ ... ]
| RENAME TO name
| OWNER TO { new_owner
| CURRENT_USER
| SESSION_USER }
| SET run_time_parameter { TO | = }
{ value | DEFAULT }
| SET run_time_parameter FROM CURRENT
| RESET run_time_parameter
| RESET ALL ]
ALTER DATABASE name WITH alter_database_option RENAME TO name OWNER TO new_owner CURRENT_USER SESSION_USER SET run_time_parameter TO = value DEFAULT SET run_time_parameter FROM CURRENT RESET run_time_parameter RESET ALL
alter_database_option alter_database_option :: = ALLOW_CONNECTIONS allowconn
| CONNECTION LIMIT connlimit
| IS_TEMPLATE istemplate
ALLOW_CONNECTIONS allowconn CONNECTION LIMIT connlimit IS_TEMPLATE istemplate
allowconn allowconn :: = TRUE | FALSE
TRUE FALSE
istemplate istemplate :: = TRUE | FALSE
TRUE FALSE
connlimit connlimit :: = int_literal
int_literal
alter_default_priv alter_default_priv :: = ALTER DEFAULT PRIVILEGES
[ FOR { ROLE | USER } role_name [ , ... ] ]
[ IN SCHEMA schema_name [ , ... ] ]
abbr_grant_or_revoke
ALTER DEFAULT PRIVILEGES FOR ROLE USER , role_name IN SCHEMA , schema_name abbr_grant_or_revoke
abbr_grant_or_revoke abbr_grant_or_revoke :: = a_grant_table
| a_grant_seq
| a_grant_func
| a_grant_type
| a_grant_schema
| a_revoke_table
| a_revoke_seq
| a_revoke_func
| a_revoke_type
| a_revoke_schema
a_grant_table a_grant_seq a_grant_func a_grant_type a_grant_schema a_revoke_table a_revoke_seq a_revoke_func a_revoke_type a_revoke_schema
a_grant_table a_grant_table :: = GRANT { grant_table_priv [ , ... ]
| ALL [ PRIVILEGES ] } ON TABLES TO
grantee_role [ , ... ] [ WITH GRANT OPTION ]
GRANT , grant_table_priv ALL PRIVILEGES ON TABLES TO , grantee_role WITH GRANT OPTION
grant_table_priv grant_table_priv :: = SELECT
| INSERT
| UPDATE
| DELETE
| TRUNCATE
| REFERENCES
| TRIGGER
SELECT INSERT UPDATE DELETE TRUNCATE REFERENCES TRIGGER
a_grant_seq a_grant_seq :: = GRANT { grant_seq_priv [ , ... ]
| ALL [ PRIVILEGES ] } ON SEQUENCES TO
grantee_role [ , ... ] [ WITH GRANT OPTION ]
GRANT , grant_seq_priv ALL PRIVILEGES ON SEQUENCES TO , grantee_role WITH GRANT OPTION
grant_seq_priv grant_seq_priv :: = USAGE | SELECT | UPDATE
USAGE SELECT UPDATE
a_grant_func a_grant_func :: = GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON
{ FUNCTIONS | ROUTINES } TO grantee_role [ , ... ]
[ WITH GRANT OPTION ]
GRANT EXECUTE ALL PRIVILEGES ON FUNCTIONS ROUTINES TO , grantee_role WITH GRANT OPTION
a_grant_type a_grant_type :: = GRANT { USAGE | ALL [ PRIVILEGES ] } ON TYPES TO
grantee_role [ , ... ] [ WITH GRANT OPTION ]
GRANT USAGE ALL PRIVILEGES ON TYPES TO , grantee_role WITH GRANT OPTION
a_grant_schema a_grant_schema :: = GRANT { USAGE | CREATE | ALL [ PRIVILEGES ] } ON
SCHEMAS TO grantee_role [ , ... ]
[ WITH GRANT OPTION ]
GRANT USAGE CREATE ALL PRIVILEGES ON SCHEMAS TO , grantee_role WITH GRANT OPTION
a_revoke_table a_revoke_table :: = REVOKE [ GRANT OPTION FOR ]
{ grant_table_priv [ , ... ] | ALL [ PRIVILEGES ] }
ON TABLES FROM grantee_role [ , ... ]
[ CASCADE | RESTRICT ]
REVOKE GRANT OPTION FOR , grant_table_priv ALL PRIVILEGES ON TABLES FROM , grantee_role CASCADE RESTRICT
a_revoke_seq a_revoke_seq :: = REVOKE [ GRANT OPTION FOR ]
{ grant_seq_priv [ , ... ] | ALL [ PRIVILEGES ] } ON
SEQUENCES FROM grantee_role [ , ... ]
[ CASCADE | RESTRICT ]
REVOKE GRANT OPTION FOR , grant_seq_priv ALL PRIVILEGES ON SEQUENCES FROM , grantee_role CASCADE RESTRICT
a_revoke_func a_revoke_func :: = REVOKE [ GRANT OPTION FOR ]
{ EXECUTE | ALL [ PRIVILEGES ] } ON
{ FUNCTIONS | ROUTINES } FROM grantee_role
[ , ... ] [ CASCADE | RESTRICT ]
REVOKE GRANT OPTION FOR EXECUTE ALL PRIVILEGES ON FUNCTIONS ROUTINES FROM , grantee_role CASCADE RESTRICT
a_revoke_type a_revoke_type :: = REVOKE [ GRANT OPTION FOR ]
{ USAGE | ALL [ PRIVILEGES ] } ON TYPES FROM
grantee_role [ , ... ] [ CASCADE | RESTRICT ]
REVOKE GRANT OPTION FOR USAGE ALL PRIVILEGES ON TYPES FROM , grantee_role CASCADE RESTRICT
a_revoke_schema a_revoke_schema :: = REVOKE [ GRANT OPTION FOR ]
{ USAGE | CREATE | ALL [ PRIVILEGES ] } ON SCHEMAS
FROM grantee_role [ , ... ]
[ CASCADE | RESTRICT ]
REVOKE GRANT OPTION FOR USAGE CREATE ALL PRIVILEGES ON SCHEMAS FROM , grantee_role CASCADE RESTRICT
alter_domain_default alter_domain_default :: = ALTER DOMAIN name
{ SET DEFAULT expression | DROP DEFAULT }
ALTER DOMAIN name SET DEFAULT expression DROP DEFAULT
alter_domain_rename alter_domain_rename :: = ALTER DOMAIN name RENAME TO name
ALTER DOMAIN name RENAME TO name
alter_function alter_function :: = ALTER FUNCTION subprogram_name (
[ subprogram_signature ] )
{ special_fn_and_proc_attribute
| { alterable_fn_and_proc_attribute
| alterable_fn_only_attribute } [ ... ]
[ RESTRICT ] }
ALTER FUNCTION subprogram_name ( subprogram_signature ) special_fn_and_proc_attribute alterable_fn_and_proc_attribute alterable_fn_only_attribute RESTRICT
special_fn_and_proc_attribute special_fn_and_proc_attribute :: = RENAME TO subprogram_name
| OWNER TO
{ role_name
| CURRENT_ROLE
| CURRENT_USER
| SESSION_USER }
| SET SCHEMA schema_name
| [ NO ] DEPENDS ON EXTENSION
extension_name
RENAME TO subprogram_name OWNER TO role_name CURRENT_ROLE CURRENT_USER SESSION_USER SET SCHEMA schema_name NO DEPENDS ON EXTENSION extension_name
alter_foreign_data_wrapper alter_foreign_data_wrapper :: = ALTER FOREIGN DATA WRAPPER fdw_name
[ HANDLER handler_name | NO HANDLER ]
[ VALIDATOR validator_name
| NO VALIDATOR ]
[ OPTIONS ( alter_fdw_options ) ]
[ OWNER TO new_owner ]
[ RENAME TO new_name ]
ALTER FOREIGN DATA WRAPPER fdw_name HANDLER handler_name NO HANDLER VALIDATOR validator_name NO VALIDATOR OPTIONS ( alter_fdw_options ) OWNER TO new_owner RENAME TO new_name
alter_foreign_table alter_foreign_table :: = ALTER FOREIGN TABLE [ IF EXISTS ] table_name
alter_foreign_table_action [ , ... ]
ALTER FOREIGN TABLE IF EXISTS table_name , alter_foreign_table_action
alter_foreign_table_action alter_foreign_table_action :: = ADD [ COLUMN ] column_name data_type
[ COLLATE collation ]
[ alter_column_constraint [ ... ] ]
| RENAME TO table_name
| DROP [ COLUMN ] column_name
[ RESTRICT | CASCADE ]
| OWNER TO new_owner
| OPTIONS ( alter_fdw_options )
ADD COLUMN column_name data_type COLLATE collation alter_column_constraint RENAME TO table_name DROP COLUMN column_name RESTRICT CASCADE OWNER TO new_owner OPTIONS ( alter_fdw_options )
alter_group alter_group :: = ALTER GROUP role_specification { ADD | DROP } USER
role_name [ , ... ]
ALTER GROUP role_specification ADD DROP USER , role_name
alter_group_rename alter_group_rename :: = ALTER GROUP role_name RENAME TO new_role_name
ALTER GROUP role_name RENAME TO new_role_name
alter_policy alter_policy :: = ALTER POLICY name ON table_name
[ TO { role_name
| PUBLIC
| CURRENT_USER
| SESSION_USER } [ , ... ] ]
[ USING ( using_expression ) ]
[ WITH CHECK ( check_expression ) ]
ALTER POLICY name ON table_name TO , role_name PUBLIC CURRENT_USER SESSION_USER USING ( using_expression ) WITH CHECK ( check_expression )
alter_policy_rename alter_policy_rename :: = ALTER POLICY name ON table_name RENAME TO
new_name
ALTER POLICY name ON table_name RENAME TO new_name
alter_procedure alter_procedure :: = ALTER PROCEDURE subprogram_name (
[ subprogram_signature ] )
{ special_fn_and_proc_attribute
| alterable_fn_and_proc_attribute [ ... ]
[ RESTRICT ] }
ALTER PROCEDURE subprogram_name ( subprogram_signature ) special_fn_and_proc_attribute alterable_fn_and_proc_attribute RESTRICT
alter_role alter_role :: = ALTER ROLE role_specification
[ [ WITH ] alter_role_option [ , ... ] ]
ALTER ROLE role_specification WITH , alter_role_option
alter_role_option alter_role_option :: = SUPERUSER
| NOSUPERUSER
| CREATEDB
| NOCREATEDB
| CREATEROLE
| NOCREATEROLE
| INHERIT
| NOINHERIT
| LOGIN
| NOLOGIN
| CONNECTION LIMIT connlimit
| [ ENCRYPTED ] PASSWORD ' password '
| PASSWORD NULL
| VALID UNTIL ' timestamp '
SUPERUSER NOSUPERUSER CREATEDB NOCREATEDB CREATEROLE NOCREATEROLE INHERIT NOINHERIT LOGIN NOLOGIN CONNECTION LIMIT connlimit ENCRYPTED PASSWORD password PASSWORD NULL VALID UNTIL timestamp
role_specification role_specification :: = role_name | CURRENT_USER | SESSION_USER
role_name CURRENT_USER SESSION_USER
alter_role_rename alter_role_rename :: = ALTER ROLE role_name RENAME TO new_role_name
ALTER ROLE role_name RENAME TO new_role_name
new_role_name name
alter_role_config alter_role_config :: = ALTER ROLE { role_specification | ALL }
[ IN DATABASE database_name ] config_setting
ALTER ROLE role_specification ALL IN DATABASE database_name config_setting
config_setting config_setting :: = SET config_param { TO | = }
{ config_value | DEFAULT }
| SET config_param FROM CURRENT
| RESET config_param
| RESET ALL
SET config_param TO = config_value DEFAULT SET config_param FROM CURRENT RESET config_param RESET ALL
config_param config_param :: = text_literal
text_literal
config_value config_value :: = text_literal
text_literal
alter_sequence alter_sequence :: = ALTER SEQUENCE [ IF EXISTS ] sequence_name
alter_sequence_options
ALTER SEQUENCE IF EXISTS sequence_name alter_sequence_options
alter_sequence_options alter_sequence_options :: = [ AS seq_data_type ]
[ INCREMENT [ BY ] int_literal ]
[ MINVALUE int_literal | NO MINVALUE ]
[ MAXVALUE int_literal | NO MAXVALUE ]
[ START [ WITH ] int_literal ]
[ RESTART [ [ WITH ] int_literal ] ]
[ CACHE int_literal ] [ [ NO ] CYCLE ]
[ OWNED BY { table_name . column_name
| NONE } ]
[ SET { LOGGED
| UNLOGGED
| SCHEMA schema_name } ]
[ OWNER TO { new_owner
| CURRENT_USER
| SESSION_USER } ]
[ RENAME TO new_name ]
AS seq_data_type INCREMENT BY int_literal MINVALUE int_literal NO MINVALUE MAXVALUE int_literal NO MAXVALUE START WITH int_literal RESTART WITH int_literal CACHE int_literal NO CYCLE OWNED BY table_name . column_name NONE SET LOGGED UNLOGGED SCHEMA schema_name OWNER TO new_owner CURRENT_USER SESSION_USER RENAME TO new_name
seq_data_type seq_data_type :: = 'smallint' | 'integer' | 'bigint'
smallint integer bigint
alter_server alter_server :: = ALTER SERVER server_name [ VERSION server_version ]
[ OPTIONS ( alter_fdw_options ) ]
[ OWNER TO new_owner ]
ALTER SERVER server_name VERSION server_version OPTIONS ( alter_fdw_options ) OWNER TO new_owner
server_name name
server_version name
alter_table alter_table :: = ALTER TABLE [ IF EXISTS ] table_expr
alter_table_action [ , ... ]
ALTER TABLE IF EXISTS table_expr , alter_table_action
alter_table_action alter_table_action :: = ADD [ COLUMN ] [ IF NOT EXISTS ] column_name
data_type [ alter_column_constraint [ ... ] ]
| RENAME TO table_name
| DROP [ COLUMN ] [ IF EXISTS ] column_name
[ RESTRICT | CASCADE ]
| ALTER [ COLUMN ] column_name [ SET DATA ]
TYPE data_type [ COLLATE collation ]
[ USING expression ]
| ADD alter_table_constraint
| DROP CONSTRAINT constraint_name
[ RESTRICT | CASCADE ]
| RENAME [ COLUMN ] column_name TO column_name
| RENAME CONSTRAINT constraint_name TO
constraint_name
| DISABLE ROW LEVEL SECURITY
| ENABLE ROW LEVEL SECURITY
| FORCE ROW LEVEL SECURITY
| SET { TABLESPACE tablespace_name
| LOGGED
| UNLOGGED
| ( param_name = param_value ) }
| RESET ( param_name )
| NO FORCE ROW LEVEL SECURITY
ADD COLUMN IF NOT EXISTS column_name data_type alter_column_constraint RENAME TO table_name DROP COLUMN IF EXISTS column_name RESTRICT CASCADE ALTER COLUMN column_name SET DATA TYPE data_type COLLATE collation USING expression ADD alter_table_constraint DROP CONSTRAINT constraint_name RESTRICT CASCADE RENAME COLUMN column_name TO column_name RENAME CONSTRAINT constraint_name TO constraint_name DISABLE ROW LEVEL SECURITY ENABLE ROW LEVEL SECURITY FORCE ROW LEVEL SECURITY SET TABLESPACE tablespace_name LOGGED UNLOGGED ( param_name = param_value ) RESET ( param_name ) NO FORCE ROW LEVEL SECURITY
alter_table_constraint alter_table_constraint :: = [ CONSTRAINT constraint_name ]
{ CHECK ( expression )
| UNIQUE ( column_names )
index_parameters
| FOREIGN KEY ( column_names )
references_clause
| PRIMARY KEY ( key_columns ) }
[ DEFERRABLE | NOT DEFERRABLE ]
[ INITIALLY DEFERRED
| INITIALLY IMMEDIATE ]
CONSTRAINT constraint_name CHECK ( expression ) UNIQUE ( column_names ) index_parameters FOREIGN KEY ( column_names ) references_clause PRIMARY KEY ( key_columns ) DEFERRABLE NOT DEFERRABLE INITIALLY DEFERRED INITIALLY IMMEDIATE
alter_column_constraint alter_column_constraint :: = [ CONSTRAINT constraint_name ]
{ NOT NULL
| NULL
| CHECK ( expression )
| DEFAULT expression
| UNIQUE index_parameters
| PRIMARY KEY
| references_clause }
[ DEFERRABLE | NOT DEFERRABLE ]
[ INITIALLY DEFERRED
| INITIALLY IMMEDIATE ]
CONSTRAINT constraint_name NOT NULL NULL CHECK ( expression ) DEFAULT expression UNIQUE index_parameters PRIMARY KEY references_clause DEFERRABLE NOT DEFERRABLE INITIALLY DEFERRED INITIALLY IMMEDIATE
alter_index alter_index :: = ALTER INDEX [ IF EXISTS ] index_name
alter_index_action [ , ... ]
ALTER INDEX IF EXISTS index_name , alter_index_action
alter_index_action alter_index_action :: = RENAME TO new_name
| ALTER [ COLUMN ] column_number SET STATISTICS
integer
| SET TABLESPACE tablespace_name
RENAME TO new_name ALTER COLUMN column_number SET STATISTICS integer SET TABLESPACE tablespace_name
alter_materialized_view alter_materialized_view :: = ALTER MATERIALIZED VIEW [ IF EXISTS ]
matview_name
alter_materialized_view_action [ , ... ]
ALTER MATERIALIZED VIEW IF EXISTS matview_name , alter_materialized_view_action
alter_materialized_view_action alter_materialized_view_action :: = RENAME TO new_name
| SET TABLESPACE tablespace_name
RENAME TO new_name SET TABLESPACE tablespace_name
alter_publication alter_publication :: = ALTER PUBLICATION publication_name
[ alter_publication_action [ , ... ] ]
ALTER PUBLICATION publication_name , alter_publication_action
alter_publication_action alter_publication_action :: = ADD TABLE table_name [ , ... ]
| SET TABLE table_name [ , ... ]
| DROP TABLE table_name [ , ... ]
| RENAME TO publication_name
| OWNER TO new_owner
ADD TABLE , table_name SET TABLE , table_name DROP TABLE , table_name RENAME TO publication_name OWNER TO new_owner
alter_schema alter_schema :: = ALTER SCHEMA schema_name
{ RENAME TO new_name
| OWNER TO { new_owner
| CURRENT_USER
| SESSION_USER } }
ALTER SCHEMA schema_name RENAME TO new_name OWNER TO new_owner CURRENT_USER SESSION_USER
alter_user alter_user :: = ALTER USER role_specification
[ [ WITH ] alter_role_option [ , ... ] ]
ALTER USER role_specification WITH , alter_role_option
alter_user_rename alter_user_rename :: = ALTER USER role_name RENAME TO new_role_name
ALTER USER role_name RENAME TO new_role_name
alter_user_config alter_user_config :: = ALTER USER { role_specification | ALL }
[ IN DATABASE database_name ] config_setting
ALTER USER role_specification ALL IN DATABASE database_name config_setting
analyze analyze :: = ANALYZE [ VERBOSE ] [ table_and_columns [ , ... ] ]
ANALYZE VERBOSE , table_and_columns
table_and_columns table_and_columns :: = table_name [ ( column_name [ , ... ] ) ]
table_name ( , column_name )
begin begin :: = BEGIN [ TRANSACTION | WORK ] [ transaction_mode [ ... ] ]
BEGIN TRANSACTION WORK transaction_mode
call_procedure call_procedure :: = CALL subprogram_name ( [ actual_arg [ , ... ] ] )
CALL subprogram_name ( , actual_arg )
actual_arg actual_arg :: = [ formal_arg => ] expression
formal_arg => expression
comment_on :: = COMMENT ON
{ ACCESS METHOD access_method_name
| AGGREGATE aggregate_name ( aggregate_signature )
| CAST ( source_type AS target_type )
| COLLATION object_name
| COLUMN relation_name . column_name
| CONSTRAINT constraint_name ON table_name
| CONSTRAINT constraint_name ON DOMAIN domain_name
| CONVERSION object_name
| DATABASE object_name
| DOMAIN object_name
| EXTENSION object_name
| EVENT TRIGGER object_name
| FOREIGN DATA WRAPPER object_name
| FOREIGN TABLE object_name
| FUNCTION subprogram_name ( [ subprogram_signature ]
) | INDEX object_name
| LARGE OBJECT large_object_oid
| MATERIALIZED VIEW object_name
| OPERATOR operator_name ( operator_signature )
| OPERATOR CLASS object_name USING index_method
| OPERATOR FAMILY object_name USING index_method
| POLICY policy_name ON table_name
| [ PROCEDURAL ] LANGUAGE object_name
| PROCEDURE subprogram_name (
[ subprogram_signature ] )
| PUBLICATION object_name
| ROLE object_name
| ROUTINE subprogram_name ( [ subprogram_signature ]
) | RULE rule_name ON table_name
| SCHEMA object_name
| SEQUENCE object_name
| SERVER object_name
| STATISTICS object_name
| SUBSCRIPTION object_name
| TABLE object_name
| TABLESPACE object_name
| TEXT SEARCH CONFIGURATION object_name
| TEXT SEARCH DICTIONARY object_name
| TEXT SEARCH PARSER object_name
| TEXT SEARCH TEMPLATE object_name
| TRIGGER trigger_name ON table_name
| TYPE object_name
| VIEW object_name } IS { text_literal | NULL }
COMMENT ON ACCESS METHOD access_method_name AGGREGATE aggregate_name ( aggregate_signature ) CAST ( source_type AS target_type ) COLLATION object_name COLUMN relation_name . column_name CONSTRAINT constraint_name ON table_name CONSTRAINT constraint_name ON DOMAIN domain_name CONVERSION object_name DATABASE object_name DOMAIN object_name EXTENSION object_name EVENT TRIGGER object_name FOREIGN DATA WRAPPER object_name FOREIGN TABLE object_name FUNCTION subprogram_name ( subprogram_signature ) INDEX object_name LARGE OBJECT large_object_oid MATERIALIZED VIEW object_name OPERATOR operator_name ( operator_signature ) OPERATOR CLASS object_name USING index_method OPERATOR FAMILY object_name USING index_method POLICY policy_name ON table_name PROCEDURAL LANGUAGE object_name PROCEDURE subprogram_name ( subprogram_signature ) PUBLICATION object_name ROLE object_name ROUTINE subprogram_name ( subprogram_signature ) RULE rule_name ON table_name SCHEMA object_name SEQUENCE object_name SERVER object_name STATISTICS object_name SUBSCRIPTION object_name TABLE object_name TABLESPACE object_name TEXT SEARCH CONFIGURATION object_name TEXT SEARCH DICTIONARY object_name TEXT SEARCH PARSER object_name TEXT SEARCH TEMPLATE object_name TRIGGER trigger_name ON table_name TYPE object_name VIEW object_name IS text_literal NULL
commit commit :: = COMMIT [ TRANSACTION | WORK ]
COMMIT TRANSACTION WORK
copy_from copy_from :: = COPY table_name [ ( column_name [ , ... ] ) ] FROM
{ ' filename ' | PROGRAM ' command ' | STDIN }
[ [ WITH ] ( copy_option [ , ... ] ) ]
[ WHERE condition ]
COPY table_name ( , column_name ) FROM filename PROGRAM command STDIN WITH ( , copy_option ) WHERE condition
copy_to copy_to :: = COPY { table_name [ ( column_names ) ] | subquery } TO
{ 'filename' | PROGRAM 'command' | STDOUT }
[ [ WITH ] ( copy_option [ , ... ] ) ]
COPY table_name ( column_names ) subquery TO filename PROGRAM command STDOUT WITH ( , copy_option )
copy_option copy_option :: = FORMAT format_name
| OIDS [ boolean ]
| FREEZE [ boolean ]
| DELIMITER 'delimiter_character'
| NULL 'null_string'
| HEADER [ boolean ]
| QUOTE 'quote_character'
| ESCAPE 'escape_character'
| FORCE_QUOTE { ( column_names ) | * }
| FORCE_NOT_NULL ( column_names )
| FORCE_NULL ( column_names )
| ENCODING 'encoding_name'
| ROWS_PER_TRANSACTION int_literal
| DISABLE_FK_CHECK
| REPLACE
| SKIP int_literal
FORMAT format_name OIDS boolean FREEZE boolean DELIMITER delimiter_character NULL null_string HEADER boolean QUOTE quote_character ESCAPE escape_character FORCE_QUOTE ( column_names ) * FORCE_NOT_NULL ( column_names ) FORCE_NULL ( column_names ) ENCODING encoding_name ROWS_PER_TRANSACTION int_literal DISABLE_FK_CHECK REPLACE SKIP int_literal
format_name :: = text_literal
text_literal
subquery subquery :: = [ ( [ , ... ] ] { select | values } [ ) [ , ... ] ]
, ( select values , )
create_aggregate create_aggregate :: = create_aggregate_normal
| create_aggregate_order_by
| create_aggregate_old
create_aggregate_normal create_aggregate_order_by create_aggregate_old
create_aggregate_normal create_aggregate_normal :: = CREATE AGGREGATE aggregate_name (
{ aggregate_arg [ , ... ] | * } ) ( SFUNC
= sfunc , STYPE = state_data_type
[ , aggregate_normal_option [ ... ] ] )
CREATE AGGREGATE aggregate_name ( , aggregate_arg * ) ( SFUNC = sfunc , STYPE = state_data_type , aggregate_normal_option )
create_aggregate_order_by create_aggregate_order_by :: = CREATE AGGREGATE aggregate_name (
[ aggregate_arg [ , ... ] ] ORDER BY
aggregate_arg [ , ... ] ) ( SFUNC =
sfunc , STYPE = state_data_type
[ , aggregate_order_by_option [ ... ] ]
)
CREATE AGGREGATE aggregate_name ( , aggregate_arg ORDER BY , aggregate_arg ) ( SFUNC = sfunc , STYPE = state_data_type , aggregate_order_by_option )
create_aggregate_old create_aggregate_old :: = CREATE AGGREGATE aggregate_name ( BASETYPE =
base_type , SFUNC = sfunc , STYPE =
state_data_type
[ , aggregate_old_option [ ... ] ] )
CREATE AGGREGATE aggregate_name ( BASETYPE = base_type , SFUNC = sfunc , STYPE = state_data_type , aggregate_old_option )
aggregate_arg aggregate_arg :: = [ aggregate_arg_mode ] [ formal_arg ] arg_type
aggregate_arg_mode formal_arg arg_type
aggregate_normal_option aggregate_normal_option :: = SSPACE = state_data_size
| FINALFUNC = ffunc
| FINALFUNC_EXTRA
| FINALFUNC_MODIFY =
{ READ_ONLY | SHAREABLE | READ_WRITE }
| COMBINEFUNC = combinefunc
| SERIALFUNC = serialfunc
| DESERIALFUNC = deserialfunc
| INITCOND = initial_condition
| MSFUNC = msfunc
| MINVFUNC = minvfunc
| MSTYPE = mstate_data_type
| MSSPACE = mstate_data_size
| MFINALFUNC = mffunc
| MFINALFUNC_EXTRA
| MFINALFUNC_MODIFY =
{ READ_ONLY | SHAREABLE | READ_WRITE }
| MINITCOND = minitial_condition
| SORTOP = sort_operator
| PARALLEL =
{ SAFE | RESTRICTED | UNSAFE }
SSPACE = state_data_size FINALFUNC = ffunc FINALFUNC_EXTRA FINALFUNC_MODIFY = READ_ONLY SHAREABLE READ_WRITE COMBINEFUNC = combinefunc SERIALFUNC = serialfunc DESERIALFUNC = deserialfunc INITCOND = initial_condition MSFUNC = msfunc MINVFUNC = minvfunc MSTYPE = mstate_data_type MSSPACE = mstate_data_size MFINALFUNC = mffunc MFINALFUNC_EXTRA MFINALFUNC_MODIFY = READ_ONLY SHAREABLE READ_WRITE MINITCOND = minitial_condition SORTOP = sort_operator PARALLEL = SAFE RESTRICTED UNSAFE
aggregate_order_by_option aggregate_order_by_option :: = SSPACE = state_data_size
| FINALFUNC = ffunc
| FINALFUNC_EXTRA
| FINALFUNC_MODIFY =
{ READ_ONLY | SHAREABLE | READ_WRITE }
| INITCOND = initial_condition
| PARALLEL =
{ SAFE | RESTRICTED | UNSAFE }
| HYPOTHETICAL
SSPACE = state_data_size FINALFUNC = ffunc FINALFUNC_EXTRA FINALFUNC_MODIFY = READ_ONLY SHAREABLE READ_WRITE INITCOND = initial_condition PARALLEL = SAFE RESTRICTED UNSAFE HYPOTHETICAL
aggregate_old_option aggregate_old_option :: = SSPACE = state_data_size
| FINALFUNC = ffunc
| FINALFUNC_EXTRA
| FINALFUNC_MODIFY =
{ READ_ONLY | SHAREABLE | READ_WRITE }
| COMBINEFUNC = combinefunc
| SERIALFUNC = serialfunc
| DESERIALFUNC = deserialfunc
| INITCOND = initial_condition
| MSFUNC = msfunc
| MINVFUNC = minvfunc
| MSTYPE = mstate_data_type
| MSSPACE = mstate_data_size
| MFINALFUNC = mffunc
| MFINALFUNC_EXTRA
| MFINALFUNC_MODIFY =
{ READ_ONLY | SHAREABLE | READ_WRITE }
| MINITCOND = minitial_condition
| SORTOP = sort_operator
SSPACE = state_data_size FINALFUNC = ffunc FINALFUNC_EXTRA FINALFUNC_MODIFY = READ_ONLY SHAREABLE READ_WRITE COMBINEFUNC = combinefunc SERIALFUNC = serialfunc DESERIALFUNC = deserialfunc INITCOND = initial_condition MSFUNC = msfunc MINVFUNC = minvfunc MSTYPE = mstate_data_type MSSPACE = mstate_data_size MFINALFUNC = mffunc MFINALFUNC_EXTRA MFINALFUNC_MODIFY = READ_ONLY SHAREABLE READ_WRITE MINITCOND = minitial_condition SORTOP = sort_operator
create_cast create_cast :: = create_cast_with_function
| create_cast_without_function
| create_cast_with_inout
create_cast_with_function create_cast_without_function create_cast_with_inout
create_cast_with_function create_cast_with_function :: = CREATE CAST ( cast_signature ) WITH
FUNCTION subprogram_name
[ ( subprogram_signature ) ]
[ AS ASSIGNMENT | AS IMPLICIT ]
CREATE CAST ( cast_signature ) WITH FUNCTION subprogram_name ( subprogram_signature ) AS ASSIGNMENT AS IMPLICIT
create_cast_without_function create_cast_without_function :: = CREATE CAST ( cast_signature )
WITHOUT FUNCTION
[ AS ASSIGNMENT | AS IMPLICIT ]
CREATE CAST ( cast_signature ) WITHOUT FUNCTION AS ASSIGNMENT AS IMPLICIT
create_cast_with_inout create_cast_with_inout :: = CREATE CAST ( cast_signature ) WITH INOUT
[ AS ASSIGNMENT | AS IMPLICIT ]
CREATE CAST ( cast_signature ) WITH INOUT AS ASSIGNMENT AS IMPLICIT
cast_signature cast_signature :: = source_type AS target_type
source_type AS target_type
create_database create_database :: = CREATE DATABASE name [ create_database_options ]
CREATE DATABASE name create_database_options
create_database_options create_database_options :: = [ WITH ] [ OWNER [ = ] user_name ]
[ TEMPLATE [ = ] template_name ]
[ ENCODING [ = ] encoding ]
[ LC_COLLATE [ = ] lc_collate ]
[ LC_CTYPE [ = ] lc_ctype ]
[ ALLOW_CONNECTIONS [ = ] allowconn ]
[ CONNECTION LIMIT [ = ] connlimit ]
[ IS_TEMPLATE [ = ] istemplate ]
[ COLOCATION [ = ] { 'true' | 'false' } ]
WITH OWNER = user_name TEMPLATE = template_name ENCODING = encoding LC_COLLATE = lc_collate LC_CTYPE = lc_ctype ALLOW_CONNECTIONS = allowconn CONNECTION LIMIT = connlimit IS_TEMPLATE = istemplate COLOCATION = true false
user_name name
template_name name
encoding encoding :: = text_literal
text_literal
lc_collate lc_collate :: = text_literal
text_literal
lc_ctype lc_ctype :: = text_literal
text_literal
create_domain create_domain :: = CREATE DOMAIN name [ AS ] data_type
[ DEFAULT expression ]
[ [ domain_constraint [ ... ] ] ]
CREATE DOMAIN name AS data_type DEFAULT expression domain_constraint
domain_constraint domain_constraint :: = [ CONSTRAINT constraint_name ]
{ NOT NULL | NULL | CHECK ( expression ) }
CONSTRAINT constraint_name NOT NULL NULL CHECK ( expression )
create_extension create_extension :: = CREATE EXTENSION [ IF NOT EXISTS ] extension_name
[ WITH ] [ SCHEMA schema_name ]
[ VERSION version ] [ CASCADE ]
CREATE EXTENSION IF NOT EXISTS extension_name WITH SCHEMA schema_name VERSION version CASCADE
create_function create_function :: = CREATE [ OR REPLACE ] FUNCTION subprogram_name (
[ arg_decl_with_dflt [ , ... ] ] )
{ RETURNS data_type
| RETURNS TABLE ( { column_name data_type }
[ , ... ] ) }
{ unalterable_fn_attribute
| alterable_fn_only_attribute
| alterable_fn_and_proc_attribute } [ ... ]
CREATE OR REPLACE FUNCTION subprogram_name ( , arg_decl_with_dflt ) RETURNS data_type RETURNS TABLE ( , column_name data_type ) unalterable_fn_attribute alterable_fn_only_attribute alterable_fn_and_proc_attribute
arg_decl_with_dflt arg_decl_with_dflt :: = arg_decl [ { DEFAULT | = } expression ]
arg_decl DEFAULT = expression
arg_decl arg_decl :: = [ formal_arg ] [ arg_mode ] arg_type
formal_arg arg_mode arg_type
subprogram_signature subprogram_signature :: = arg_decl [ , ... ]
, arg_decl
fn_invocation fn_invocation :: = subprogram_name ( [ actual_arg [ , ... ] ] )
subprogram_name ( , actual_arg )
subprogram_call_signature subprogram_call_signature :: = arg_type [ , ... ]
, arg_type
unalterable_fn_attribute unalterable_fn_attribute :: = WINDOW
| LANGUAGE lang_name
| AS subprogram_implementation
WINDOW LANGUAGE lang_name AS subprogram_implementation
lang_name lang_name :: = SQL | PLPGSQL | C
SQL PLPGSQL C
subprogram_implementation subprogram_implementation :: = ' sql_stmt_list '
| ' plpgsql_block_stmt '
| ' obj_file ' [ , ' link_symbol ' ]
' sql_stmt_list ' ' plpgsql_block_stmt ' ' obj_file ' , ' link_symbol '
obj_file obj_file :: = text_literal
text_literal
link_symbol link_symbol :: = text_literal
text_literal
sql_stmt_list sql_stmt_list :: = sql_stmt ; [ sql_stmt ... ]
sql_stmt ; sql_stmt ;
alterable_fn_and_proc_attribute alterable_fn_and_proc_attribute :: = SET run_time_parameter
{ TO value
| = value
| FROM CURRENT }
| RESET run_time_parameter
| RESET ALL
| [ EXTERNAL ] SECURITY
{ INVOKER | DEFINER }
SET run_time_parameter TO value = value FROM CURRENT RESET run_time_parameter RESET ALL EXTERNAL SECURITY INVOKER DEFINER
alterable_fn_only_attribute alterable_fn_only_attribute :: = volatility
| on_null_input
| PARALLEL parallel_mode
| [ NOT ] LEAKPROOF
| COST int_literal
| ROWS int_literal
volatility on_null_input PARALLEL parallel_mode NOT LEAKPROOF COST int_literal ROWS int_literal
volatility volatility :: = IMMUTABLE | STABLE | VOLATILE
IMMUTABLE STABLE VOLATILE
on_null_input :: = CALLED ON NULL INPUT
| RETURNS NULL ON NULL INPUT
| STRICT
CALLED ON NULL INPUT RETURNS NULL ON NULL INPUT STRICT
parallel_mode parallel_mode :: = UNSAFE | RESTRICTED | SAFE
UNSAFE RESTRICTED SAFE
create_foreign_data_wrapper create_foreign_data_wrapper :: = CREATE FOREIGN DATA WRAPPER fdw_name
[ HANDLER handler_name | NO HANDLER ]
[ VALIDATOR validator_name
| NO VALIDATOR ]
[ OPTIONS ( fdw_options ) ]
CREATE FOREIGN DATA WRAPPER fdw_name HANDLER handler_name NO HANDLER VALIDATOR validator_name NO VALIDATOR OPTIONS ( fdw_options )
create_foreign_table create_foreign_table :: = CREATE FOREIGN TABLE [ IF NOT EXISTS ]
table_name ( [ foreign_table_elem [ , ... ] ]
) SERVER server_name
[ OPTIONS ( fdw_options ) ]
CREATE FOREIGN TABLE IF NOT EXISTS table_name ( , foreign_table_elem ) SERVER server_name OPTIONS ( fdw_options )
foreign_table_elem foreign_table_elem :: = column_name data_type
[ OPTIONS ( fdw_options ) ]
[ COLLATE collation ]
[ column_constraint [ ... ] ]
| table_constraint
column_name data_type OPTIONS ( fdw_options ) COLLATE collation column_constraint table_constraint
create_group create_group :: = CREATE GROUP role_name
[ [ WITH ] role_option [ , ... ] ]
CREATE GROUP role_name WITH , role_option
create_index create_index :: = CREATE [ UNIQUE ] INDEX
[ CONCURRENTLY | NONCONCURRENTLY ]
[ [ IF NOT EXISTS ] name ] ON [ ONLY ] table_name
[ USING access_method_name ] ( index_elem [ , ... ] )
[ INCLUDE ( column_name [ , ... ] ) ]
[ NULLS [ NOT ] DISTINCT ]
[ TABLESPACE tablespace_name ]
[ SPLIT { INTO int_literal TABLETS
| AT VALUES ( split_row [ , ... ] ) } ]
[ WHERE boolean_expression ]
CREATE UNIQUE INDEX CONCURRENTLY NONCONCURRENTLY IF NOT EXISTS name ON ONLY table_name USING access_method_name ( , index_elem ) INCLUDE ( , column_name ) NULLS NOT DISTINCT TABLESPACE tablespace_name SPLIT INTO int_literal TABLETS AT VALUES ( , split_row ) WHERE boolean_expression
tablespace_name name
index_elem index_elem :: = { column_name | ( expression ) }
[ operator_class_name ] [ HASH | ASC | DESC ]
[ NULLS { FIRST | LAST } ]
column_name ( expression ) operator_class_name HASH ASC DESC NULLS FIRST LAST
create_matview create_matview :: = CREATE MATERIALIZED VIEW [ IF NOT EXISTS ]
matview_name [ ( column_name [ , ... ] ) ]
[ WITH ( storage_parameters ) ]
[ TABLESPACE tablespace_name ] AS subquery
[ WITH [ NO ] DATA ]
CREATE MATERIALIZED VIEW IF NOT EXISTS matview_name ( , column_name ) WITH ( storage_parameters ) TABLESPACE tablespace_name AS subquery WITH NO DATA
create_operator create_operator :: = CREATE OPERATOR operator_name (
{ FUNCTION = subprogram_name
| PROCEDURE = subprogram_name }
[ , operator_option [ ... ] ] )
CREATE OPERATOR operator_name ( FUNCTION = subprogram_name PROCEDURE = subprogram_name , operator_option )
operator_option operator_option :: = LEFTARG = left_type
| RIGHTARG = right_type
| COMMUTATOR = com_op
| NEGATOR = neg_op
| RESTRICT = res_proc
| JOIN = join_proc
| HASHES
| MERGES
LEFTARG = left_type RIGHTARG = right_type COMMUTATOR = com_op NEGATOR = neg_op RESTRICT = res_proc JOIN = join_proc HASHES MERGES
create_operator_class create_operator_class :: = CREATE OPERATOR CLASS operator_class_name
[ DEFAULT ] FOR TYPE data_type USING
index_method AS operator_class_as [ , ... ]
CREATE OPERATOR CLASS operator_class_name DEFAULT FOR TYPE data_type USING index_method AS , operator_class_as
operator_class_as operator_class_as :: = OPERATOR strategy_number operator_name
[ ( operator_signature ) ] [ FOR SEARCH ]
| FUNCTION support_number
[ ( op_type [ , ... ] ) ] subprogram_name (
subprogram_signature )
| STORAGE storage_type
OPERATOR strategy_number operator_name ( operator_signature ) FOR SEARCH FUNCTION support_number ( , op_type ) subprogram_name ( subprogram_signature ) STORAGE storage_type
create_policy create_policy :: = CREATE POLICY name ON table_name
[ AS { PERMISSIVE | RESTRICTIVE } ]
[ FOR { ALL | SELECT | INSERT | UPDATE | DELETE } ]
[ TO { role_name
| PUBLIC
| CURRENT_USER
| SESSION_USER } [ , ... ] ]
[ USING ( using_expression ) ]
[ WITH CHECK ( check_expression ) ]
CREATE POLICY name ON table_name AS PERMISSIVE RESTRICTIVE FOR ALL SELECT INSERT UPDATE DELETE TO , role_name PUBLIC CURRENT_USER SESSION_USER USING ( using_expression ) WITH CHECK ( check_expression )
create_procedure create_procedure :: = CREATE [ OR REPLACE ] PROCEDURE subprogram_name (
[ arg_decl_with_dflt [ , ... ] ] )
{ unalterable_proc_attribute
| alterable_fn_and_proc_attribute } [ ... ]
CREATE OR REPLACE PROCEDURE subprogram_name ( , arg_decl_with_dflt ) unalterable_proc_attribute alterable_fn_and_proc_attribute
unalterable_proc_attribute unalterable_proc_attribute :: = LANGUAGE lang_name
| AS subprogram_implementation
LANGUAGE lang_name AS subprogram_implementation
create_publication create_publication :: = CREATE PUBLICATION publication_name
[ FOR publication_for_option ]
CREATE PUBLICATION publication_name FOR publication_for_option
publication_for_option publication_for_option :: = TABLE table_name [ , ... ] | ALL TABLES
TABLE , table_name ALL TABLES
create_replication_slot create_replication_slot :: = CREATE_REPLICATION_SLOT slot_name LOGICAL
output_plugin
[ NOEXPORT_SNAPSHOT | USE_SNAPSHOT ]
CREATE_REPLICATION_SLOT slot_name LOGICAL output_plugin NOEXPORT_SNAPSHOT USE_SNAPSHOT
create_rule create_rule :: = CREATE [ OR REPLACE ] RULE rule_name AS ON rule_event
TO table_name [ WHERE boolean_expression ] DO
[ ALSO | INSTEAD ] { NOTHING
| command
| ( command [ ; ... ] ) }
CREATE OR REPLACE RULE rule_name AS ON rule_event TO table_name WHERE boolean_expression DO ALSO INSTEAD NOTHING command ( ; command )
rule_event rule_event :: = SELECT | INSERT | UPDATE | DELETE
SELECT INSERT UPDATE DELETE
command command :: = SELECT | INSERT | UPDATE | DELETE | NOTIFY
SELECT INSERT UPDATE DELETE NOTIFY
create_role create_role :: = CREATE ROLE role_name
[ [ WITH ] role_option [ , ... ] ]
CREATE ROLE role_name WITH , role_option
role_option role_option :: = SUPERUSER
| NOSUPERUSER
| CREATEDB
| NOCREATEDB
| CREATEROLE
| NOCREATEROLE
| INHERIT
| NOINHERIT
| LOGIN
| NOLOGIN
| CONNECTION LIMIT connlimit
| [ ENCRYPTED ] PASSWORD ' password '
| PASSWORD NULL
| VALID UNTIL ' timestamp '
| IN ROLE role_name [ , ... ]
| IN GROUP role_name [ , ... ]
| ROLE role_name [ , ... ]
| ADMIN role_name [ , ... ]
| USER role_name [ , ... ]
| SYSID uid
SUPERUSER NOSUPERUSER CREATEDB NOCREATEDB CREATEROLE NOCREATEROLE INHERIT NOINHERIT LOGIN NOLOGIN CONNECTION LIMIT connlimit ENCRYPTED PASSWORD password PASSWORD NULL VALID UNTIL timestamp IN ROLE , role_name IN GROUP , role_name ROLE , role_name ADMIN , role_name USER , role_name SYSID uid
password password :: = text_literal
text_literal
timestamp timestamp :: = '<DateTime Literal>'
<DateTime Literal>
uid text_literal
create_schema_name create_schema_name :: = CREATE SCHEMA [ IF NOT EXISTS ] schema_name
[ AUTHORIZATION role_specification ]
CREATE SCHEMA IF NOT EXISTS schema_name AUTHORIZATION role_specification
create_schema_role create_schema_role :: = CREATE SCHEMA [ IF NOT EXISTS ] AUTHORIZATION
role_specification
CREATE SCHEMA IF NOT EXISTS AUTHORIZATION role_specification
create_sequence create_sequence :: = CREATE [ TEMPORARY | TEMP | UNLOGGED ] SEQUENCE
[ IF NOT EXISTS ] sequence_name sequence_options
CREATE TEMPORARY TEMP UNLOGGED SEQUENCE IF NOT EXISTS sequence_name sequence_options
sequence_name sequence_name :: = qualified_name
qualified_name
sequence_options sequence_options :: = [ AS seq_data_type ]
[ INCREMENT [ BY ] int_literal ]
[ MINVALUE int_literal | NO MINVALUE ]
[ MAXVALUE int_literal | NO MAXVALUE ]
[ START [ WITH ] int_literal ]
[ CACHE positive_int_literal ] [ [ NO ] CYCLE ]
AS seq_data_type INCREMENT BY int_literal MINVALUE int_literal NO MINVALUE MAXVALUE int_literal NO MAXVALUE START WITH int_literal CACHE positive_int_literal NO CYCLE
create_server create_server :: = CREATE SERVER [ IF NOT EXISTS ] server_name
[ TYPE server_type ] [ VERSION server_version ]
FOREIGN DATA WRAPPER fdw_name
[ OPTIONS ( fdw_options ) ]
CREATE SERVER IF NOT EXISTS server_name TYPE server_type VERSION server_version FOREIGN DATA WRAPPER fdw_name OPTIONS ( fdw_options )
server_type server_type :: = text_literal
text_literal
create_tablespace create_tablespace :: = CREATE TABLESPACE tablespace_name
[ WITH (
{ 'tablespace_option' = value
[ ,'tablespace_option' = ... ] } ) ]
CREATE TABLESPACE tablespace_name WITH ( tablespace_option = value , tablespace_option = value )
drop_tablespace drop_tablespace :: = DROP TABLESPACE [ IF EXISTS ] tablespace_name
DROP TABLESPACE IF EXISTS tablespace_name
create_table create_table :: = CREATE [ TEMPORARY | TEMP | UNLOGGED ] TABLE
[ IF NOT EXISTS ] table_name (
[ table_elem [ , ... ] ] )
[ WITH ( { COLOCATION = { 'true' | 'false' }
| storage_parameters } )
| WITHOUT OIDS ] [ TABLESPACE tablespace_name ]
[ SPLIT { INTO positive_int_literal TABLETS
| AT VALUES ( split_row [ , ... ] ) } ]
CREATE TEMPORARY TEMP UNLOGGED TABLE IF NOT EXISTS table_name ( , table_elem ) WITH ( COLOCATION = true false storage_parameters ) WITHOUT OIDS TABLESPACE tablespace_name SPLIT INTO positive_int_literal TABLETS AT VALUES ( , split_row )
split_row split_row :: = ( column_value [ , ... ] )
( , column_value )
table_elem table_elem :: = column_name data_type [ column_constraint [ ... ] ]
| table_constraint
column_name data_type column_constraint table_constraint
column_constraint column_constraint :: = [ CONSTRAINT constraint_name ]
{ NOT NULL
| NULL
| CHECK ( expression )
| DEFAULT expression
| GENERATED ALWAYS AS ( generation_expr )
STORED
| GENERATED { ALWAYS | BY DEFAULT } AS
IDENTITY [ sequence_options ]
| UNIQUE index_parameters
| PRIMARY KEY
| references_clause }
[ DEFERRABLE | NOT DEFERRABLE ]
[ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
CONSTRAINT constraint_name NOT NULL NULL CHECK ( expression ) DEFAULT expression GENERATED ALWAYS AS ( generation_expr ) STORED GENERATED ALWAYS BY DEFAULT AS IDENTITY sequence_options UNIQUE index_parameters PRIMARY KEY references_clause DEFERRABLE NOT DEFERRABLE INITIALLY DEFERRED INITIALLY IMMEDIATE
table_constraint table_constraint :: = [ CONSTRAINT constraint_name ]
{ CHECK ( expression )
| UNIQUE ( column_names ) index_parameters
| PRIMARY KEY ( key_columns )
| FOREIGN KEY ( column_names )
references_clause }
[ DEFERRABLE | NOT DEFERRABLE ]
[ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
CONSTRAINT constraint_name CHECK ( expression ) UNIQUE ( column_names ) index_parameters PRIMARY KEY ( key_columns ) FOREIGN KEY ( column_names ) references_clause DEFERRABLE NOT DEFERRABLE INITIALLY DEFERRED INITIALLY IMMEDIATE
key_columns key_columns :: = hash_columns [ , range_columns ] | range_columns
hash_columns , range_columns range_columns
hash_columns hash_columns :: = column_name [ HASH ] | ( column_name [ , ... ] ) HASH
column_name HASH ( , column_name ) HASH
range_columns range_columns :: = { column_name { ASC | DESC } } [ , ... ]
, column_name ASC DESC
references_clause references_clause :: = REFERENCES table_name [ column_name [ , ... ] ]
[ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]
[ ON DELETE key_action ]
[ ON UPDATE key_action ]
REFERENCES table_name , column_name MATCH FULL MATCH PARTIAL MATCH SIMPLE ON DELETE key_action ON UPDATE key_action
key_action key_action :: = NO ACTION | RESTRICT | CASCADE | SET NULL | SET DEFAULT
NO ACTION RESTRICT CASCADE SET NULL SET DEFAULT
storage_parameters storage_parameters :: = storage_parameter [ , ... ]
, storage_parameter
storage_parameter storage_parameter :: = param_name [ = param_value ]
param_name = param_value
index_parameters index_parameters :: = [ INCLUDE ( column_names ) ]
[ WITH ( storage_parameters ) ]
[ USING INDEX TABLESPACE tablespace_name ]
INCLUDE ( column_names ) WITH ( storage_parameters ) USING INDEX TABLESPACE tablespace_name
create_table_as create_table_as :: = CREATE [ TEMPORARY | TEMP ] TABLE
[ IF NOT EXISTS ] table_name
[ ( column_name [ , ... ] ) ] AS subquery
[ WITH [ NO ] DATA ]
CREATE TEMPORARY TEMP TABLE IF NOT EXISTS table_name ( , column_name ) AS subquery WITH NO DATA
create_trigger create_trigger :: = CREATE [ OR REPLACE ] TRIGGER name
{ BEFORE | AFTER | INSTEAD OF }
{ event [ OR ... ] } ON table_name
[ FROM table_name ] [ NOT DEFERRABLE ]
[ FOR [ EACH ] { ROW | STATEMENT } ]
[ WHEN ( boolean_expression ) ] EXECUTE
{ FUNCTION | PROCEDURE } subprogram_name (
[ subprogram_signature ] )
CREATE OR REPLACE TRIGGER name BEFORE AFTER INSTEAD OF OR event ON table_name FROM table_name NOT DEFERRABLE FOR EACH ROW STATEMENT WHEN ( boolean_expression ) EXECUTE FUNCTION PROCEDURE subprogram_name ( subprogram_signature )
event event :: = INSERT
| UPDATE [ OF column_name [ , ... ] ]
| DELETE
| TRUNCATE
INSERT UPDATE OF , column_name DELETE TRUNCATE
create_type create_type :: = create_composite_type
| create_enum_type
| create_range_type
| create_shell_type
| create_base_type
create_composite_type create_enum_type create_range_type create_shell_type create_base_type
create_composite_type create_composite_type :: = CREATE TYPE type_name AS (
[ composite_type_elem [ , ... ] ] )
CREATE TYPE type_name AS ( , composite_type_elem )
create_enum_type create_enum_type :: = CREATE TYPE type_name AS ENUM (
[ name [ , ... ] ] )
CREATE TYPE type_name AS ENUM ( , name )
create_range_type create_range_type :: = CREATE TYPE type_name AS RANGE ( SUBTYPE =
subtype [ , range_type_option [ ... ] ] )
CREATE TYPE type_name AS RANGE ( SUBTYPE = subtype , range_type_option )
create_shell_type create_shell_type :: = CREATE TYPE type_name
CREATE TYPE type_name
create_base_type create_base_type :: = CREATE TYPE type_name ( INPUT = input_function ,
OUTPUT = output_function
[ , base_type_option [ ... ] ] )
CREATE TYPE type_name ( INPUT = input_function , OUTPUT = output_function , base_type_option )
composite_type_elem composite_type_elem :: = attribute_name data_type [ COLLATE collation ]
attribute_name data_type COLLATE collation
range_type_option range_type_option :: = SUBTYPE_OPCLASS = subtype_operator_class
| COLLATION = collation
| CANONICAL = canonical_function
| SUBTYPE_DIFF = subtype_diff_function
SUBTYPE_OPCLASS = subtype_operator_class COLLATION = collation CANONICAL = canonical_function SUBTYPE_DIFF = subtype_diff_function
base_type_option base_type_option :: = RECEIVE = receive_function
| SEND = send_function
| TYPMOD_IN = type_modifier_input_function
| TYPMOD_OUT = type_modifier_output_function
| INTERNALLENGTH = { internallength | VARIABLE }
| PASSEDBYVALUE
| ALIGNMENT = alignment
| STORAGE = storage
| LIKE = like_type
| CATEGORY = category
| PREFERRED = { TRUE | FALSE }
| DEFAULT = default_type_value
| ELEMENT = element
| DELIMITER = delimiter
| COLLATABLE = { TRUE | FALSE }
RECEIVE = receive_function SEND = send_function TYPMOD_IN = type_modifier_input_function TYPMOD_OUT = type_modifier_output_function INTERNALLENGTH = internallength VARIABLE PASSEDBYVALUE ALIGNMENT = alignment STORAGE = storage LIKE = like_type CATEGORY = category PREFERRED = TRUE FALSE DEFAULT = default_type_value ELEMENT = element DELIMITER = delimiter COLLATABLE = TRUE FALSE
create_user create_user :: = CREATE USER role_name
[ [ WITH ] role_option [ , ... ] ]
CREATE USER role_name WITH , role_option
create_user_mapping create_user_mapping :: = CREATE USER MAPPING [ IF NOT EXISTS ] FOR
user SERVER server_name
[ OPTIONS ( fdw_options ) ]
CREATE USER MAPPING IF NOT EXISTS FOR user SERVER server_name OPTIONS ( fdw_options )
user user :: = user_name | USER | CURRENT_USER | PUBLIC
user_name USER CURRENT_USER PUBLIC
create_view create_view :: = CREATE [ OR REPLACE ] [ TEMPORARY | TEMP ] VIEW
qualified_name [ ( column_name [ , ... ] ) ] AS
select
CREATE OR REPLACE TEMPORARY TEMP VIEW qualified_name ( , column_name ) AS select
deallocate deallocate :: = DEALLOCATE [ PREPARE ] { name | ALL }
DEALLOCATE PREPARE name ALL
declare declare :: = DECLARE cursor_name [ BINARY ] [ INSENSITIVE ]
[ [ NO ] SCROLL ] CURSOR [ { WITH | WITHOUT } HOLD ] FOR
subquery
DECLARE cursor_name BINARY INSENSITIVE NO SCROLL CURSOR WITH WITHOUT HOLD FOR subquery
cursor_name name
move move :: = MOVE [ move_to_one_row | move_over_many_rows ] [ FROM | IN ]
name
MOVE move_to_one_row move_over_many_rows FROM IN name
move_to_one_row move_to_one_row :: = FIRST
| LAST
| ABSOLUTE int_literal
| NEXT
| FORWARD
| PRIOR
| BACKWARD
| RELATIVE int_literal
FIRST LAST ABSOLUTE int_literal NEXT FORWARD PRIOR BACKWARD RELATIVE int_literal
move_over_many_rows move_over_many_rows :: = ALL | FORWARD ALL
| FORWARD int_literal
| int_literal
| BACKWARD ALL
| BACKWARD int_literal
ALL FORWARD ALL FORWARD int_literal int_literal BACKWARD ALL BACKWARD int_literal
fetch fetch :: = FETCH [ fetch_one_row | fetch_many_rows ] [ FROM | IN ] name
FETCH fetch_one_row fetch_many_rows FROM IN name
fetch_one_row fetch_one_row :: = FIRST
| LAST
| ABSOLUTE int_literal
| NEXT
| FORWARD
| PRIOR
| BACKWARD
| RELATIVE int_literal
FIRST LAST ABSOLUTE int_literal NEXT FORWARD PRIOR BACKWARD RELATIVE int_literal
fetch_many_rows fetch_many_rows :: = ALL | FORWARD ALL
| FORWARD int_literal
| int_literal
| BACKWARD ALL
| BACKWARD int_literal
ALL FORWARD ALL FORWARD int_literal int_literal BACKWARD ALL BACKWARD int_literal
close close :: = CLOSE { name | ALL }
CLOSE name ALL
delete delete :: = [ with_clause ] DELETE FROM table_expr [ [ AS ] alias ]
[ WHERE boolean_expression | WHERE CURRENT OF cursor_name ]
[ returning_clause ]
with_clause DELETE FROM table_expr AS alias WHERE boolean_expression WHERE CURRENT OF cursor_name returning_clause
alias name
returning_clause returning_clause :: = RETURNING { * | { output_expression
[ [ AS ] output_name ] }
[ , ... ] }
RETURNING * , output_expression AS output_name
returning_expression returning_expression :: = output_expression [ [ AS ] output_name ]
output_expression AS output_name
output_expression output_expression :: = expression
expression
output_name name
do do :: = DO ' plpgsql_block_stmt '
DO ' plpgsql_block_stmt '
drop_aggregate drop_aggregate :: = DROP AGGREGATE [ IF EXISTS ]
{ aggregate_name ( aggregate_signature ) }
[ , ... ] [ CASCADE | RESTRICT ]
DROP AGGREGATE IF EXISTS , aggregate_name ( aggregate_signature ) CASCADE RESTRICT
aggregate_signature aggregate_signature :: = * | aggregate_arg [ , ... ]
| [ aggregate_arg [ , ... ] ] ORDER BY
aggregate_arg [ , ... ]
* , aggregate_arg , aggregate_arg ORDER BY , aggregate_arg
drop_cast drop_cast :: = DROP CAST [ IF EXISTS ] ( cast_signature )
[ CASCADE | RESTRICT ]
DROP CAST IF EXISTS ( cast_signature ) CASCADE RESTRICT
drop_database drop_database :: = DROP DATABASE [ IF EXISTS ] database_name
DROP DATABASE IF EXISTS database_name
drop_schema drop_schema :: = DROP SCHEMA [ IF EXISTS ] schema_name [ , ... ]
[ CASCADE | RESTRICT ]
DROP SCHEMA IF EXISTS , schema_name CASCADE RESTRICT
drop_domain drop_domain :: = DROP DOMAIN [ IF EXISTS ] name [ , ... ]
[ CASCADE | RESTRICT ]
DROP DOMAIN IF EXISTS , name CASCADE RESTRICT
drop_extension drop_extension :: = DROP EXTENSION [ IF EXISTS ] extension_name
[ , ... ] [ CASCADE | RESTRICT ]
DROP EXTENSION IF EXISTS , extension_name CASCADE RESTRICT
drop_foreign_data_wrapper drop_foreign_data_wrapper :: = DROP FOREIGN DATA WRAPPER [ IF EXISTS ]
fdw_name [ CASCADE | RESTRICT ]
DROP FOREIGN DATA WRAPPER IF EXISTS fdw_name CASCADE RESTRICT
drop_foreign_table drop_foreign_table :: = DROP FOREIGN TABLE [ IF EXISTS ] table_name
[ CASCADE | RESTRICT ]
DROP FOREIGN TABLE IF EXISTS table_name CASCADE RESTRICT
drop_function drop_function :: = DROP FUNCTION [ IF EXISTS ]
{ subprogram_name ( [ subprogram_signature ] ) }
[ , ... ] [ CASCADE | RESTRICT ]
DROP FUNCTION IF EXISTS , subprogram_name ( subprogram_signature ) CASCADE RESTRICT
drop_group drop_group :: = DROP GROUP [ IF EXISTS ] role_name [ , ... ]
DROP GROUP IF EXISTS , role_name
drop_matview drop_matview :: = DROP MATERIALIZED VIEW [ IF EXISTS ] matview_name
[ CASCADE | RESTRICT ]
DROP MATERIALIZED VIEW IF EXISTS matview_name CASCADE RESTRICT
drop_operator drop_operator :: = DROP OPERATOR [ IF EXISTS ]
{ operator_name ( operator_signature ) } [ , ... ]
[ CASCADE | RESTRICT ]
DROP OPERATOR IF EXISTS , operator_name ( operator_signature ) CASCADE RESTRICT
operator_signature operator_signature :: = { left_type | NONE } , { right_type | NONE }
left_type NONE , right_type NONE
drop_operator_class drop_operator_class :: = DROP OPERATOR CLASS [ IF EXISTS ]
operator_class_name USING index_method
[ CASCADE | RESTRICT ]
DROP OPERATOR CLASS IF EXISTS operator_class_name USING index_method CASCADE RESTRICT
drop_policy drop_policy :: = DROP POLICY [ IF EXISTS ] name ON table_name
[ CASCADE | RESTRICT ]
DROP POLICY IF EXISTS name ON table_name CASCADE RESTRICT
drop_procedure drop_procedure :: = DROP PROCEDURE [ IF EXISTS ]
{ subprogram_name ( [ subprogram_signature ] ) }
[ , ... ] [ CASCADE | RESTRICT ]
DROP PROCEDURE IF EXISTS , subprogram_name ( subprogram_signature ) CASCADE RESTRICT
drop_publication drop_publication :: = DROP PUBLICATION [ IF EXISTS ] publication_name
[ CASCADE | RESTRICT ]
DROP PUBLICATION IF EXISTS publication_name CASCADE RESTRICT
drop_replication_slot drop_replication_slot :: = DROP_REPLICATION_SLOT slot_name
DROP_REPLICATION_SLOT slot_name
drop_role drop_role :: = DROP ROLE [ IF EXISTS ] role_name [ , ... ]
DROP ROLE IF EXISTS , role_name
drop_rule drop_rule :: = DROP RULE [ IF EXISTS ] rule_name ON table_name
[ CASCADE | RESTRICT ]
DROP RULE IF EXISTS rule_name ON table_name CASCADE RESTRICT
drop_sequence drop_sequence :: = DROP SEQUENCE [ IF EXISTS ] sequence_name
[ CASCADE | RESTRICT ]
DROP SEQUENCE IF EXISTS sequence_name CASCADE RESTRICT
drop_owned drop_owned :: = DROP OWNED BY role_specification [ , ... ]
[ CASCADE | RESTRICT ]
DROP OWNED BY , role_specification CASCADE RESTRICT
drop_server drop_server :: = DROP SERVER [ IF EXISTS ] server_name
[ CASCADE | RESTRICT ]
DROP SERVER IF EXISTS server_name CASCADE RESTRICT
drop_table drop_table :: = DROP TABLE [ IF EXISTS ] table_name [ , ... ]
[ CASCADE | RESTRICT ]
DROP TABLE IF EXISTS , table_name CASCADE RESTRICT
drop_index drop_index :: = DROP INDEX [ IF EXISTS ] index_name
[ CASCADE | RESTRICT ]
DROP INDEX IF EXISTS index_name CASCADE RESTRICT
index_name name
drop_type drop_type :: = DROP TYPE [ IF EXISTS ] type_name [ , ... ]
[ CASCADE | RESTRICT ]
DROP TYPE IF EXISTS , type_name CASCADE RESTRICT
drop_user drop_user :: = DROP USER [ IF EXISTS ] role_name [ , ... ]
DROP USER IF EXISTS , role_name
drop_trigger drop_trigger :: = DROP TRIGGER [ IF EXISTS ] name ON table_name
[ CASCADE | RESTRICT ]
DROP TRIGGER IF EXISTS name ON table_name CASCADE RESTRICT
end end :: = END [ TRANSACTION | WORK ]
END TRANSACTION WORK
execute_statement execute_statement :: = EXECUTE name [ ( expression [ , ... ] ) ]
EXECUTE name ( , expression )
explain explain :: = EXPLAIN [ [ ANALYZE ] [ VERBOSE ] | ( option [ , ... ] ) ]
sql_stmt
EXPLAIN ANALYZE VERBOSE ( , option ) sql_stmt
option option :: = ANALYZE [ boolean ]
| BUFFERS [ boolean ]
| COSTS [ boolean ]
| DEBUG [ boolean ]
| DIST [ boolean ]
| FORMAT { TEXT | XML | JSON | YAML }
| SUMMARY [ boolean ]
| TIMING [ boolean ]
| VERBOSE [ boolean ]
ANALYZE boolean BUFFERS boolean COSTS boolean DEBUG boolean DIST boolean FORMAT TEXT XML JSON YAML SUMMARY boolean TIMING boolean VERBOSE boolean
grant grant :: = grant_table
| grant_table_col
| grant_seq
| grant_db
| grant_domain
| grant_schema
| grant_type
| grant_role
grant_table grant_table_col grant_seq grant_db grant_domain grant_schema grant_type grant_role
grant_table grant_table :: = GRANT
{ { SELECT
| INSERT
| UPDATE
| DELETE
| TRUNCATE
| REFERENCES
| TRIGGER } [ , ... ]
| ALL [ PRIVILEGES ] } ON
{ [ TABLE ] table_name [ , ... ]
| ALL TABLES IN SCHEMA schema_name [ , ... ] } TO
grantee_role [ , ... ] [ WITH GRANT OPTION ]
GRANT , SELECT INSERT UPDATE DELETE TRUNCATE REFERENCES TRIGGER ALL PRIVILEGES ON TABLE , table_name ALL TABLES IN SCHEMA , schema_name TO , grantee_role WITH GRANT OPTION
grant_table_col grant_table_col :: = GRANT
{ { SELECT | INSERT | UPDATE | REFERENCES } (
column_names )
| ALL [ PRIVILEGES ] ( column_names ) } ON
{ [ TABLE ] table_name [ , ... ] } TO
grantee_role [ , ... ] [ WITH GRANT OPTION ]
GRANT SELECT INSERT UPDATE REFERENCES ( column_names ) ALL PRIVILEGES ( column_names ) ON TABLE , table_name TO , grantee_role WITH GRANT OPTION
grant_seq grant_seq :: = GRANT { { USAGE | SELECT | UPDATE } [ , ... ]
| ALL [ PRIVILEGES ] } ON
{ SEQUENCE sequence_name [ , ... ]
| ALL SEQUENCES IN SCHEMA schema_name [ , ... ] } TO
grantee_role [ , ... ] [ WITH GRANT OPTION ]
GRANT , USAGE SELECT UPDATE ALL PRIVILEGES ON SEQUENCE , sequence_name ALL SEQUENCES IN SCHEMA , schema_name TO , grantee_role WITH GRANT OPTION
grant_db grant_db :: = GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [ , ... ]
| ALL [ PRIVILEGES ] } ON DATABASE database_name
[ , ... ] TO grantee_role [ , ... ]
[ WITH GRANT OPTION ]
GRANT , CREATE CONNECT TEMPORARY TEMP ALL PRIVILEGES ON DATABASE , database_name TO , grantee_role WITH GRANT OPTION
grant_domain grant_domain :: = GRANT { USAGE | ALL [ PRIVILEGES ] } ON DOMAIN
domain_name [ , ... ] TO grantee_role [ , ... ]
[ WITH GRANT OPTION ]
GRANT USAGE ALL PRIVILEGES ON DOMAIN , domain_name TO , grantee_role WITH GRANT OPTION
grant_schema grant_schema :: = GRANT { { CREATE | USAGE } [ , ... ]
| ALL [ PRIVILEGES ] } ON SCHEMA schema_name
[ , ... ] TO grantee_role [ , ... ]
[ WITH GRANT OPTION ]
GRANT , CREATE USAGE ALL PRIVILEGES ON SCHEMA , schema_name TO , grantee_role WITH GRANT OPTION
grant_type grant_type :: = GRANT { USAGE | ALL [ PRIVILEGES ] } ON TYPE type_name
[ , ... ] TO grantee_role [ , ... ]
[ WITH GRANT OPTION ]
GRANT USAGE ALL PRIVILEGES ON TYPE , type_name TO , grantee_role WITH GRANT OPTION
grant_role grant_role :: = GRANT role_name [ , ... ] TO role_name
[ , grantee_role [ ... ] ] [ WITH ADMIN OPTION ]
GRANT , role_name TO role_name , grantee_role WITH ADMIN OPTION
grantee_role grantee_role :: = [ GROUP ] role_name
| PUBLIC
| CURRENT_USER
| SESSION_USER
GROUP role_name PUBLIC CURRENT_USER SESSION_USER
import_foreign_schema import_foreign_schema :: = IMPORT FOREIGN SCHEMA remote_schema
[ { LIMIT TO | EXCEPT } ( table_name [ ... ]
) ] FROM SERVER server_name INTO
local_schema [ OPTIONS ( fdw_options ) ]
IMPORT FOREIGN SCHEMA remote_schema LIMIT TO EXCEPT ( table_name ) FROM SERVER server_name INTO local_schema OPTIONS ( fdw_options )
remote_schema remote_schema :: = text_literal
text_literal
local_schema local_schema :: = text_literal
text_literal
insert insert :: = [ with_clause ] INSERT INTO table_name [ AS alias ]
[ ( column_names ) ]
[ OVERRIDING [ SYSTEM | USER [ ... ] ] VALUE ]
{ DEFAULT VALUES
| VALUES ( column_values ) [ ,( column_values ... ]
| subquery }
[ ON CONFLICT [ conflict_target ] conflict_action ]
[ returning_clause ]
with_clause INSERT INTO table_name AS alias ( column_names ) OVERRIDING SYSTEM USER VALUE DEFAULT VALUES VALUES ( column_values ) , ( column_values ) subquery ON CONFLICT conflict_target conflict_action returning_clause
column_values column_values :: = { expression | DEFAULT } [ , ... ]
, expression DEFAULT
conflict_target conflict_target :: = ( { column_name | expression } [ , ... ] )
[ WHERE boolean_expression ]
| ON CONSTRAINT constraint_name
( , column_name expression ) WHERE boolean_expression ON CONSTRAINT constraint_name
conflict_action conflict_action :: = DO NOTHING
| DO UPDATE SET update_item [ , ... ]
[ WHERE boolean_expression ]
DO NOTHING DO UPDATE SET , update_item WHERE boolean_expression
lock_table lock_table :: = LOCK [ TABLE ] { table_expr [ , ... ] }
[ IN lockmode MODE ] [ NOWAIT ]
LOCK TABLE , table_expr IN lockmode MODE NOWAIT
lockmode lockmode :: = ACCESS SHARE
| ROW SHARE
| ROW EXCLUSIVE
| SHARE UPDATE EXCLUSIVE
| SHARE
| SHARE ROW EXCLUSIVE
| EXCLUSIVE
| ACCESS EXCLUSIVE
ACCESS SHARE ROW SHARE ROW EXCLUSIVE SHARE UPDATE EXCLUSIVE SHARE SHARE ROW EXCLUSIVE EXCLUSIVE ACCESS EXCLUSIVE
prepare_statement prepare_statement :: = PREPARE name [ ( data_type [ , ... ] ) ] AS
subquery
PREPARE name ( , data_type ) AS subquery
reassign_owned reassign_owned :: = REASSIGN OWNED BY role_specification [ , ... ] TO
role_specification
REASSIGN OWNED BY , role_specification TO role_specification
refresh_matview refresh_matview :: = REFRESH MATERIALIZED VIEW [ CONCURRENTLY ]
matview_name [ WITH [ NO ] DATA ]
REFRESH MATERIALIZED VIEW CONCURRENTLY matview_name WITH NO DATA
reset_stmt reset_stmt :: = RESET { run_time_parameter | ALL }
RESET run_time_parameter ALL
reset_role reset_role :: = RESET ROLE
RESET ROLE
reset_session_authorization reset_session_authorization :: = RESET SESSION AUTHORIZATION
RESET SESSION AUTHORIZATION
revoke_table revoke_table :: = REVOKE [ GRANT OPTION FOR ]
{ { SELECT
| INSERT
| UPDATE
| DELETE
| TRUNCATE
| REFERENCES
| TRIGGER } [ , ... ]
| ALL [ PRIVILEGES ] } ON
{ [ TABLE ] table_name [ , ... ]
| ALL TABLES IN SCHEMA schema_name [ , ... ] }
FROM { [ GROUP ] role_name | PUBLIC } [ , ... ]
[ CASCADE | RESTRICT ]
REVOKE GRANT OPTION FOR , SELECT INSERT UPDATE DELETE TRUNCATE REFERENCES TRIGGER ALL PRIVILEGES ON TABLE , table_name ALL TABLES IN SCHEMA , schema_name FROM , GROUP role_name PUBLIC CASCADE RESTRICT
revoke_table_col revoke_table_col :: = REVOKE [ GRANT OPTION FOR ]
{ { SELECT | INSERT | UPDATE | REFERENCES } (
column_names ) [ ,(column_names ... ]
| ALL [ PRIVILEGES ] ( column_names ) } ON
[ TABLE ] table_name [ , ... ] FROM
{ [ GROUP ] role_name | PUBLIC } [ , ... ]
[ CASCADE | RESTRICT ]
REVOKE GRANT OPTION FOR SELECT INSERT UPDATE REFERENCES ( column_names ) , ( column_names ) ALL PRIVILEGES ( column_names ) ON TABLE , table_name FROM , GROUP role_name PUBLIC CASCADE RESTRICT
revoke_seq revoke_seq :: = REVOKE [ GRANT OPTION FOR ]
{ { USAGE | SELECT | UPDATE } [ , ... ]
| ALL [ PRIVILEGES ] } ON
{ SEQUENCE sequence_name [ , ... ]
| ALL SEQUENCES IN SCHEMA schema_name [ , ... ] }
FROM { [ GROUP ] role_name | PUBLIC } [ , ... ]
[ CASCADE | RESTRICT ]
REVOKE GRANT OPTION FOR , USAGE SELECT UPDATE ALL PRIVILEGES ON SEQUENCE , sequence_name ALL SEQUENCES IN SCHEMA , schema_name FROM , GROUP role_name PUBLIC CASCADE RESTRICT
revoke_db revoke_db :: = REVOKE [ GRANT OPTION FOR ]
{ { CREATE | CONNECT | TEMPORARY | TEMP } [ , ... ]
| ALL [ PRIVILEGES ] } ON DATABASE database_name
[ , ... ] FROM { [ GROUP ] role_name | PUBLIC }
[ , ... ] [ CASCADE | RESTRICT ]
REVOKE GRANT OPTION FOR , CREATE CONNECT TEMPORARY TEMP ALL PRIVILEGES ON DATABASE , database_name FROM , GROUP role_name PUBLIC CASCADE RESTRICT
revoke_domain revoke_domain :: = REVOKE [ GRANT OPTION FOR ]
{ USAGE | ALL [ PRIVILEGES ] } ON DOMAIN domain_name
[ , ... ] FROM { [ GROUP ] role_name | PUBLIC }
[ , ... ] [ CASCADE | RESTRICT ]
REVOKE GRANT OPTION FOR USAGE ALL PRIVILEGES ON DOMAIN , domain_name FROM , GROUP role_name PUBLIC CASCADE RESTRICT
revoke_schema revoke_schema :: = REVOKE [ GRANT OPTION FOR ]
{ { CREATE | USAGE } [ , ... ]
| ALL [ PRIVILEGES ] } ON SCHEMA schema_name
[ , ... ] FROM { [ GROUP ] role_name | PUBLIC }
[ , ... ] [ CASCADE | RESTRICT ]
REVOKE GRANT OPTION FOR , CREATE USAGE ALL PRIVILEGES ON SCHEMA , schema_name FROM , GROUP role_name PUBLIC CASCADE RESTRICT
revoke_type revoke_type :: = REVOKE [ GRANT OPTION FOR ]
{ USAGE | ALL [ PRIVILEGES ] } ON TYPE type_name
[ , ... ] FROM { [ GROUP ] role_name | PUBLIC }
[ , ... ] [ CASCADE | RESTRICT ]
REVOKE GRANT OPTION FOR USAGE ALL PRIVILEGES ON TYPE , type_name FROM , GROUP role_name PUBLIC CASCADE RESTRICT
revoke_role revoke_role :: = REVOKE [ ADMIN OPTION FOR ] role_name [ , ... ] FROM
role_name [ , ... ] [ CASCADE | RESTRICT ]
REVOKE ADMIN OPTION FOR , role_name FROM , role_name CASCADE RESTRICT
rollback rollback :: = ROLLBACK [ TRANSACTION | WORK ]
ROLLBACK TRANSACTION WORK
select select :: = [ with_clause ] SELECT select_list
[ trailing_select_clauses ]
with_clause SELECT select_list trailing_select_clauses
with_clause with_clause :: = WITH [ RECURSIVE ]
{ common_table_expression [ , ... ] }
WITH RECURSIVE , common_table_expression
select_list select_list :: = [ ALL | DISTINCT [ ON { ( expression [ , ... ] ) } ] ]
[ * | { { expression
| fn_over_window
| ordinary_aggregate_fn_invocation
| within_group_aggregate_fn_invocation }
[ [ AS ] name ] } [ , ... ] ]
ALL DISTINCT ON ( , expression ) * , expression fn_over_window ordinary_aggregate_fn_invocation within_group_aggregate_fn_invocation AS name
trailing_select_clauses trailing_select_clauses :: = [ FROM { from_item [ , ... ] } ]
[ WHERE boolean_expression ]
[ GROUP BY { grouping_element [ , ... ] } ]
[ HAVING boolean_expression ]
[ WINDOW
{ { name AS window_definition }
[ , ... ] } ]
[ { UNION | INTERSECT | EXCEPT }
[ ALL | DISTINCT ] select ]
[ ORDER BY { order_expr [ , ... ] } ]
[ LIMIT { int_expression | ALL } ]
[ OFFSET int_expression [ ROW | ROWS ] ]
[ FETCH { FIRST | NEXT } int_expression
{ ROW | ROWS } ONLY ]
[ FOR { UPDATE
| NO KEY UPDATE
| SHARE
| KEY SHARE }
[ OF table_name [ , ... ] ]
[ NOWAIT | SKIP LOCKED ] [ ... ] ]
FROM , from_item WHERE boolean_expression GROUP BY , grouping_element HAVING boolean_expression WINDOW , name AS window_definition UNION INTERSECT EXCEPT ALL DISTINCT select ORDER BY , order_expr LIMIT int_expression ALL OFFSET int_expression ROW ROWS FETCH FIRST NEXT int_expression ROW ROWS ONLY FOR UPDATE NO KEY UPDATE SHARE KEY SHARE OF , table_name NOWAIT SKIP LOCKED
from_item from_item :: = '<See https://www.postgresql.org/docs/11/sql-select.html>'
<See https://www.postgresql.org/docs/11/sql-select.html >
common_table_expression common_table_expression :: = cte_name [ ( column_name [ , ... ] ) ] AS
( { select
| values
| insert
| update
| delete } )
cte_name ( , column_name ) AS ( select values insert update delete )
select_expression select_expression :: = expression [ [ AS ] name ]
expression AS name
order_expr order_expr :: = expression [ ASC | DESC | USING operator_name ]
[ NULLS { FIRST | LAST } ]
expression ASC DESC USING operator_name NULLS FIRST LAST
set set :: = SET [ SESSION | LOCAL ] { run_time_parameter { TO | = }
{ value | DEFAULT }
| TIME ZONE
{ timezone | LOCAL | DEFAULT } }
SET SESSION LOCAL run_time_parameter TO = value DEFAULT TIME ZONE timezone LOCAL DEFAULT
timezone timezone :: = text_literal
text_literal
set_constraints set_constraints :: = SET CONSTRAINTS { ALL | name [ , ... ] }
{ DEFERRED | IMMEDIATE }
SET CONSTRAINTS ALL , name DEFERRED IMMEDIATE
set_role set_role :: = SET [ SESSION | LOCAL ] ROLE { role_name | NONE }
SET SESSION LOCAL ROLE role_name NONE
set_session_authorization set_session_authorization :: = SET [ SESSION | LOCAL ] SESSION
AUTHORIZATION { role_name | DEFAULT }
SET SESSION LOCAL SESSION AUTHORIZATION role_name DEFAULT
set_transaction set_transaction :: = SET TRANSACTION transaction_mode [ ... ]
SET TRANSACTION transaction_mode
transaction_mode transaction_mode :: = isolation_level
| read_write_mode
| deferrable_mode
isolation_level read_write_mode deferrable_mode
isolation_level isolation_level :: = ISOLATION LEVEL { READ UNCOMMITTED
| READ COMMITTED
| REPEATABLE READ
| SERIALIZABLE }
ISOLATION LEVEL READ UNCOMMITTED READ COMMITTED REPEATABLE READ SERIALIZABLE
read_write_mode read_write_mode :: = READ ONLY | READ WRITE
READ ONLY READ WRITE
deferrable_mode deferrable_mode :: = [ NOT ] DEFERRABLE
NOT DEFERRABLE
show_stmt show_stmt :: = SHOW { run_time_parameter | ALL }
SHOW run_time_parameter ALL
show_transaction show_transaction :: = SHOW TRANSACTION ISOLATION LEVEL
SHOW TRANSACTION ISOLATION LEVEL
start_replication start_replication :: = START_REPLICATION SLOT slot_name LOGICAL
log_sequence_number
[ ( start_replication_option [ , ... ] ) ]
START_REPLICATION SLOT slot_name LOGICAL log_sequence_number ( , start_replication_option )
start_replication_option start_replication_option :: = start_replication_option_name
[ start_replication_option_value ]
start_replication_option_name