この節では、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制約 |