2020.01.13 Monday
SQL標準の確認方法
SQL標準の確認方法
とある事情によりしばしば参照するため自分用のまとめ。
■SQL標準そのもの
古くはANSI, 最近はISOで行われているSQLの標準化。規格番号は以下になります。
ISO/IEC 9075
日本ではJISがX-3005として規格化しています。
これらは正式なものには値段がついていて、書籍やpdfは購入する必要があります。
英語版の正式なものの(安い)入手方法や、無料のものの参照方法は以下のエントリに詳しいです。
Don't Tell Anyone: The SQL Standard is Public!
英語版のWikipediaは結構参考になります。(たまに私も加筆しています。日本語版にも反映しなきゃなぁ。
JIS版は翻訳などに時間がかかるため、最新の英語版には追随していません。少し遅れています。
英語版の対応する規格のどの年度のものに対応するのかは、以下のページのそれぞれのpreviewで確認できます。
JSA GROUP Webdesk>規格・書籍・物品>JIX X 3005
それぞれWebからの閲覧のみ(印刷とダウンロード禁止)ならば、以下のページからx3005を検索すると確認できます。
JIS検索
簡易的にHTML化したものが見れるサイトもあるようです。
■SQL標準の解説本
英語も日本語もSQL-99がほとんどでそのあとSQL標準の解説書はない状態です。
日本語ではSQL-99についてスーパーテキスト、SQL:2003の一部解説がでたのみです。
■各RDBMSのマニュアル
ほとんどのオンラインマニュアル(この記事の下のほうにリンク)は、一か所にまとめられて、通常使うコマンドのSQL準拠度についてはわかりにくくなっています。例えばMySQLでも、次のリンクのようになっています。
1.7 MySQL の標準への準拠(MySQL 5.6 日本語マニュアル)
1.8 MySQL Standards Compliance(MySQL 8.0 English Manual)
わかりやすいものといえば、以下のPostgreSQLのマニュアルとSQL Anywhereのマニュアルです。各コマンドごとにSQL標準の準拠についての記述があります。
PostgreSQL 11.x マニュアル(日本語)
PostgreSQL 最新版マニュアル(英語)
SQL Anywhere サーバー - SQLリファレンス(SQL Anywhere 17)
SQL Anywhere サーバ SQLリファレンス(バージョン16)
■MimerのSQL構文チェッカーを使う[2020-01-17追記]
Mimer Information Technology AB(Mimer AB)は組み込み用RDBMSであるMimer SQLを開発している会社。そのオリジナルは1970年代からウプサラ大学で開発されており、可能な限りSQL標準に準拠することをポリシーにしています。
その会社がオンラインで以下のページを公開しており、これを利用することによりSQL-99にどの程度適合しているか、がわかります。適合してない場合でも、可能な限りSQL標準のどれかをお知らせしてくれます。
SQL Validator -99(Mimer)
例えば、MySQL 8.0.19でサポートされたTABLEステートメント「TABLE tbl1;」を上記バリデータに入力すると、以下のような出力結果がでます。
Validated SQL: table tbl1;
Validation result: The following feature outside Core SQL-99 is used:
F661, "Simple tables"
SQL queries stored anonymously for statistical purposes.
これは、Core SQL-99外の機能が使われており、それはF661, "Simple tables"という機能であることがわかります。
# SQLクエリは統計目的で、匿名で格納されることも明記されています。
このF661をサポート・未サポートにかかわらず、詳細に記述されているマイクロソフトのドキュメントで検索「site://docs.microsoft.com F661」すると、以下のドキュメントで確認できます。
2.1.2.90 F661, Simple tables
<explicit table> ::=
TABLE <table or query name>
そして、まだSQL Serverでは未サポートということがわかります。
Microsoft SQL Server 2008 R2 and Microsoft SQL Server 2012 vary as follows:
Transact-SQL does not support this feature.
とある事情によりしばしば参照するため自分用のまとめ。
■SQL標準そのもの
古くはANSI, 最近はISOで行われているSQLの標準化。規格番号は以下になります。
ISO/IEC 9075
日本ではJISがX-3005として規格化しています。
これらは正式なものには値段がついていて、書籍やpdfは購入する必要があります。
英語版の正式なものの(安い)入手方法や、無料のものの参照方法は以下のエントリに詳しいです。
Don't Tell Anyone: The SQL Standard is Public!
英語版のWikipediaは結構参考になります。(たまに私も加筆しています。日本語版にも反映しなきゃなぁ。
JIS版は翻訳などに時間がかかるため、最新の英語版には追随していません。少し遅れています。
英語版の対応する規格のどの年度のものに対応するのかは、以下のページのそれぞれのpreviewで確認できます。
JSA GROUP Webdesk>規格・書籍・物品>JIX X 3005
それぞれWebからの閲覧のみ(印刷とダウンロード禁止)ならば、以下のページからx3005を検索すると確認できます。
JIS検索
簡易的にHTML化したものが見れるサイトもあるようです。
■SQL標準の解説本
英語も日本語もSQL-99がほとんどでそのあとSQL標準の解説書はない状態です。
日本語ではSQL-99についてスーパーテキスト、SQL:2003の一部解説がでたのみです。
■各RDBMSのマニュアル
ほとんどのオンラインマニュアル(この記事の下のほうにリンク)は、一か所にまとめられて、通常使うコマンドのSQL準拠度についてはわかりにくくなっています。例えばMySQLでも、次のリンクのようになっています。
1.7 MySQL の標準への準拠(MySQL 5.6 日本語マニュアル)
1.8 MySQL Standards Compliance(MySQL 8.0 English Manual)
わかりやすいものといえば、以下のPostgreSQLのマニュアルとSQL Anywhereのマニュアルです。各コマンドごとにSQL標準の準拠についての記述があります。
PostgreSQL 11.x マニュアル(日本語)
PostgreSQL 最新版マニュアル(英語)
SQL Anywhere サーバー - SQLリファレンス(SQL Anywhere 17)
SQL Anywhere サーバ SQLリファレンス(バージョン16)
■MimerのSQL構文チェッカーを使う[2020-01-17追記]
Mimer Information Technology AB(Mimer AB)は組み込み用RDBMSであるMimer SQLを開発している会社。そのオリジナルは1970年代からウプサラ大学で開発されており、可能な限りSQL標準に準拠することをポリシーにしています。
その会社がオンラインで以下のページを公開しており、これを利用することによりSQL-99にどの程度適合しているか、がわかります。適合してない場合でも、可能な限りSQL標準のどれかをお知らせしてくれます。
SQL Validator -99(Mimer)
例えば、MySQL 8.0.19でサポートされたTABLEステートメント「TABLE tbl1;」を上記バリデータに入力すると、以下のような出力結果がでます。
Validated SQL: table tbl1;
Validation result: The following feature outside Core SQL-99 is used:
F661, "Simple tables"
SQL queries stored anonymously for statistical purposes.
これは、Core SQL-99外の機能が使われており、それはF661, "Simple tables"という機能であることがわかります。
# SQLクエリは統計目的で、匿名で格納されることも明記されています。
このF661をサポート・未サポートにかかわらず、詳細に記述されているマイクロソフトのドキュメントで検索「site://docs.microsoft.com F661」すると、以下のドキュメントで確認できます。
2.1.2.90 F661, Simple tables
<explicit table> ::=
TABLE <table or query name>
そして、まだSQL Serverでは未サポートということがわかります。
Microsoft SQL Server 2008 R2 and Microsoft SQL Server 2012 vary as follows:
Transact-SQL does not support this feature.
JUGEMテーマ:コンピュータ