| PostgreSQL | ||
|---|---|---|
| 上一頁 | 下一頁 | |
描述通用的 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
RESET
SETOF SHOW
UNLISTEN UNTIL
VACUUM VERBOSE
下面是 Postgres 特有的保留關鍵字,同時也是 SQL92 或 SQL3 的保留字。這些字允許做為字段標記出現,但不允許用作標識:
CASE COALESCE CROSS CURRENT CURRENT_USER
DEC DECIMAL
ELSE END
FALSE FOREIGN
GLOBAL GROUP
LOCAL
NULLIF NUMERIC
ORDER
POSITION PRECISION
SESSION_USER
TABLE THEN TRANSACTION TRUE
USER
WHEN
下面是 Postgres 特有的保留關鍵字,同時也是 SQL92 或 SQL3 的保留字:
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
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 的保留字,不過如果你把它們用做函數名,就總是會轉換成函數 length:
CHAR_LENGTH CHARACTER_LENGTH
下面的是 SQL92 或 SQL3 的保留字但不是 Postgres 的保留字,不過如果你把它們用做型態名,就總是會轉換成一個可替換的本機型態:
BOOLEAN DOUBLE FLOAT INT INTEGER INTERVAL REAL SMALLINT
下面的要麼是 SQL92 要麼是 SQL3 的保留字,但不是 Postgres 的保留字。這些字在寫作本章(v6.5)的時候在 Postgres 裡面沒有使用限制,但是未來有可能成為保留字:
注意: 這裡面有些關鍵字代表 SQL92 裡的函數。這些函數在 Postgres 裡面有定義。但是分析器不認為(函數)名字是關鍵字,因而它們可以用在其他環境裡。
ALLOCATE ARE ASSERTION AT AUTHORIZATION AVG
BIT BIT_LENGTH
CASCADED CATALOG COLLATION CONNECT CONNECTION
CONTINUE CONVERT CORRESPONDING COUNT
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 CREATEDB CREATEUSER CYCLE
DATABASE DELIMITERS
EACH ENCODING EXCLUSIVE
FORWARD FUNCTION
HANDLER
INCREMENT INDEX INHERITS INSENSITIVE INSTEAD ISNULL
LANCOMPILER LOCATION
MAXVALUE MINVALUE MODE
NOCREATEDB NOCREATEUSER NOTHING NOTNULL
OIDS OPERATOR
PASSWORD PROCEDURAL
RECIPE RENAME RETURNS ROW RULE
SEQUENCE SERIAL SHARE START STATEMENT STDIN STDOUT
TRUSTED
VALID VERSION
下面是 Postgres 的非保留關鍵字,同時也是 SQL92 或 SQL3 的保留關鍵字:
ABSOLUTE ACTION
CONSTRAINTS
DAY DEFERRABLE DEFERRED
HOUR
IMMEDIATE INITIALLY INSENSITIVE ISOLATION
KEY
LANGUAGE LEVEL
MATCH MINUTE MONTH
NEXT
OF ONLY OPTION
PENDANT PRIOR PRIVILEGES
READ RELATIVE RESTRICT
SCROLL SECOND
TIME TIMESTAMP TIMEZONE_HOUR TIMEZONE_MINUTE TRIGGER
YEAR
ZONE
下面的是 Postgres 的非保留關鍵字,同時也是 SQL92 或 SQL3的非保留關鍵字:
COMMITTED SERIALIZABLE TYPE
下面的要麼是 SQL92 要麼是 SQL3 的非保留關鍵字,但不是任何型態的 Postgres 的保留字:
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 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 SERVER_NAME SPACE SUBCLASS_ORIGIN
TABLE_NAME
UNCOMMITTED UNNAMED
| 上一頁 | 首頁 | 下一頁 |
| 版權和商標 | 開頭 | 注釋 |