diff options
Diffstat (limited to 'doc/src/sgml/syntax.sgml')
| -rw-r--r-- | doc/src/sgml/syntax.sgml | 265 |
1 files changed, 265 insertions, 0 deletions
diff --git a/doc/src/sgml/syntax.sgml b/doc/src/sgml/syntax.sgml new file mode 100644 index 00000000000..3922b89b161 --- /dev/null +++ b/doc/src/sgml/syntax.sgml @@ -0,0 +1,265 @@ +<chapter id="syntax"> +<title>SQL Syntax</title> + +<sect1> +<title>Key Words</title> + +<para> +<acronym>SQL92</acronym> defines <firstterm>key words</firstterm> for the language +which have specific meaning. Some key words are +<firstterm>reserved</firstterm>, which indicates that they are +restricted to appear in only certain contexts. Other key words are +<firstterm>not restricted</firstterm>, which indicates that in certain contexts they +have a specific meaning but are not otherwise constrained. + +<para> +<productname>Postgres</productname> implements an extended subset of the +<acronym>SQL92</acronym> and <acronym>SQL3</acronym> languages. Some language +elements are not as restricted in this implementation as is +called for in the language standards, in part due +to the extensibility features of <productname>Postgres</productname>. + +<para> +Information on <acronym>SQL92</acronym> and <acronym>SQL3</acronym> key words +is derived from <xref linkend="DATE97" endterm="DATE97-full">. + +<Sect2> +<Title>Reserved Key Words</Title> + +<Para> +<acronym>SQL92</acronym> and <acronym>SQL3</acronym> have +<firstterm>reserved key words</firstterm> which are not allowed +as identifiers and not allowed in any usage other than as fundamental +tokens in <acronym>SQL</acronym> statements. +<productname>Postgres</productname> has additional key words +which have similar restrictions. In particular, these key words +are not allowed as column or table names, though in some cases +they are allowed to be column labels (i.e. in AS clauses). + +<tip> +<para> +Any string can be specified as an identifier if surrounded by +double quotes (<quote>like this!</quote>). Some care is required since +such an identifier will be case sensitive +and will retain embedded whitespace. +</tip> + +<para> +The following are <productname>Postgres</productname> +reserved words which are neither <acronym>SQL92</acronym> +nor <acronym>SQL3</acronym> reserved words. These are allowed +to be present as column labels, but not as identifiers: + +<programlisting> +ABORT ANALYZE +BINARY +CLUSTER CONSTRAINT COPY +DO +EXPLAIN EXTEND +LISTEN LOAD LOCK +MOVE +NEW NONE NOTIFY +RESET +SETOF SHOW +UNLISTEN UNTIL +VACUUM VERBOSE +</programlisting> + +The following are <productname>Postgres</productname> +reserved words which are also <acronym>SQL92</acronym> +or <acronym>SQL3</acronym> reserved words, and which +are allowed to be present as column labels, but not as identifiers: + +<programlisting> +CROSS CURRENT +FALSE FOREIGN +GROUP +ORDER +POSITION PRECISION +TABLE TRANSACTION TRUE +</programlisting> + +The following are <productname>Postgres</productname> +reserved words which are also <acronym>SQL92</acronym> +or <acronym>SQL3</acronym> reserved words: + +<programlisting> +ADD ALL ALTER AND ANY AS ASC +BEGIN BETWEEN BOTH BY +CASCADE CAST CHAR CHARACTER CHECK CLOSE COLLATE COLUMN COMMIT +CONSTRAINT CREATE CURRENT_DATE CURRENT_TIME +CURRENT_TIMESTAMP CURRENT_USER CURSOR +DECIMAL DECLARE DEFAULT DELETE DESC DISTINCT DROP +END EXECUTE EXISTS EXTRACT +FETCH FLOAT FOR FROM FULL +GRANT +HAVING +IN INNER INSERT INTERVAL INTO IS +JOIN +LEADING LEFT LIKE LOCAL +NAMES NATIONAL NATURAL NCHAR NO NOT NULL NUMERIC +ON OR OUTER +PARTIAL PRIMARY PRIVILEGES PROCEDURE PUBLIC +REFERENCES REVOKE RIGHT ROLLBACK +SELECT SET SUBSTRING +TIMESTAMP TO TRAILING TRIM +UNION UNIQUE UPDATE USER USING +VALUES VARCHAR VARYING VIEW +WHERE WITH WORK +</programlisting> + +The following are <acronym>SQL92</acronym> reserved key words which +are not <productname>Postgres</productname> reserved key words, but which +if used as function names are always translated into the function +<function>length</function>: + +<programlisting> +CHAR_LENGTH CHARACTER_LENGTH +</programlisting> + +The following are <acronym>SQL92</acronym> or <acronym>SQL3</acronym> +reserved key words which +are not <productname>Postgres</productname> reserved key words, but +if used as type names which are always translated into an alternate, native type: + +<programlisting> +BOOLEAN DOUBLE FLOAT INT INTEGER INTERVAL REAL SMALLINT +</programlisting> + +<para> +The following are either <acronym>SQL92</acronym> +or <acronym>SQL3</acronym> reserved key words +which are not key words in <productname>Postgres</productname>. +These have no proscribed usage in <productname>Postgres</productname> +at the time of writing (v6.4) but may become reserved key words in the +future: + +<note> +<para> +Some of these key words represent functions in <acronym>SQL92</acronym>. +These functions are defined in <productname>Postgres</productname>, +but the parser does not consider the names to be key words and they are allowed +in other contexts. +</note> + +<programlisting> +ALLOCATE ARE ASSERTION AT AUTHORIZATION AVG +BIT BIT_LENGTH +CASCADED CASE CATALOG COALESCE COLLATION +CONNECT CONNECTION CONSTRAINTS CONTINUE CONVERT CORRESPONDING COUNT +DATE DEALLOCATE DEC DESCRIBE DESCRIPTOR DIAGNOSTICS DISCONNECT DOMAIN +ELSE END-EXEC ESCAPE EXCEPT EXCEPTION EXEC EXTERNAL +FIRST FOUND +GET GLOBAL GO GOTO +IDENTITY IMMEDIATE INDICATOR INITIALLY INPUT INTERSECT ISOLATION +LAST LEVEL LOWER +MAX MIN MODULE +NULLIF +OCTET_LENGTH OPEN OUTPUT OVERLAPS +PREPARE PRESERVE +RESTRICT ROWS +SCHEMA SECTION SESSION SESSION_USER SIZE SOME +SQL SQLCODE SQLERROR SQLSTATE SUM SYSTEM_USER +TEMPORARY THEN TRANSLATE TRANSLATION +UNKNOWN UPPER USAGE +VALUE +WHEN WHENEVER WRITE +</programlisting> + +<Sect2> +<Title>Non-reserved Keywords</Title> + +<Para> +<acronym>SQL92</acronym> and <acronym>SQL3</acronym> have +<firstterm>non-reserved keywords</firstterm> which have +a proscribed meaning in the language but which are also allowed +as identifiers. +<productname>Postgres</productname> has additional keywords +which allow similar unrestricted usage. +In particular, these keywords +are allowed as column or table names. + +<para> +The following are <productname>Postgres</productname> +non-reserved key words which are neither <acronym>SQL92</acronym> +nor <acronym>SQL3</acronym> non-reserved key words: + +<programlisting> +AFTER AGGREGATE +BACKWARD BEFORE +CACHE CREATEDB CREATEUSER CYCLE +DATABASE DELIMITERS +EACH ENCODING +FORWARD FUNCTION +HANDLER +INCREMENT INDEX INHERITS INSENSITIVE INSTEAD ISNULL +LANCOMPILER LOCATION +MAXVALUE MINVALUE +NOCREATEDB NOCREATEUSER NOTHING NOTNULL +OIDS OPERATOR +PASSWORD PROCEDURAL +RECIPE RENAME RETURNS ROW RULE +SEQUENCE SERIAL START STATEMENT STDIN STDOUT +TRUSTED +VALID VERSION +</programlisting> + +<para> +The following are <productname>Postgres</productname> +non-reserved key words which are <acronym>SQL92</acronym> +or <acronym>SQL3</acronym> reserved key words: + +<programlisting> +ABSOLUTE ACTION +DAY +HOUR +INSENSITIVE +KEY +LANGUAGE +MATCH MINUTE MONTH +NEXT +OF ONLY OPTION +PRIOR PRIVILEGES +READ RELATIVE +SCROLL SECOND +TIME TIMEZONE_HOUR TIMEZONE_MINUTE TRIGGER +YEAR +ZONE +</programlisting> + +<para> +The following are <productname>Postgres</productname> +non-reserved key words which are also either <acronym>SQL92</acronym> +or <acronym>SQL3</acronym> non-reserved key words: + +<programlisting> +TYPE +</programlisting> + +<para> +The following are either <acronym>SQL92</acronym> +or <acronym>SQL3</acronym> non-reserved key words which are not +key words of any kind in <productname>Postgres</productname>: + +<programlisting> +ADA +C CATALOG_NAME CHARACTER_SET_CATALOG CHARACTER_SET_NAME +CHARACTER_SET_SCHEMA CLASS_ORIGIN COBOL COLLATION_CATALOG +COLLATION_NAME COLLATION_SCHEMA COLUMN_NAME +COMMAND_FUNCTION COMMITTED CONDITION_NUMBER +CONNECTION_NAME CONSTRAINT_CATALOG CONSTRAINT_NAME +CONSTRAINT_SCHEMA CURSOR_NAME +DATA DATE_TIME_INTERVAL_CODE DATE_TIME_INTERVAL_PRECISION +DYNAMIC_FUNCTION +FORTRAN +LENGTH +MESSAGE_LENGTH MESSAGE_OCTET_LENGTH MORE MUMPS +NAME NULLABLE NUMBER +PAD PASCAL PLI +REPEATABLE RETURNED_LENGTH RETURNED_OCTET_LENGTH +RETURNED_SQLSTATE ROW_COUNT +SCALE SCHEMA_NAME SERIALIZABLE SERVER_NAME SPACE +SUBCLASS_ORIGIN +TABLE_NAME +UNCOMMITTED UNNAMED +</programlisting> |
