当前位置:早雪网网络学院编程文档数据库技术Postgresql → PostgreSQL7.0手册-用户手册-2. SQL 语法

PostgreSQL7.0手册-用户手册-2. SQL 语法

减小字体 增大字体 作者:不详  来源:supcode.com收集整理  发布时间:2005-7-23 12:18:20
第二章. SQL 语法
内容 
关键字 
注释 
名称 
常量 
域和列(字段) 
操作符 
表达式 



描述通用的 SQL 语法。
SQL 操作数据集。该语言由多种多样的 关键字 组成。它允许使用算术和过程表达式。我们将在本章讨论这个问题;随后的章节将包括一些关于数据类型,函数和操作符的细节。 
关键字
SQL92 为这门语言定义了有明确意义的 关键字 。有些关键字是 保留字,表明它们只限于出现在某些特定的环境里。其他关键字是 非限制字,表明它们在某些特定的环境里有特殊含义,否则没有什么限制。 
Postgres 实现了一个扩展了的 SQL92 和 SQL3 语言的子集。部分由于 Postgres 的可扩展性,一些语言元素在 Postgres 里的实现不象在语言标准里期望的那样严格(限制)。 

关于SQL92 和 SQL3 关键字的信息源自 Date and Darwen, 1997。 

保留关键字
SQL92 和 SQL3 有一些 保留关键字 除了在 SQL 语句里面用做基本元素外不允许用做标识或者任何其它用途。Postgres 有另外一些关键字也有类似约束。具体来说,这些关键字不允许用做字段或者表名称,尽管有时候它们可以用做字段标签(例如,在AS子句里)。 
小技巧: 如果用双引号包围(“象这样!”),任何字串都可以声明为标识。这时我们要仔细一些,因为这样做一个标识将是大小写敏感的并且将保有嵌入的空白或其他特殊字符。
下面是 Postgres 特有的保留关键字,它们既不是 SQL92 也不是 SQL3 保留字。这些字允许做为字段标记出现,但不允许用作标识: 
ABORT ANALYZE 
BINARY 
CLUSTER CONSTRAINT COPY
DO 
EXPLAIN EXTEND
LISTEN LOAD LOCK 
MOVE 
NEW NONE NOTIFY 
OFFSET 
RESET 
SETOF SHOW
UNLISTEN UNTIL 
VACUUM VERBOSE

下面是 Postgres 的保留关键字,同时也是 SQL92 或SQL3 的保留字。这些字允许做为字段标记出现,但不允许用作标识: 
ALL ANY ASC BETWEEN BIT BOTH 
CASE CAST CHAR CHARACTER CHECK COALESCE COLLATE COLUMN
 CONSTRAINT CROSS CURRENT CURRENT_DATE CURRENT_TIME
 CURRENT_TIMESTAMP CURRENT_USER 
DEC DECIMAL DEFAULT DESC DISTINCT 
ELSE END EXCEPT EXISTS EXTRACT 
FALSE FLOAT FOR FOREIGN FROM FULL 
GLOBAL GROUP 
HAVING 
IN INNER INTERSECT INTO IS 
JOIN 
LEADING LEFT LIKE LOCAL
NATURAL NCHAR NOT NULL NULLIF NUMERIC 
ON OR ORDER OUTER OVERLAPS 
POSITION PRECISION PRIMARY PUBLIC
REFERENCES RIGHT 
SELECT SESSION_USER SOME SUBSTRING 
TABLE THEN TO TRANSACTION TRIM TRUE
UNION UNIQUE USER 
VARCHAR 
WHEN WHERE 

下面是 Postgres 的保留关键字,同时也是 SQL92 或SQL3 的保留字: 
ADD ALTER AND AS 
BEGIN BY
CASCADE CLOSE COMMIT CREATE CURSOR
DECLARE DEFAULT DELETE DESC DISTINCT DROP
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 
ON OR OUTER
PARTIAL PRIMARY PRIVILEGES PROCEDURE PUBLIC
REFERENCES REVOKE RIGHT ROLLBACK
SELECT SET SUBSTRING
TO TRAILING TRIM 
UNION UNIQUE UPDATE USING
VALUES VARCHAR VARYING VIEW
WHERE WITH WORK 

下面的是 SQL92 的保留字但不是 Postgres 的保留字,不过如果你把它们做函数名用,就总是会被转换成函数 CHAR_LENGTH: 
CHARACTER_LENGTH

下面的是 SQL92 或 SQL3 的保留字但不是 Postgres 的保留字,不过如果你把它们用做类型名,就总是会转换成一个可替换的本机类型: 
BOOLEAN DOUBLE FLOAT INT INTEGER INTERVAL REAL SMALLINT

下面的不是任何类型的关键字,不过如果你在一个类型名的环境中使用它们,它们就会转换成一个Postgres 本机类型,而在一个函数名的环境中使用它们,它们会被转换成一个本机函数: 
DATETIME TIMESPAN

(相应地转换成 TIMESTAMP 和 INTERVAL)。这个特性用于帮助向 v7.0 转换,将在下一个完全发布版本(估计是 v7.1)删除。 
下面的要么是 SQL92 要么是 SQL3 的保留字,但不是 Postgres 的保留字。这些字在写作本章(v7.0)的时候在 Postgres 里面没有使用限制,但是未来有可能成为保留字: 

注意: 这里面有些关键字代表 SQL92 里的函数。这些函数在 Postgres 里面有定义。但是分析器不认为(函数)名字是关键字,因而它们可以用在其他环境里。
ALLOCATE ARE ASSERTION AT AUTHORIZATION AVG 
BIT_LENGTH
CASCADED CATALOG CHAR_LENGTH CHARACTER_LENGTH COLLATION
 CONNECT CONNECTION CONTINUE CONVERT CORRESPONDING COUNT
 CURRENT_SESSION
DATE DEALLOCATE DEC DESCRIBE DEscriptOR
 DIAGNOSTICS DISCONNECT DOMAIN 
ESCAPE EXCEPT EXCEPTION EXEC EXTERNAL 
FIRST FOUND
GET GO GOTO 
IDENTITY INDICATOR INPUT INTERSECT
LAST LOWER 
MAX MIN MODULE 
OCTET_LENGTH OPEN OUTPUT OVERLAPS 
PREPARE PRESERVE 
ROWS
SCHEMA SECTION SESSION SIZE SOME 
 SQL SQLCODE SQLERROR SQLSTATE SUM SYSTEM_USER
TEMPORARY TRANSLATE TRANSLATION 
UNKNOWN UPPER USAGE
VALUE 
WHENEVER WRITE

非保留关键字
SQL92 和 SQL3 有一些 非保留关键字,它们在语言里有受约束的含义但是允许被当作标识使用。Postgres 有另外一些关键字允许类似的非限制性使用。具体来说,这些关键字允许当做字段或者表名来用。 
下面是 Postgres 非保留关键字,它们既不是 SQL92 也不是 SQL3 的非保留关键字: 

ACCESS AFTER AGGREGATE 
BACKWARD BEFORE 
CACHE COMMENT CREATEDB CREATEUSER CYCLE
DATABASE DELIMITERS 
EACH ENCODING EXCLUSIVE
FORCE FORWARD FUNCTION 
HANDLER
INCREMENT INDEX INHERITS INSENSITIVE INSTEAD ISNULL
LANCOMPILER LOCATION 
MAXVALUE MINVALUE MODE

[1] [2] [3]  下一页

[数据载入中...] [返回上一页] [打 印]