付録 D. SQL への準拠

目次
D.1. サポートされている機能
D.2. サポートされていない機能

この節では、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 で定義された機能をリストしています。これら二つの リストは大変よく似ています。サポート対象であるとリストされている機能 が些細な部分で準拠していない可能性があり、サポートされていないある機能 の大部分が、実際には実装されている可能性があります。このドキュメントの 主要な部分では、動作するものとしないものについての最も正確な情報を常に 伝えます。

注意: ハイフンを含む機能コードはサブ機能です。したがって、特定のサブ機能が サポートされない場合、他のサブ機能がサポートされていてもそのメイン機能 はサポートされない機能としてリストされています。

D.1. サポートされている機能

識別子パッケージ説明コメント
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 
F302OLAP機能INTERSECTテーブル演算子 
F302-01OLAP機能INTERSECT DISTINCTテーブル演算子 
F302-02OLAP機能INTERSECT ALLテーブル演算子 
F304OLAP機能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 長い識別子 
F401OLAP機能拡張テーブル結合 
F401-01OLAP機能NATURAL JOIN 
F401-02OLAP機能FULL OUTER JOIN 
F401-03OLAP機能UNION JOIN 
F401-04OLAP機能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 真値試験 
F591OLAP機能派生テーブル 
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ビュー 
T322PSM , SQL/MMサポートSQLが呼び出す関数とプロシージャのオーバーロード 
T323 外部ルーチン用の明示的なセキュリティ 
T351 挟まれたSQLコメント(/*...*/コメント) 
T441 ABSおよびMOD関数 
T501 拡張EXISTS術部 
T551 デフォルトの構文用の省略可能なキーワード 
T581 正規表現部分文字列関数 
T591 NULL列を含むUNIQUE制約