| PostgreSQL 7.4 文檔 | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Fast Forward | Next | |
本節視圖描述 PostgreSQL 在多大 程度上遵循 SQL 標準。完全遵循標準或者是用一句完整的話來描述 對標準的兼容性都是非常復雜,並且沒有什麼很大用處的東西, 所以,我們在本節裡只是給出一個概述。
SQL 標準的正式名稱是 ISO/IEC 9705 "Database Language SQL" (譯注:沒有中文版。)標準的修改版會經常地發出;最近的一個版本是 在 1999 年出現的。那個版本被稱作 ISO/IEC 9075:1999,或者非正式 的稱作 SQL99。這個版本之前的是 SQL92。PostgreSQL 的開發力圖瞄準兼容標準最新的正式版本,只要這樣的兼容不會和傳統的 特性或者常識衝突。在我們寫到這裡的時候,(標準委員會)正在投票 建議新的標準的版本,如果這個標準通過了,那麼將會成為未來的 PostgreSQL 開發的兼容目標。
SQL92 為兼容性定義了三個特性集: 基本,中等,和完全。大多數聲稱兼容 SQL 標準 地數據庫產品都只是兼容基本級別,因為全部中等和完全的特性要麼是 太龐大,要麼就是和傳統的行為相衝突。
SQL99 定義了一個很大的獨立特性集合,而不是 SQL92那樣寬泛而又低效率的三個級別。 這些特性中的一個很大的子集形成"核心"特性, 它們是每種兼容 SQL 的實現必須提供的特性。其它的特性都是可選的。 有些可選的特性組合在一起形成"包",SQL 的實現可以 號稱遵循這些包,也就是聲稱遵循特定的特性組。
SQL99 標準也分裂成 5 部分: 框架,基礎,調用級別接口,永久存儲模塊,以及宿主語言綁定。 PostgreSQL 只覆蓋第一,二,和五部分。 第三部分類似于 ODBC 接口,第四部分類似于PL/pgSQL 變成語言,但是這兩部分都沒有特意進行準確地兼容。
在隨後地兩節裡,我們提供了PostgreSQL 所支持的這些特性地一個列表。 後面跟著一個在 SQL99 裡定義了但是在 PostgreSQL 裡還不支持的特性列表。 這兩個列表都是近似的:可能在列出為兼容的特性裡有一點點小的細節上的區別, 而很大部分的不支持的特性可能實際上已經實現了。文檔的主體總會是包含 有關哪些能用,哪些不能用的最準確的信息。
注意: 包含一個連字符的特性代碼表示一個子特性。因此, 如果不支持特定的子特性,那麼主特性也會列在不支持的特性, 即使我們支持其它的子特性也如此。
| 標識符 | 包 | 描述 | 注解 |
|---|---|---|---|
| B012 | 核心 | 嵌入的 C | |
| B021 | 直接的 SQL | ||
| E011 | 核心 | 數值數據類型 | |
| E011-01 | 核心 | INTEGER 和 SMALLINT 數據類型 | |
| E011-02 | 核心 | REAL, DOUBLE PRECISON, 和 FLOAT 數據類型 | |
| E011-03 | 核心 | DECIMAL 和 NUMERIC 數據類型 | |
| E011-04 | 核心 | 算術操作符 | |
| E011-05 | 核心 | 數值比較 | |
| E011-06 | 核心 | 在數值數據類型之間的隱含類型轉換 | |
| E021 | 核心 | 字符數據類型 | |
| E021-01 | 核心 | CHARACTER 數據類型 | |
| E021-02 | 核心 | CHARACTER VARYING 數據類型 | |
| E021-03 | 核心 | 字符文本 | |
| E021-04 | 核心 | CHARACTER_LENGTH 函數 | |
| E021-05 | 核心 | OCTET_LENGTH 函數 | |
| E021-06 | 核心 | SUBSTRING 函數 | |
| E021-07 | 核心 | 字符連接 | |
| E021-08 | 核心 | UPPER 和 LOWER 函數 | |
| E021-09 | 核心 | TRIM 函數 | |
| E021-10 | 核心 | 在字符數據類型之間的隱含類型轉換 | |
| E021-11 | 核心 | POSITION 函數 | |
| E021-12 | 核心 | 字符比較 | |
| E031 | 核心 | 標識符 | |
| E031-01 | 核心 | 分隔的標識符 | |
| E031-02 | 核心 | 小寫的標識符 | |
| E031-03 | 核心 | 結尾的下劃線 | |
| E051 | 核心 | 基本查詢聲明 | |
| E051-01 | 核心 | SELECT DISTINCT | |
| E051-02 | 核心 | GROUP BY 子句 | |
| E051-04 | 核心 | GROUP BY 可以包含不在<選擇列表>裡的項 | |
| E051-05 | 核心 | 選擇列表項的名字可以重命名 | 要求使用 AS |
| E051-06 | 核心 | HAVING 子句 | |
| E051-07 | 核心 | 在選擇列表中有修飾的 * | |
| E051-08 | 核心 | FROM 子句裡得關聯名 | |
| E051-09 | 核心 | 在 FROM 子句裡重命名字段 | |
| E061 | 核心 | 基本謂詞和搜索條件 | |
| E061-01 | 核心 | 比較謂詞 | |
| E061-02 | 核心 | BETWEEN 謂詞 | |
| E061-03 | 核心 | 帶一列數值的 IN 謂詞 | |
| E061-04 | 核心 | LIKE 謂詞 | |
| E061-05 | 核心 | LIKE 謂詞 ESCAPE 子句 | |
| E061-06 | 核心 | NULL 謂詞 | |
| E061-07 | 核心 | 有修飾的比較謂詞 | |
| E061-08 | 核心 | EXISTS 謂詞 | |
| E061-09 | 核心 | 比較謂詞裡的子查詢 | |
| E061-11 | 核心 | IN 謂詞裡面的子查詢 | |
| E061-12 | 核心 | 有修飾的比較謂詞中的子查詢 | |
| E061-13 | 核心 | 關聯子查詢 | |
| E061-14 | 核心 | 搜索條件 | |
| E071 | 核心 | 基本查詢表達式 | |
| E071-01 | 核心 | UNION DISTINCT 表操作符 | |
| E071-02 | 核心 | UNION ALL 表操作符 | |
| E071-03 | 核心 | EXCEPT DISTINCT 表操作符 | |
| E071-05 | 核心 | 通過表操作符組合的字段不必是完全相同的數據類型 | |
| E071-06 | 核心 | 子查詢中的表操作符 | |
| E081-01 | 核心 | SELECT 權限 | |
| E081-02 | 核心 | DELETE 權限 | |
| E081-03 | 核心 | 表級別的 INSERT 權限 | |
| E081-04 | 核心 | 表級別的 UPDATE 權限 | |
| E081-06 | 核心 | 表級別的 REFERENCES 權限 | |
| E081-08 | 核心 | WITH GRANT OPTION | |
| E091 | 核心 | 集合函數 | |
| E091-01 | 核心 | AVG | |
| E091-02 | 核心 | COUNT | |
| E091-03 | 核心 | MAX | |
| E091-04 | 核心 | MIN | |
| E091-05 | 核心 | SUM | |
| E091-06 | 核心 | ALL 修飾詞 | |
| E091-07 | 核心 | DISTINCT 修飾詞 | |
| E101 | 核心 | 基本數據操作 | |
| E101-01 | 核心 | INSERT 語句 | |
| E101-03 | 核心 | 搜索的 UPDATE 語句 | |
| E101-04 | 核心 | 搜索的 DELETE 語句 | |
| E111 | 核心 | 單行 SELECT 語句 | |
| E121-01 | 核心 | DECLARE CURSOR | |
| E121-02 | 核心 | ORDER BY 字段不必在選擇列表中 | |
| E121-03 | 核心 | ORDER BY 子句中的值表達式 | |
| E121-08 | 核心 | CLOSE 語句 | |
| E121-10 | 核心 | FETCH 語句隱含的 NEXT | |
| E131 | 核心 | 空值支持(null在數值場所) | |
| E141 | 核心 | 基本完整性約束 | |
| E141-01 | 核心 | NOT NULL 約束 | |
| E141-02 | 核心 | NOT NULL 字段的 UNIQUE 約束 | |
| E141-03 | 核心 | PRIMARY KEY 約束 | |
| E141-04 | 核心 | 參考刪除動作和參考更新動作的帶著 NO ACTION 缺省的基本 FOREIGN KEY 約束 | |
| E141-06 | 核心 | CHECK 約束 | |
| E141-07 | 核心 | 字段缺省 | |
| E141-08 | 核心 | PRIMARY KEY 上引申的 NOT NULL | |
| E141-10 | 核心 | 外鍵上的名字可以以任何順序聲明 | |
| E151 | 核心 | 事務支持 | |
| E151-01 | 核心 | COMMIT 語句 | |
| E151-02 | 核心 | ROLLBACK 語句 | |
| E152 | 核心 | 基本的 SET TRANSACTION 語句 | |
| E152-01 | 核心 | SET TRANSACTION 語句:ISOLATION LEVEL SERIALIZABLE 子句 | |
| E152-02 | 核心 | SET TRANSACTION 語句:READ ONLY and READ WRITE 子句 | |
| E161 | 核心 | 使用前導的雙減號的 SQL 注釋 | |
| F021 | 核心 | 基本信息模式 | |
| F021-01 | 核心 | COLUMNS 視圖 | |
| F021-02 | 核心 | TABLES 視圖 | |
| F021-03 | 核心 | VIEWS 視圖 | |
| F021-04 | 核心 | TABLE_CONSTRAINTS 視圖 | |
| F021-05 | 核心 | REFERENTIAL_CONSTRAINTS 視圖 | |
| F021-06 | 核心 | CHECK_CONSTRAINTS 視圖 | |
| F031 | 核心 | 基本模式操作 | |
| F031-01 | 核心 | 用于創建永久基本表的 CREATE TABLE 語句 | |
| F031-02 | 核心 | CREATE VIEW 語句 | |
| F031-03 | 核心 | GRANT 語句 | |
| F031-04 | 核心 | ALTER TABLE 語句:ADD COLUMN 子句 | |
| F031-13 | 核心 | DROP TABLE 語句:RESTRICT 子句 | |
| F031-16 | 核心 | DROP VIEW 語句:RESTRICT 子句 | |
| F031-19 | 核心 | REVOKE 語句:RESTRICT 子句 | |
| F032 | CASCADE 刪除行為 | ||
| F033 | ALTER TABLE 語句:DROP COLUMN 子句 | ||
| F034 | 擴展的 REVOKE 語句 | ||
| F034-01 | REVOKE 語句由模式對象所有者之外的用戶執行 | ||
| F034-02 | REVOKE 語句:GRANT OPTION FOR 子句 | ||
| F034-03 | 撤銷一個有 WITH GRANT OPTION 權限的受讓人的權限的 REVOKE 語句 | ||
| F041 | 核心 | 基本表連接 | |
| F041-01 | 核心 | 內連接(但是不一定是 INNER 鍵字) | |
| F041-02 | 核心 | INNER 鍵字 | |
| F041-03 | 核心 | LEFT OUTER JOIN | |
| F041-04 | 核心 | RIGHT OUTER JOIN | |
| F041-05 | 核心 | 可嵌套的外連接 | |
| F041-07 | 核心 | 在左連接或者右連接裡的內層表也可以用于內連接 | |
| F041-08 | 核心 | 支持所有比較操作符(而不僅僅是 = ) | |
| F051 | 核心 | 基本日期和時間 | |
| F051-01 | 核心 | DATE 數據類型(包括 DATE 文本支持) | |
| F051-02 | 核心 | 帶有小數秒部精度至少為 0 的 TIME 數據類型(包括 TIME 文本的支持) | |
| F051-03 | 核心 | 帶有至少 0 和 6 位小數精度的 TIMESTAMP 數據類型 (包括 TIMESTAME 文本的支持) | |
| F051-04 | 核心 | 在 DATE,TIME,和 TIMESTAMP 數據類型上的比較謂詞 | |
| F051-05 | 核心 | 在日期時間類型和字符類型之間的明確 CAST | |
| F051-06 | 核心 | CURRENT_DATE | |
| F051-07 | 核心 | LOCALTIME | |
| F051-08 | 核心 | LOCALTIMESTAMP | |
| F052 | 增強日期時間設施 | 時間間隔和日期時間算術 | |
| F081 | 核心 | 視圖裡的 UNION 和 EXCEPT | |
| F111-02 | READ COMMITTED 隔離級別 | ||
| F131 | 核心 | 分組的操作 | |
| F131-01 | 核心 | 在帶有分組的視圖的查詢裡支持 WHERE,GROUP BY,和 HAVING 子句 | |
| F131-02 | 核心 | 在帶有分組的視圖的查詢支持多個表 | |
| F131-03 | 核心 | 在帶有分組的視圖的查詢裡支持集合函數 | |
| F131-04 | 核心 | 帶有 GROUP BY 和 HAVING 子句和分組視圖的子查詢 | |
| F131-05 | 核心 | 帶有 GROUP BY 和 HAVING 子句以及分組視圖的單行 SELECT | |
| F171 | 每用戶的多個模式 | ||
| F201 | 核心 | CAST 函數 | |
| F221 | 核心 | 明確的缺省 | |
| F222 | INSERT 語句:DEFAULT VALUES 子句 | ||
| F231 | 權限表 | ||
| F231-01 | TABLE_PRIVILEGES 視圖 | ||
| F231-02 | COLUMN_PRIVILEGES 視圖 | ||
| F231-03 | USAGE_PRIVILEGES 視圖 | ||
| F251 | 域支持 | ||
| F261 | 核心 | CASE 表達式 | |
| F261-01 | 核心 | 簡單 CASE | |
| F261-02 | 核心 | 搜索的 CASE | |
| F261-03 | 核心 | NULLIF | |
| F261-04 | 核心 | COALESCE | |
| F271 | 混合字符文本 | ||
| F281 | LIKE 增強 | ||
| F302 | OLAP 設施 | INTERSECT 表操作符 | |
| F302-01 | OLAP 設施 | INTERSECT DISTINCT 表操作符 | |
| F302-02 | OLAP 設施 | INTERSECT ALL 表操作符 | |
| F304 | OLAP 設施 | EXCEPT ALL 表操作符 | |
| F311-01 | 核心 | CREATE SCHEMA | |
| F311-02 | 核心 | 用于永久表的 CREATE TABLE | |
| F311-03 | 核心 | CREATE VIEW | |
| F311-05 | 核心 | GRANT 語句 | |
| F321 | 用戶認證 | ||
| F361 | 子程序支持 | ||
| F381 | 擴展的模式操作 | ||
| F381-01 | ALTER TABLE 語句:ALTER COLUMN 子句 | ||
| F381-02 | ALTER TABLE 語句:ADD CONSTRAINT 子句 | ||
| F381-03 | ALTER TABLE 語句:DROP CONSTRAINT 子句 | ||
| F391 | 長標識符 | ||
| F401 | OLAP 設施 | 擴展的表連接 | |
| F401-01 | OLAP 設施 | NATURAL JOIN | |
| F401-02 | OLAP 設施 | FULL OUTER JOIN | |
| F401-03 | OLAP 設施 | UNION JOIN | |
| F401-04 | OLAP 設施 | CROSS JOIN | |
| F411 | 增強日期時間設施 | 時區聲明 | |
| F421 | 國家字符 | ||
| F431-01 | 帶明確 FETCH 的 NEXT | ||
| F431-04 | FETCH PRIOR | ||
| F431-06 | FETCH RELATIVE | ||
| F441 | 擴展的集合函數支持 | ||
| F471 | 核心 | 標量子查詢數值 | |
| F481 | 核心 | 擴展的 NULL 謂詞 | |
| F491 | 增強完整性管理 | 約束管理 | |
| F501 | 核心 | 特性和兼容性視圖 | |
| F501-01 | 核心 | SQL_FEATURES 視圖 | |
| F501-02 | 核心 | SQL_SIZING 視圖 | |
| F501-03 | 核心 | SQL_LANGUAGES 視圖 | |
| F502 | 增強的文檔表 | ||
| F502-01 | SQL_SIZING_PROFILES 視圖 | ||
| F502-02 | SQL_IMPLEMENTATION_INFO 視圖 | ||
| F502-03 | SQL_PACKAGES 視圖 | ||
| F511 | BIT 數據類型 | ||
| F531 | 臨時表 | ||
| F555 | 增強日期時間設施 | 增強的秒精度 | |
| F561 | 全值表達式 | ||
| F571 | 真值測試 | ||
| F591 | OLAP 設施 | 衍生表 | |
| F611 | 指示器數據類型 | ||
| F651 | 表名字修飾詞 | ||
| F701 | 增強完整性管理 | 參考更新動作 | |
| F711 | ALTER 域 | ||
| F761 | 會話管理 | ||
| F771 | 連接管理 | ||
| F781 | 自引用的操作 | ||
| F791 | 不敏感的遊標 | ||
| F801 | 全部集合函數 | ||
| S071 | 增強的對象支持 | 函數中的 SQL 路徑以及類型名解析 | |
| S111 | 增強的對象支持 | 查詢表達式中的 ONLY | |
| S211 | 增強的對象支持, SQL/MM 支持 | 用戶定義類型轉換函數 | |
| T031 | BOOLEAN 數據類型 | ||
| T141 | SIMILAR 謂詞 | ||
| T151 | DISTINCT 謂詞 | ||
| T191 | 增強完整性管理 | 參考動作 RESTRICT | |
| T201 | 增強完整性管理 | 用于參考完整性的可比較的數據類型 | |
| T211-01 | 增強完整性管理, 激活數據庫 | 在一個基本表的 UPDATE,INSERT,或者 DELETE 上活躍的觸發器 | |
| T211-02 | 增強完整性管理, 激活數據庫 | BEFORE 觸發器 | |
| T211-03 | 增強完整性管理, 激活數據庫 | AFTER 觸發器 | |
| T211-04 | 增強完整性管理, 激活數據庫 | FOR EACH ROW 觸發器 | |
| T211-07 | 增強完整性管理, 激活數據庫 | TRIGGER 權限 | |
| T212 | 增強完整性管理 | 增強的觸發器功能 | |
| T231 | SENSITIVE 遊標 | ||
| T241 | START TRANSACTION 語句 | ||
| T312 | OVERLAY 函數 | ||
| T321-01 | 核心 | 不重載的用戶定義函數 | |
| T321-03 | 核心 | 函數調用 | |
| T322 | PSM, SQL/MM 支持 | SQL 調用的函數以及過程的重載 | |
| T323 | 外部過程的明確安全 | ||
| T351 | SQL 中的塊注釋(/*...*/注釋) | ||
| T441 | ABS 和 MOD 函數 | ||
| T501 | 增強的 EXISTS 謂詞 | ||
| T551 | 缺省語法的可選鍵字 | ||
| T581 | 正則表達式子字串函數 | ||
| T591 | 可能的空字段的 UNIQUE 約束 |