syntax.sgml
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:10k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1.  <chapter id="syntax">
  2.   <title>SQL Syntax</title>
  3.   <abstract>
  4.    <para>
  5.     <acronym>SQL</acronym> manipulates sets of data. The language is
  6.     composed of various <firstterm>key words</firstterm>. Arithmetic
  7.     and procedural expressions are allowed. We will cover these topics
  8.     in this chapter; subsequent chapters will include details on data
  9.     types, functions, and operators.
  10.    </para>
  11.   </abstract>
  12.   <sect1>
  13.    <title>Key Words</title>
  14.    <para>
  15.     <acronym>SQL92</acronym> defines <firstterm>key words</firstterm> 
  16.     for the language
  17.     which have specific meaning. Some key words are
  18.     <firstterm>reserved</firstterm>, which indicates that they are
  19.     restricted to appear in only certain contexts. Other key words are
  20.     <firstterm>not restricted</firstterm>, which indicates that in certain 
  21.     contexts they
  22.     have a specific meaning but are not otherwise constrained.
  23.    </para>
  24.    <para>
  25.     <productname>Postgres</productname> implements an extended subset of the
  26.     <acronym>SQL92</acronym> and <acronym>SQL3</acronym> languages. Some language
  27.     elements are not as restricted in this implementation as is
  28.     called for in the language standards, in part due
  29.     to the extensibility features of <productname>Postgres</productname>. 
  30.    </para>
  31.    <para>
  32.     Information on <acronym>SQL92</acronym> and <acronym>SQL3</acronym> key words
  33.     is derived from <xref linkend="DATE97" endterm="DATE97">.
  34.    </para>
  35.    <sect2>
  36.     <title>Reserved Key Words</title>
  37.     <para>
  38.      <acronym>SQL92</acronym> and <acronym>SQL3</acronym> have 
  39.      <firstterm>reserved key words</firstterm> which are not allowed 
  40.      as identifiers and not allowed in any usage other than as fundamental
  41.      tokens in <acronym>SQL</acronym> statements.
  42.      <productname>Postgres</productname> has additional key words
  43.      which have similar restrictions. In particular, these key words
  44.      are not allowed as column or table names, though in some cases
  45.      they are allowed to be column labels (i.e. in AS clauses).
  46.     </para>
  47.     <tip>
  48.      <para>
  49.       Any string can be specified as an identifier if surrounded by
  50.       double quotes (<quote>like this!</quote>). Some care is required since
  51.       such an identifier will be case sensitive
  52.       and will retain embedded whitespace other special characters.
  53.      </para>
  54.     </tip>
  55.     <para>
  56.      The following are <productname>Postgres</productname>
  57.      reserved words which are neither <acronym>SQL92</acronym>
  58.      nor <acronym>SQL3</acronym> reserved words. These are allowed
  59.      to be present as column labels, but not as identifiers:
  60.      <programlisting>
  61. ABORT ANALYZE 
  62. BINARY 
  63. CLUSTER CONSTRAINT COPY
  64. DO 
  65. EXPLAIN EXTEND
  66. LISTEN LOAD LOCK 
  67. MOVE 
  68. NEW NONE NOTIFY 
  69. RESET 
  70. SETOF SHOW
  71. UNLISTEN UNTIL 
  72. VACUUM VERBOSE
  73.      </programlisting>
  74.     </para>
  75.     <para>
  76.      The following are <productname>Postgres</productname>
  77.      reserved words which are also <acronym>SQL92</acronym> 
  78.      or <acronym>SQL3</acronym> reserved words, and which
  79.      are allowed to be present as column labels, but not as identifiers:
  80.      <programlisting>
  81. CASE COALESCE CROSS CURRENT 
  82. ELSE END
  83. FALSE FOREIGN 
  84. GLOBAL GROUP 
  85. LOCAL
  86. NULLIF
  87. ORDER 
  88. POSITION PRECISION 
  89. TABLE THEN TRANSACTION TRUE
  90. WHEN
  91.      </programlisting>
  92.      The following are <productname>Postgres</productname>
  93.      reserved words which are also <acronym>SQL92</acronym> 
  94.      or <acronym>SQL3</acronym> reserved words:
  95.      <programlisting>
  96. ADD ALL ALTER AND ANY AS ASC
  97. BEGIN BETWEEN BOTH BY
  98. CASCADE CAST CHAR CHARACTER CHECK CLOSE 
  99.  COLLATE COLUMN COMMIT CONSTRAINT 
  100.  CREATE CURRENT_DATE CURRENT_TIME 
  101.  CURRENT_TIMESTAMP CURRENT_USER CURSOR
  102. DECIMAL DECLARE DEFAULT DELETE DESC DISTINCT DROP
  103. EXECUTE EXISTS EXTRACT
  104. FETCH FLOAT FOR FROM FULL
  105. GRANT 
  106. HAVING
  107. IN INNER INSERT INTERVAL INTO IS
  108. JOIN 
  109. LEADING LEFT LIKE LOCAL
  110. NAMES NATIONAL NATURAL NCHAR NO NOT NULL NUMERIC
  111. ON OR OUTER
  112. PARTIAL PRIMARY PRIVILEGES PROCEDURE PUBLIC
  113. REFERENCES REVOKE RIGHT ROLLBACK
  114. SELECT SET SUBSTRING
  115. TO TRAILING TRIM 
  116. UNION UNIQUE UPDATE USER USING
  117. VALUES VARCHAR VARYING VIEW
  118. WHERE WITH WORK 
  119.      </programlisting>
  120.     </para>
  121.     <para>
  122.      The following are <acronym>SQL92</acronym> reserved key words which
  123.      are not <productname>Postgres</productname> reserved key words, but which
  124.      if used as function names are always translated into the function
  125.      <function>length</function>:
  126.      <programlisting>
  127. CHAR_LENGTH CHARACTER_LENGTH
  128.      </programlisting>
  129.     </para>
  130.     <para>
  131.      The following are <acronym>SQL92</acronym> or <acronym>SQL3</acronym> 
  132.      reserved key words which
  133.      are not <productname>Postgres</productname> reserved key words, but
  134.      if used as type names are always translated into an alternate, native type:
  135.      <programlisting>
  136. BOOLEAN DOUBLE FLOAT INT INTEGER INTERVAL REAL SMALLINT
  137.      </programlisting>
  138.     </para>
  139.     <para>
  140.      The following are either <acronym>SQL92</acronym>
  141.      or <acronym>SQL3</acronym> reserved key words
  142.      which are not key words in <productname>Postgres</productname>.
  143.      These have no proscribed usage in <productname>Postgres</productname>
  144.      at the time of writing (v6.5) but may become reserved key words in the
  145.      future:
  146.      <note>
  147.       <para>
  148.        Some of these key words represent functions in <acronym>SQL92</acronym>.
  149.        These functions are defined in <productname>Postgres</productname>,
  150.        but the parser does not consider the names to be key words and they are allowed
  151.        in other contexts.
  152.       </para>
  153.      </note>
  154.      <programlisting>
  155. ALLOCATE ARE ASSERTION AT AUTHORIZATION AVG 
  156. BIT BIT_LENGTH
  157. CASCADED CATALOG COLLATION CONNECT CONNECTION
  158.  CONSTRAINTS CONTINUE CONVERT CORRESPONDING COUNT
  159. DATE DEALLOCATE DEC DESCRIBE DESCRIPTOR DIAGNOSTICS DISCONNECT DOMAIN 
  160. END-EXEC ESCAPE EXCEPT EXCEPTION EXEC EXTERNAL 
  161. FIRST FOUND
  162. GET GO GOTO 
  163. IDENTITY IMMEDIATE INDICATOR INITIALLY INPUT INTERSECT ISOLATION 
  164. LAST LEVEL LOWER 
  165. MAX MIN MODULE 
  166. OCTET_LENGTH OPEN OUTPUT OVERLAPS 
  167. PREPARE PRESERVE 
  168. RESTRICT ROWS
  169. SCHEMA SECTION SESSION SESSION_USER SIZE SOME 
  170.  SQL SQLCODE SQLERROR SQLSTATE SUM SYSTEM_USER
  171. TEMPORARY TRANSLATE TRANSLATION 
  172. UNKNOWN UPPER USAGE
  173. VALUE 
  174. WHENEVER WRITE
  175.      </programlisting>
  176.     </para>
  177.    </sect2>
  178.    <sect2>
  179.     <title>Non-reserved Keywords</title>
  180.     <para>
  181.      <acronym>SQL92</acronym> and <acronym>SQL3</acronym> have 
  182.      <firstterm>non-reserved keywords</firstterm> which have
  183.      a proscribed meaning in the language but which are also allowed
  184.      as identifiers.
  185.      <productname>Postgres</productname> has additional keywords
  186.      which allow similar unrestricted usage.
  187.      In particular, these keywords
  188.      are allowed as column or table names.
  189.     </para>
  190.     <para>
  191.      The following are <productname>Postgres</productname>
  192.      non-reserved key words which are neither <acronym>SQL92</acronym>
  193.      nor <acronym>SQL3</acronym> non-reserved key words:
  194.      <programlisting>
  195. ACCESS AFTER AGGREGATE 
  196. BACKWARD BEFORE 
  197. CACHE CREATEDB CREATEUSER CYCLE
  198. DATABASE DELIMITERS 
  199. EACH ENCODING EXCLUSIVE
  200. FORWARD FUNCTION 
  201. HANDLER
  202. INCREMENT INDEX INHERITS INSENSITIVE INSTEAD ISNULL
  203. LANCOMPILER LOCATION 
  204. MAXVALUE MINVALUE MODE
  205. NOCREATEDB NOCREATEUSER NOTHING NOTNULL 
  206. OIDS OPERATOR 
  207. PASSWORD PROCEDURAL
  208. RECIPE RENAME  RETURNS ROW RULE
  209. SEQUENCE SERIAL SHARE START STATEMENT STDIN STDOUT 
  210. TRUSTED 
  211. VALID VERSION
  212.      </programlisting>
  213.     </para>
  214.     <para>
  215.      The following are <productname>Postgres</productname>
  216.      non-reserved key words which are <acronym>SQL92</acronym>
  217.      or <acronym>SQL3</acronym> reserved key words:
  218.      <programlisting>
  219. ABSOLUTE ACTION
  220. DAY
  221. HOUR
  222. INSENSITIVE 
  223. KEY 
  224. LANGUAGE 
  225. MATCH MINUTE MONTH
  226. NEXT 
  227. OF ONLY OPTION 
  228. PRIOR PRIVILEGES 
  229. READ RELATIVE 
  230. SCROLL SECOND
  231. TIME TIMESTAMP TIMEZONE_HOUR TIMEZONE_MINUTE TRIGGER 
  232. YEAR
  233. ZONE
  234.      </programlisting>
  235.     </para>
  236.     <para>
  237.      The following are <productname>Postgres</productname>
  238.      non-reserved key words which are also either <acronym>SQL92</acronym>
  239.      or <acronym>SQL3</acronym> non-reserved key words:
  240.      <programlisting>
  241. COMMITTED SERIALIZABLE TYPE
  242.      </programlisting>
  243.     </para>
  244.     <para>
  245.      The following are either <acronym>SQL92</acronym>
  246.      or <acronym>SQL3</acronym> non-reserved key words which are not
  247.      key words of any kind in <productname>Postgres</productname>:
  248.      <programlisting>
  249. ADA
  250. C CATALOG_NAME CHARACTER_SET_CATALOG CHARACTER_SET_NAME 
  251. CHARACTER_SET_SCHEMA CLASS_ORIGIN COBOL COLLATION_CATALOG
  252. COLLATION_NAME COLLATION_SCHEMA COLUMN_NAME
  253. COMMAND_FUNCTION CONDITION_NUMBER
  254. CONNECTION_NAME CONSTRAINT_CATALOG CONSTRAINT_NAME
  255. CONSTRAINT_SCHEMA CURSOR_NAME
  256. DATA DATE_TIME_INTERVAL_CODE DATE_TIME_INTERVAL_PRECISION
  257. DYNAMIC_FUNCTION
  258. FORTRAN
  259. LENGTH
  260. MESSAGE_LENGTH MESSAGE_OCTET_LENGTH MORE MUMPS
  261. NAME NULLABLE NUMBER
  262. PAD PASCAL PLI
  263. REPEATABLE RETURNED_LENGTH RETURNED_OCTET_LENGTH
  264. RETURNED_SQLSTATE ROW_COUNT
  265. SCALE SCHEMA_NAME SERVER_NAME SPACE
  266. SUBCLASS_ORIGIN
  267. TABLE_NAME
  268. UNCOMMITTED UNNAMED
  269.      </programlisting>
  270.     </para>
  271.    </sect2>
  272.   </sect1>
  273.   <sect1>
  274.    <title>Expressions</title>
  275.    <para>
  276.     <acronym>SQL92</acronym> allows <firstterm>expressions</firstterm>
  277.     to transform data in expressions. Expressions may contain operators
  278.     (see <xref linkend="operators-title" endterm="operators-title">
  279.     for more details) and functions
  280.     (<xref linkend="functions-title" endterm="functions-title"> has
  281.     more information).
  282.    </para>
  283.   </sect1>
  284.  </chapter>
  285. <!-- Keep this comment at the end of the file
  286. Local variables:
  287. mode: sgml
  288. sgml-omittag:nil
  289. sgml-shorttag:t
  290. sgml-minimize-attributes:nil
  291. sgml-always-quote-attributes:t
  292. sgml-indent-step:1
  293. sgml-indent-data:t
  294. sgml-parent-document:nil
  295. sgml-default-dtd-file:"./reference.ced"
  296. sgml-exposed-tags:nil
  297. sgml-local-catalogs:"/usr/lib/sgml/CATALOG"
  298. sgml-local-ecat-files:nil
  299. End:
  300. -->