この節では、PostgreSQL がどの程度 SQL 標準に 準拠しているかについて、概要を説明します。 SQL 標準への完全な準拠、 もしくは SQL 標準への準拠に関する完全な説明を行うと内容が複雑になり、 特に有益ではないため、この節では概要のみを説明します。
SQL 標準の公式な名称は、ISO/IEC 9075 "Database Language SQL" です。 この SQL 標準の改訂バージョンは不定期にリリースされています。 最新バージョンは 1999 年に発表されました。最新バージョンは ISO/IEC 9075:1999、もしくは非公式に SQL99 と呼ばれています。 SQL99 の 一つ前のバージョンは SQL92 です。 PostgreSQL の開発では、伝統的な機能もしくは 共通の考えと矛盾しないように、SQL 標準の最新の公式バージョンに準拠させ ようとしています。これを書いた時点では、SQL 標準の新しい改訂版についての 討論はまだ進行中です。改訂版が承認されれば、今後の PostgreSQL 開発において準拠すべき対象となる でしょう。
SQL92 では、適合性について 3 つの機能セット (Entry、Intermediate、および Full)を定義していました。 SQL 標準への準拠をうたっている多くのデータベース製品 では Entry レベルでしか適合していません。Intermediate もしくは Full レベルの機能の全体的なセットは、非常に大量になりすぎるか、もしくは旧来の 動作と競合するからです。
SQL99 では、SQL92 で使用されていた 不必要に広範囲な 3 つのレベルの代わりに、個々の機能の大規模なセットを定義 しています。これらの機能の大規模なサブセットは"核"となる機能 を表し、準拠する SQL のすべてが備える必要のある機能です。残りの機能は全く オプションです。オプション機能の中には、SQL 実装が準拠していることを宣言 できる"パッケージ"としてグループ化されるものもあります。 つまり特定の機能のグループへの準拠が可能です。
また、SQL99 標準は、5 つの部分に分かれています。 フレームワーク、ファンデーション、コールレベルインターフェイス、 永続格納モジュール、およびホスト言語バインディングです。 PostgreSQL では、フレームワーク、 ファンデーション、およびホスト言語バインディングのみをカバーして います。コールレベルインターフェイスは ODBC インターフェイスと似 ており、永続格納モジュールは PL/pgSQL プログラミング言語と似ています。しかし、どちらの場合も完全な準拠は 特に意図されていません。
以下の二つの節では、PostgreSQL でサポート されているこれらの機能をリストし、その後に PostgreSQL でまだサポート されていない SQL99 で定義された機能をリストしています。これら二つの リストは大変よく似ています。サポート対象であるとリストされている機能 が些細な部分で準拠していない可能性があり、サポートされていないある機能 の大部分が、実際には実装されている可能性があります。このドキュメントの 主要な部分では、動作するものとしないものについての最も正確な情報を常に 伝えます。
注意: ハイフンを含む機能コードはサブ機能です。したがって、特定のサブ機能が サポートされない場合、他のサブ機能がサポートされていてもそのメイン機能 はサポートされない機能としてリストされています。
| 識別子 | パッケージ | 説明 | コメント |
|---|---|---|---|
| B012 | コア | 埋め込みC | |
| B021 | 直接SQL | ||
| E011 | コア | 数値データ型 | |
| E011-01 | コア | INTEGERおよびSMALLINTデータ型 | |
| E011-02 | コア | REAL、DOUBLE PRECISIONおよび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-04 | コア | OPEN文 | |
| E121-08 | コア | CLOSE文 | |
| E121-10 | コア | FETCH文、暗黙的なNEXT | |
| E121-17 | コア | WITH HOLDカーソル | |
| E131 | コア | NULL値のサポート(値の代わりとなるNULL) | |
| E141 | コア | 基本整合性制約 | |
| E141-01 | コア | NOT NULL制約 | |
| E141-02 | コア | 非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およびREAD WRITE句 | |
| E161 | コア | 二重のマイナス記号から始まるSQLコメント | |
| E171 | コア | SQLSTATEサポート | |
| F021 | コア | 基本情報スキーマ | |
| F021-01 | コア | COLUMNSビュー | |
| F021-02 | コア | TABLESビュー | |
| F021-03 | コア | VIEWSビュー | |
| F021-04 | コア | TABLE_CONSTRAINTビュー | |
| F021-05 | コア | REFERENTIAL_CONSTRAINTビュー | |
| F021-06 | コア | CHECK_CONSTRAINTビュー | |
| 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 statement | ||
| 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データ型 (TIMESTAMPリテラルのサポートを含む) | |
| F051-04 | コア | DATE、TIMEおよびTIMESTAMPデータ型に対する比較術部 | |
| F051-05 | コア | 日付時刻型と文字型間の明示的なキャスト | |
| 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 | ユーザ毎の複数のスキーマ | ||
| F191 | 拡張整合性管理 | 参照削除動作 | |
| 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 | 読みとりのみのスクロール可能なカーソル | ||
| F431-01 | 明示的なNEXTを持つFETCH | ||
| F431-02 | FETCH FIRST | ||
| F431-03 | FETCH LAST | ||
| F431-04 | FETCH PRIOR | ||
| F431-05 | FETCH ABSOLUTE | ||
| 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 | Insensitive cursors | ||
| F801 | 完全な集合関数 | ||
| S071 | 拡張オブジェクトサポート | 関数内のSQLパスおよび型名の解決 | |
| S111 | 拡張オブジェクトサポート | 問い合わせ式内のONLY | |
| S211 | 拡張オブジェクトサポート , SQL/MMサポート | ユーザ定義のキャスト関数 | |
| T031 | BOOLEANデータ型 | ||
| T141 | SIMILAR術部 | ||
| T151 | DISTINCT術部 | ||
| T171 | テーブル定義内のLIKE句 | ||
| T191 | 拡張整合性管理 | 参照動作のRESTRICT | |
| T201 | 拡張整合性管理 | 参照制約用の比較可能なデータ型 | |
| T211-01 | 拡張整合性管理 , 能動データベース | 1つの基本テーブルの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 | コア | 関数呼び出し | |
| T321-06 | コア | ROUTINESビュー | |
| T321-07 | コア | PARAMETERSビュー | |
| T322 | PSM , SQL/MMサポート | SQLが呼び出す関数とプロシージャのオーバーロード | |
| T323 | 外部ルーチン用の明示的なセキュリティ | ||
| T351 | 挟まれたSQLコメント(/*...*/コメント) | ||
| T441 | ABSおよびMOD関数 | ||
| T501 | 拡張EXISTS術部 | ||
| T551 | デフォルトの構文用の省略可能なキーワード | ||
| T581 | 正規表現部分文字列関数 | ||
| T591 | NULL列を含むUNIQUE制約 |