SQL

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ
SQL(構造化照会言語)
パラダイム宣言型
家族クエリ言語
によって設計されたドナルド・D・チェンバリン
レイモンド・F・ボイス
デベロッパーISO / IEC
初登場1974 ; 47年前 (1974
安定リリース
SQL:2016 / 2016年12月; 4年前 (2016-12
規律の入力静的強い
OSクロスプラットフォーム
Webサイトwww .iso .org / standard / 63555 .html
主要な実装
多くの
方言
に影響を受けた
データログ
影響を受ける
CQLLINQSPARQL、SOQL、PowerShell[1] JPQLjOOQN1QL
SQL(ファイル形式)
ファイル名拡張子
.sql
インターネットメディアタイプ
application / sql [2] [3]
によって開発されたISO / IEC
初回リリース1986 (1986
フォーマットの種類データベース
標準ISO / IEC 9075
オープンフォーマットはい
Webサイトwww .iso .org / standard / 63555 .html

SQLは、/ ˌ ɛ S ˌ k個のチュɛのL / 聞くこの音について SQL[4] / S I K W əl / "続編"、構造化照会言語[5]であるドメイン固有言語プログラミングに使用されるとリレーショナルデータベース管理システム(RDBMS)で保持されているデータを管理するため、またはリレーショナルデータストリーム管理システム(RDSMS)でストリームを処理するために設計されています。特に取り扱いに便利です構造化データ、つまりエンティティと変数間の関係を組み込んだデータ。

SQLにはISAMVSAMなどの古い読み取り/書き込みAPIに比べて2つの主な利点がありますまず、1つのコマンドで多くのレコードにアクセスするという概念が導入されました。次に、インデックスの有無など、レコードに到達する方法を指定する必要がなくなります

元々基づくリレーショナル代数タプルリレーショナル計算、SQLは、多くの文のタイプから成り[6]非公式として分類することができるサブ言語:、一般にデータ照会言語(DQL)、[A]は、データ定義言語(DDL)[B]データ制御言語(DCL)、およびデータ操作言語(DML)。[c] [7] SQLの範囲には、データクエリ、データ操作(挿入、更新、削除)、データ定義(スキーマの作成と変更)、およびデータアクセス制御が含まれます。 SQLは本質的に宣言型言語4GL)、手続き型要素も含まれています

SQLは、Edgar F.Coddリレーショナルモデルを使用した最初の商用言語の1つでしたこのモデルは、彼の影響力のある1970年の論文「大規模な共有データバンクのデータのリレーショナルモデル」で説明されています。[8] Coddによって説明されいるリレーショナルモデルに完全に準拠しているわけではありませんが、最も広く使用されているデータベース言語になりました。[9] [10]

SQLは、1986年に米国規格協会(ANSI)の標準なり、1987年に国際標準化機構(ISO)の標準になりました。[11]それ以来、標準は改訂され、より多くの機能が含まれるようになりました。標準が存在するにもかかわらず、ほとんどのSQLコードは、異なるデータベースシステムに移植する前に、少なくともいくつかの変更が必要です。

歴史

SQLは、1970年代初頭にエドガーF.コッド[12]からリレーショナルモデルについて学んだ後ドナルドD.チェンバリンレイモンドF.ボイスによってIBMで最初に開発されまし[13]最初にSEQUEL(ストラクチャード英語クエリ言語)と呼ばれるこのバージョンは、IBMの元quasirelationalデータベース管理システムに格納されたデータを操作して取得するように設計されたシステムRでグループ、IBMサンノゼ研究所が1970年代に開発していたが。[13]

チェンバリンとボイスが最初にリレーショナルデータベース言語を試みたのはSQUARE(リレーショナル環境でのQUerieの指定)でしたが、下付き文字/上付き文字の表記のために使用するのは困難でした。 1973年にサンノゼ研究所に移った後、SQUAREの続編に取り組み始めました。[12]「SEQUEL」は英国に本拠を置くHawkerSiddeley Dynamics Engineering Limitedの商標あったため、SEQUELの名前は後にSQLに変更されました(母音を削除しました)[14] ラベルStructuredQuery Languageは、後にSQLの頭字語になりました。

IBMは、顧客のテストサイトでSQLをテストしてシステムの有用性と実用性を判断した後、1979年、1981年に市販されていたSystem / 38SQL / DSDB2などのSystemRプロトタイプに基づいた商用製品の開発を開始しました。それぞれ1983年と1983年。[15]

1970年代後半には、リレーショナル・ソフトウェア株式会社(現オラクル社は)コッド、チェンバレン、およびボイスで説明した概念の可能性を見て、自分のSQLベースの開発RDBMSをにそれを販売するの願望で米海軍中央情報エージェンシー、およびその他の米国政府機関。 1979年6月、リレーショナルソフトウェアは、SQLの最初の市販の実装であるVAXコンピュータ用のOracle V2(バージョン2)を発表しました

1986年までに、ANSIおよびISO標準グループは、標準の「データベース言語SQL」言語定義を正式に採用しました。この規格の新しいバージョンは、1989年、1992年、1996年、1999年、2003年、2006年、2008年、2011年、[12]、そして最近では2016年に公開されました[16]

構文

単一のステートメントを構成するSQL言語要素のいくつかを示すグラフ

SQL言語は、次のようないくつかの言語要素に細分されます。

  • 文とクエリの構成成分です、。(場合によっては、これらはオプションです。)[17]
  • スカラー値、またはデータの構成されるテーブルのいずれかを生成できます。
  • 述語。SQLの3値論理(3VL)(true / false / unknown)またはブール 真理値に評価できる条件を指定し、ステートメントとクエリの効果を制限したり、プログラムフローを変更したりするために使用されます。
  • 特定の基準に基づいてデータを取得するクエリこれはSQLの重要な要素です
  • ステートメント。スキーマとデータに永続的な影響を与える可能性があります。またはトランザクション、プログラムフロー、接続、セッション、または診断を制御する可能性があります。
    • SQLステートメントには、セミコロン( ";")ステートメントターミネーターも含まれます。すべてのプラットフォームで必須というわけではありませんが、SQL文法の標準部分として定義されています。
  • SQLステートメントおよびクエリでは、通常、重要でない空白は無視されるため、SQLコードを読みやすくフォーマットするのが簡単になります。

手続き型拡張

SQLはリレーショナルデータベースに含まれるデータをクエリするという特定の目的のために設計されていますSQLはセットベースの宣言型プログラミング言語であり、CBASICのような命令型プログラミング言語ではありませんただし、標準SQLの拡張機能により、フロー制御構造などの手続き型プログラミング言語機能が追加されますこれらには以下が含まれます:

ソース 略語 フルネーム
ANSI / ISO規格 SQL / PSM SQL /永続的な保存モジュール
Interbase / Firebird PSQL 手続き型SQL
IBM DB2 SQL PL SQL手続き型言語(SQL / PSMを実装)
IBM Informix SPL 保存された手続き型言語
IBM Netezza NZPLSQL [18] (Postgres PL / pgSQLに基づく)
有利 PSQL [19] Invantive Procedural SQL(SQL / PSMおよびPL / SQLを実装
MariaDB SQL / PSMPL / SQL SQL /永続保存モジュール(SQL / PSMを実装)、手続き型言語/ SQL(Adaに基づく[20]
Microsoft / Sybase T-SQL Transact-SQL
Mimer SQL SQL / PSM SQL /永続保存モジュール(SQL / PSMを実装)
MySQL SQL / PSM SQL /永続保存モジュール(SQL / PSMを実装)
MonetDB SQL / PSM SQL /永続保存モジュール(SQL / PSMを実装)
NuoDB SSP スターキーストアドプロシージャ
オラクル PL / SQL 手続き型言語/ SQL(Adaに基づく
PostgreSQL PL / pgSQL 手続き型言語/ PostgreSQL構造化照会言語(縮小されたPL / SQLに基づく
SAP R / 3 ABAP 高度なビジネスアプリケーションプログラミング
SAP HANA SQLScript SQLScript
Sybase Watcom-SQL SQL AnywhereWatcom-SQLダイアレクト
Teradata SPL 保存された手続き型言語

標準のSQL / PSM拡張機能と独自のSQL拡張機能に加えて、手続き型およびオブジェクト指向のプログラマビリティは、他の言語とのDBMS統合を介して多くのSQLプラットフォームで利用できます。 SQL標準は、SQLデータベースでJavaコードをサポートするために、SQL / JRT拡張機能(Javaプログラミング言語のSQLルーチンとタイプ)を定義しています。マイクロソフトSQL Server 2005人の用途SQLCLRホストの管理に(SQL Serverの共通言語ランタイム)の.NETでのアセンブリデータベース、SQL Serverの以前のバージョンは、主にC言語で書かれた管理されていない拡張ストアドプロシージャに制限している間のPostgreSQLユーザーは、PerlPythonTclJavaScript(PL / V8)、Cなどのさまざまな言語で関数を記述できます[21]

相互運用性と標準化

概要

SQL実装はベンダー間で互換性がなく、必ずしも標準に完全に準拠しているわけではありません。特に、日付と時刻の構文、文字列の連結、NULLs、および大文字と小文字の比較の区別は、ベンダーごとに異なります。特定の例外は、標準への準拠を目指しているPostgreSQL [22]MimerSQL [23]ですが、PostgreSQLはすべての場合に標準に準拠しているわけではありません。たとえば、PostgreSQLで引用符で囲まれていない名前を小文字に折りたたむことはSQL標準[24]と互換性がなく、引用符で囲まれていない名前は大文字に折りたたむ必要があるとされています。[25]したがって、規格に従わないFooことと同等である必要があります。 FOOfoo

SQLの一般的な実装では、通常、DATEまたはTIMEデータ型などの標準SQLの基本機能のサポートが省略されています。最も明白な例、そして偶然に最も人気のある商業と独自のSQLのDBMSは、Oracleのです(そのDATE振る舞いとしてDATETIME[26] [27]と欠けているTIMEタイプ)[28](2008年版以前)およびMS SQL Serverの。その結果、SQLコードを変更せずにデータベースシステム間で移植することはめったにありません。

非互換性の理由

データベースシステム間の移植性の欠如のいくつかの理由は次のとおりです。

  • SQL標準の複雑さとサイズは、ほとんどの実装者が標準全体をサポートしていないことを意味します。
  • この標準では、いくつかの重要な領域(インデックス、ファイルストレージなど)でのデータベースの動作は指定されておらず、動作方法を決定するための実装が残されています。
  • SQL標準は、準拠するデータベースシステムが実装する必要のある構文を正確に指定します。ただし、言語構造のセマンティクスに関する標準の仕様はあまり明確に定義されていないため、あいまいさが生じます。
  • 多くのデータベースベンダーは、既存の大規模な顧客ベースを持っています。新しいバージョンのSQL標準がベンダーのデータベースの以前の動作と競合する場合、ベンダーは下位互換性を破ることを望まない可能性があります。
  • ベンダーがデータベースサプライヤーの変更を容易にするための商業的インセンティブはほとんどありません(ベンダーロックインを参照)。
  • データベースソフトウェアを評価するユーザーは、パフォーマンスなどの他の要素を標準への準拠よりも優先する傾向があります。

標準化履歴

SQLは、1986年にANSIによってSQL-86 [29]として、ISOは1987年に標準として採用されました。[11] ISO / IEC JTC 1、情報技術、小委員会SC 32、データ管理および交換によって維持されています。

1996年まで、米国国立標準技術研究所(NIST)のデータ管理標準プログラムは、SQLDBMSがSQL標準に準拠していることを証明していました。ベンダーは現在、自社製品のコンプライアンスを自己認証しています。[30]

元の標準は、 "SQL"の公式発音があったことを宣言initialism/ ˌ ɛ S ˌ K JU ɛ L /( "ESSキューエル")。[9]にかかわらず、多くの英語圏のデータベースの専門家(ドナルド・チェンバレン自身を含む[31] を使用頭字語の発音様/ sのI Kワットəl /(「続編」)、[32]ミラーリング言語のプレリリースの開発名を、「SEQUEL」。[13] [14] [31]
SQL標準は、いくつかの改訂を経ています。

名前 エイリアス コメント
1986 SQL-86 SQL-87 ANSIによって最初に正式化されました
1989年 SQL-89 FIPS 127-1 FIPS 127-1として採用された、整合性制約を追加したマイナーリビジョン
1992年 SQL-92 SQL2、FIPS 127-2 メジャーリビジョン(ISO 9075)、FIPS127-2として採用されたエントリレベルSQL-92
1999年 SQL:1999 SQL3 正規表現のマッチング、再帰クエリ推移閉包など)、トリガー、手続き型およびフロー制御ステートメントのサポート、非スカラー型(配列)、および一部のオブジェクト指向機能(構造化型など)、JavaへのSQLの埋め込みのサポートが追加されました(SQL / OLB)およびその逆(SQL / JRT
2003年 SQL:2003 XML関連の機能(SQL / XML)、ウィンドウ関数、標準化されたシーケンス、および自動生成された値を持つ列(ID列を含む)が 導入されました
2006年 SQL:2006 ISO / IEC 9075-14:2006は、SQLをXMLで使用する方法を定義しています。これは、XMLデータをSQLデータベースにインポートして格納し、データベース内で操作し、XMLと従来のSQLデータの両方をXML形式で公開する方法を定義します。さらに、アプリケーションは、World Wide Webコンソーシアム(W3Cによって公開されているXMLクエリ言語であるXQueryを使用してクエリをSQLコードに統合し、通常のSQLデータとXMLドキュメントに同時にアクセスできます。[33]
2008年 SQL:2008 カーソル定義外のORDERBYを合法化します。INSTEAD OFトリガー、TRUNCATEステートメント、[34] FETCH句を 追加します
2011 SQL:2011 時制データを追加します(PERIOD FOR)[35](詳細については、Temporal database#Historyを参照してください)。ウィンドウ関数とFETCH句の機能強化[36]
2016年 SQL:2016 行パターンマッチング、ポリモーフィックテーブル関数、JSONを追加します
2019年 SQL:2019 パート15、多次元配列(MDarrayタイプと演算子)を追加します

現在の標準

この規格は通常、次のパターンで示されます:ISO / IEC 9075-n:yyyyパートn:タイトル、またはショートカットとして、ISO / IEC9075

ISO / IEC 9075は、ISO / IEC 13249:SQLマルチメディアおよびアプリケーションパッケージ(SQL / MM)によって補完されます。これは、ビデオ、オーディオ、空間データなどの広く普及しているアプリケーションへのSQLベースのインターフェイスとパッケージを定義します利害関係者は、ISO、[37] IECまたはANSIからSQL標準文書を購入できますSQL:2008のドラフトは、zipアーカイブとして無料で入手できます。[38]

SQL標準の構造

SQL標準は10の部分に分割されていますが、古い部分が削除されたため、番号にギャップがあります。

  • ISO / IEC 9075-1:2016パート1:フレームワーク(SQL /フレームワーク)。論理的な概念を提供します。[39]
  • ISO / IEC 9075-2:2016パート2:基盤(SQL /基盤)。言語の最も中心的な要素が含まれており、必須機能とオプション機能の両方で構成されています。
  • ISO / IEC 9075-3:2016パート3:コールレベルインターフェイスSQL / CLI)。これは、Ada、C、それぞれC ++、COBOL、Fortran、MUMPS、Pascal、またはPL / Iで記述されたアプリケーションからSQLステートメントを実行するために使用できるインターフェースコンポーネント(構造、プロシージャー、変数バインディング)を定義します。 (Javaについては、パート10を参照してください。)SQL / CLIは、SQLステートメントおよびSQL / CLIプロシージャ呼び出しが呼び出し元のアプリケーションのソースコードとは別のものとして扱われるように定義されています。Open Database Connectivityは、SQL / CLIのよく知られたスーパーセットです。標準のこの部分は、必須機能のみで構成されています。
  • ISO / IEC 9075-4:2016パート4:永続的な保存モジュールSQL / PSM)。制御フロー、条件処理、ステートメント条件シグナルと再シグナル、カーソルとローカル変数、変数とパラメーターへの式の割り当てなど、SQLの手続き型拡張を標準化します。さらに、SQL / PSMは、永続データベース言語ルーチン(「ストアドプロシージャ」など)の宣言と保守を形式化します。標準のこの部分は、オプション機能のみで構成されています。
  • ISO / IEC 9075-9:2016パート9:外部データの管理SQL / MED)。これは、SQLが外部データを管理できるように、外部データラッパーとデータリンクタイプを定義するSQLの拡張機能を提供します。外部データは、SQLベースのDBMSにアクセスできるが、管理されていないデータです。標準のこの部分は、オプション機能のみで構成されています。
  • ISO / IEC 9075-10:2016パート10:オブジェクト言語バインディングSQL / OLB)。これは、Javaに埋め込まれたSQLであるSQLJの構文とセマンティクスを定義します(パート3も参照)。この標準では、SQLJアプリケーションのバイナリ移植性を確保するためのメカニズムについても説明し、さまざまなJavaパッケージとそれに含まれるクラスを指定しています。標準のこの部分は、オプション機能のみで構成されています。 SQL / OLBとは異なりJDBCAPI定義し、SQL標準の一部ではありません。[要出典]
  • ISO / IEC 9075-11:2016パート11:情報および定義スキーマSQL /スキーマ)。情報スキーマと定義スキーマを定義し、SQLデータベースとオブジェクトを自己記述型にするための共通のツールセットを提供します。これらのツールには、SQLオブジェクト識別子、構造と整合性の制約、セキュリティと認証の仕様、ISO / IEC 9075の機能とパッケージ、SQLベースのDBMS実装によって提供される機能のサポート、SQLベースのDBMS実装情報とサイズ設定項目が含まれます。 DBMS実装でサポートされている値。[40]規格のこの部分には、必須機能とオプション機能の両方が含まれています。
  • ISO / IEC 9075-13:2016パート13:Java TMプログラミング言語SQL / JRTを使用したSQLルーチンとタイプ。これは、SQLアプリケーション(「Java-in-the-database」)内からルーチンとして静的Javaメソッドを呼び出す機能を指定します。また、JavaクラスをSQL構造化ユーザー定義型として使用する機能も必要です。標準のこの部分は、オプション機能のみで構成されています。
  • ISO / IEC 9075-14:2016パート14:XML関連の仕様SQL / XML)。これは、SQLと組み合わせてXMLを使用するためのSQLベースの拡張機能を指定します。XMLのデータ型は、SQLデータベースでXMLのサポート操作およびストレージにだけでなく、いくつかのルーチン、機能、およびXMLからSQLへのデータ型マッピングを導入しました。[33]規格のこの部分は、オプション機能のみで構成されています。[要出典]
  • ISO / IEC 9075-15:2019パート15:多次元配列(SQL / MDA)。これは、MDarray、MDarrayスライス、MDarrayセル、および関連機能に対する操作とともに、SQLの多次元配列型(MDarray)を指定します。標準のこの部分は、オプション機能のみで構成されています。

ISO / IEC規格の拡張

ISO / IEC 9075は、ISO / IEC 13249SQLマルチメディアおよびアプリケーションパッケージによって補完されますこの密接に関連しているが別個の規格は、同じ委員会によって開発されています。SQLに基づいてインターフェイスとパッケージを定義します。目的は、テキスト、画像、データマイニング、空間データなどの一般的なデータベースアプリケーションへの統合アクセスです。

  • ISO / IEC 13249-1:2016パート1:フレームワーク
  • ISO / IEC 13249-2:2003パート2:フルテキスト
  • ISO / IEC 13249-3:2016パート3:空間
  • ISO / IEC 13249-5:2003パート5:静止画像
  • ISO / IEC 13249-6:2006パート6:データマイニング
  • ISO / IEC 13249-7:2013パート7:歴史
  • ISO / IEC 13249-8:xxxxパート8:メタデータレジストリアクセス MRA(進行中の作業)

テクニカルレポート

ISO / IEC 9075には、ISO / IEC TR 19075として公開されている一連のテクニカルレポートも付属しています。これらのテクニカルレポートでは、SQLの一部の機能の正当性と使用法について説明し、必要に応じて例を示します。テクニカルレポートは非​​規範的です。9075との不一致がある場合は、9075のテキストが保持されます。現在利用可能な19075テクニカルレポートは次のとおりです。

  • ISO / IEC TR 19075-1:2011パート1:SQLでのXQuery正規表現のサポート
  • ISO / IEC TR 19075-2:2015パート2:時間関連情報のSQLサポート
  • ISO / IEC TR 19075-3:2015パート3:Javaプログラミング言語を使用したプログラムに埋め込まれたSQL
  • ISO / IEC TR 19075-4:2015パート4:Javaプログラミング言語を使用したルーチンとタイプのSQL
  • ISO / IEC TR 19075-5:2016パート5:SQLでの行パターン認識
  • ISO / IEC TR 19075-6:2017パート6:JavaScript Object Notation(JSON)のSQLサポート
  • ISO / IEC TR 19075-7:2017パート7:SQLのポリモーフィックテーブル関数
  • ISO / IEC TR 19075-8:2019パート8:多次元配列(SQL / MDA)
  • ISO / IEC TR 19075-9:2020パート9:オンライン分析処理(OLAP)機能

代替案

言語としてのSQLの代替と、リレーショナルモデル自体の代替を区別する必要があります。以下は、SQL言語のリレーショナル代替案です。リレーショナルモデルの代替案については、ナビゲーションデータベースNoSQL参照してください

分散SQL処理

分散リレーショナルデータベースアーキテクチャ(DRDA)は、1988年から1994年までIBM内のワークグループによって設計されました。DRDAを使用すると、ネットワークに接続されたリレーショナルデータベースが連携してSQL要求を実行できます。[42] [43]

対話型のユーザーまたはプログラムは、ローカルRDBにSQLステートメントを発行し、リモートRDBからの応答としてデータのテーブルとステータスインジケーターを受信できます。SQLステートメントは、コンパイルしてリモートRDBにパッケージとして格納し、パッケージ名で呼び出すこともできます。これは、複雑で高頻度のクエリを発行するアプリケーションプログラムを効率的に運用するために重要です。アクセスするテーブルがリモートシステムにある場合は特に重要です。

DRDAのメッセージ、プロトコル、および構造コンポーネントは、分散データ管理アーキテクチャによって定義されます。DRDAによる分散SQL処理は、現在の分散SQLデータベースとは異なります。

批判

デザイン

SQLは、理論的基盤、リレーショナルモデル、およびタプル計算からいくつかの点で逸脱しています。そのモデルでは、テーブルはタプルのセットですが、SQLでは、テーブルとクエリ結果は行のリストです。同じ行が複数回発生する可能性があり、行の順序をクエリで使用できます(LIMIT句など)。批評家は、SQLは、厳密に元の基盤に戻る言語に置き換える必要があると主張していますたとえば、The ThirdManifestoを参照してください

直交性と完全性

初期の仕様では、主キーなどの主要な機能はサポートされていませんでした。結果セットに名前を付けることができず、サブクエリが定義されていませんでした。これらは1992年に追加されました。[12]

合計型の欠如は、SQLのユーザー定義型を完全に使用するための障害として説明されています。たとえば、JSONサポートは2016年に新しい標準で追加する必要があります。[44]

ヌル

Nullの概念は、いくつかの議論の対象ですヌルマーカーは値がないことを示し、整数列の値0またはテキスト列の空の文字列とは異なります。Nullの概念は、SQL3値論理を強制します。これは、一般的な3値論理の具体的な実装です[12]

重複

もう1つの一般的な批判は、行の重複を許可し、Pythonなどの言語との統合を可能にすることです。Pythonなどの言語のデータ型では 、解析やモジュール性がないため、データを正確に表現することが困難になる可能性があります[12][45]

これは通常、テーブル内の行を一意に識別する1つ以上の列を使用して、主キーまたは一意の制約を宣言することで回避されます。

インピーダンスの不一致

オブジェクトリレーショナルインピーダンスの不一致と同様の意味で、宣言型SQL言語とSQLが通常埋め込まれている手続き型言語の間で不一致が発生します。

SQLデータ型

SQL標準では、次の3種類のデータ型が定義されています[要出典]

  • 事前定義されたデータ型
  • 構築されたタイプ
  • ユーザー定義型。

構築された型は、ARRAY、MULTISET、REF(erence)、またはROWのいずれかです。ユーザー定義型は、独自のコンストラクター、オブザーバー、ミューテーター、メソッド、継承、オーバーロード、上書き、インターフェイスなどを備えたオブジェクト指向言語のクラスに相当します。事前定義されたデータ型は、実装によって本質的にサポートされています。

事前定義されたデータ型

  • 文字の種類
  • 文字(CHAR)
  • 文字変化(VARCHAR)
  • 文字ラージオブジェクト(CLOB)
  • 国の文字の種類
  • 国民性(NCHAR)
  • 国民性の変化(NCHAR VARYING)
  • 国民文字ラージオブジェクト(NCLOB)
  • バイナリ型
  • バイナリ(BINARY)
  • バイナリ変動(VARBINARY)
  • バイナリラージオブジェクト(BLOB)
  • 数値型
  • 正確な数値型(NUMERIC、DECIMAL、SMALLINT、INTEGER、BIGINT)
  • おおよその数値型(FLOAT、REAL、DOUBLE PRECISION)
  • 10進浮動小数点型(DECFLOAT)
  • 日時タイプ(DATE、TIME、TIMESTAMP)
  • 間隔タイプ(INTERVAL)
  • ブール値
  • XML
  • JSON

も参照してください

注意事項

  1. ^ 正式には、「SQL-datachange」ステートメントを除く「SQL-data」ステートメント。これは主にSelectステートメントです。
  2. ^ 正式には、「SQLスキーマ」ステートメント。
  3. ^ 正式には、「SQLデータ変更」ステートメント

参考文献

  1. ^ ポール、ライアン。「Microsoftコマンドシェルのガイド付きツアー」ArsTechnica 2011年4月10日取得
  2. ^ 「application / sqlのメディアタイプ登録」Internet Assigned NumbersAuthority2013年4月10日2013年4月10日取得
  3. ^ 「アプリケーション/ SQLメディアタイプ、RFC6922」インターネットエンジニアリングタスクフォース2013年4月。p。3 2013年4月10日取得
  4. ^ Beaulieu、アラン(2009年4月)。メアリーEトレセラー(編)。SQLの学習(第2版)。米国カリフォルニア州セバストポル:オライリー。ISBN 978-0-596-52083-0
  5. ^ チェンバリン、ドナルドD.(2001-10-03)。「ドナルドD.チェンバリンとのオーラルヒストリーインタビュー」2020年1月14日取得誰かの弁護士から「SEQUEL」という名前が彼らのものであるという手紙を受け取ったので、元の名前「SEQUEL」をSQLに変更しました。構造化照会言語の場合はSQLに短縮し、この製品はSQL / DSと呼ばれていました。
  6. ^ SQL- 92、4.22 SQLステートメント、4.22.1 SQLステートメントのクラス「SQLステートメントを分類する方法は少なくとも5つあります:」、4.22.2、関数によって分類されたSQLステートメント「以下は、 SQLステートメント: "; SQL:2003 4.11SQLステートメントおよびそれ以降のリビジョン。
  7. ^ チャタム、マーク(2012)。例による構造化照会言語-ボリュームI:データ照会言語NS。 8ISBN 978-1-29119951-2
  8. ^ コッド、エドガーF.(1970年6月)。「大規模な共有データバンクのデータのリレーショナルモデル」。ACMの通信13(6):377–87。CiteSeerX 10.1.1.88.646土井10.1145 /362384.362685S2CID 207549016  
  9. ^ a b チャップル、マイク。「SQLの基礎」データベースAbout.com 2009年1月28日取得
  10. ^ 「構造化照会言語(SQL)」国際ビジネスマシン。2006年10月27日20076月10日取得
  11. ^ a b "ISO 9075:1987:情報技術–データベース言語– SQL –パート1:フレームワーク(SQL /フレームワーク)"1987-06-01。
  12. ^ a b c d e f チェンバリン、ドナルド(2012)。「SQLの初期の歴史」。コンピューティングの歴史のIEEE年報34(4):78–82。土井10.1109 /MAHC.2012.61S2CID 1322572 
  13. ^ a b c チェンバリン、ドナルドD; ボイス、レイモンドF(1974)。「SEQUEL:構造化された英語のクエリ言語」(PDF)データの説明、アクセス、および制御に関する1974 ACMSIGFIDETワークショップの議事録Association for Computing Machinery:249–64。2007年9月26日にオリジナル(PDF)からアーカイブされまし20076月9日取得
  14. ^ a b Oppel、Andy(2004年2月27日)。謎解きされデータベースサンフランシスコ、カリフォルニア州:McGraw-Hill Osborne Media pp。90–1。ISBN 978-0-07-146960-9
  15. ^ 「IBMの歴史、1978年」IBMアーカイブIBM 20076月9日取得
  16. ^ 「ISO-ISO / IEC JTC 1 / SC32-データ管理と交換」www.iso.org 2021年1月2日取得
  17. ^ ANSI / ISO / IEC国際規格(IS)。データベース言語SQL-パート2:基盤(SQL /基盤)。1999年。
  18. ^ 「IBMPureDataSystem for Analytics、バージョン7.0.3」
  19. ^ 「InvantiveProceduralSQL」
  20. ^ 「作成手順」MariaDBナレッジベース2019423日取得
  21. ^ PostgreSQLコントリビューター(2011)。「PostgreSQLサーバープログラミング」PostgreSQL9.1の公式ドキュメントpostgresql.org 2012年3月9日取得
  22. ^ PostgreSQLコントリビューター(2012)。「PostgreSQLについて」PostgreSQL9.1の公式ウェブサイトPostgreSQLグローバル開発グループ2012年3月9日取得PostgreSQLは標準への準拠に誇りを持っています。そのSQL実装は、ANSI-SQL:2008標準に強く準拠しています。
  23. ^ 「標準に基づいて構築されたMimerSQL」MimerSQL公式ウェブサイトマイマー情報技術。2009年。
  24. ^ 「4.1。字句構造」PostgreSQLのドキュメント2018年。
  25. ^ "(Second Informal Review Draft)ISO / IEC 9075:1992、Database Language SQL、Section 5.2、syntax rule11"1992年7月30日。
  26. ^ ローレンツ、ダイアナ; Roeser、Mary Beth;アブラハム、サンディープ;アモール、アンジェラ;アロラ、ジータ;アロラ、ビカス;アッシュダウン、ランス;ベア、ヘルマン; Bellamkonda、Shrikanth(2010年10月)[1996]。「OracleSQLの基本要素:データ型」Oracle Database SQL言語リファレンス11gリリース2(11.2)。 Oracleデータベースのドキュメントライブラリ。カリフォルニア州レッドウッドシティー:Oracle USA、Inc 2010年12月29日取得Oracleは、値ごとに、世紀、年、月、日付、時、分、秒の情報を格納します。DATE
  27. ^ ローレンツ、ダイアナ; Roeser、Mary Beth;アブラハム、サンディープ;アモール、アンジェラ;アロラ、ジータ;アロラ、ビカス;アッシュダウン、ランス;ベア、ヘルマン; Bellamkonda、Shrikanth(2010年10月)[1996]。「OracleSQLの基本要素:データ型」Oracle Database SQL言語リファレンス11gリリース2(11.2)。 Oracleデータベースのドキュメントライブラリ。カリフォルニア州レッドウッドシティー:Oracle USA、Inc 2010年12月29日取得日時のデータ型は...DATE
  28. ^ ローレンツ、ダイアナ; Roeser、Mary Beth; アブラハム、サンディープ; アモール、アンジェラ; アロラ、ジータ; アロラ、ビカス; アッシュダウン、ランス; ベア、ヘルマン; Bellamkonda、Shrikanth(2010年10月)[1996]。「OracleSQLの基本要素:データ型」Oracle Database SQL言語リファレンス11gリリース2(11.2)Oracleデータベースのドキュメントライブラリ。カリフォルニア州レッドウッドシティー:Oracle USA、Inc 2010年12月29日取得対応するOracleデータ型がないため、次のSQL / DSおよびDB2データ型で列を定義しないでください。TIME
  29. ^ 「援助を見つけること」X3H2レコード、1978〜95年米国規格協会。
  30. ^ 人形、シェリー(2002年6月19日)。「SQLはもう標準ですか?」TechRepublicのBuilder.comTechRepublic。2012年7月5日にオリジナルからアーカイブされまし2016年4月12取得
  31. ^ a b Gillespie、Patrick。「SQLの発音:SQLまたは続編?」取得した12年2月2012
  32. ^ メルトン、ジム; アランRサイモン(1993)。「1.2.SQLとは何ですか?」新しいSQLを理解する:完全ガイドモーガンカウフマン。NS。 536ISBN 978-1-55860-245-8SQL(やや一般的な「続編」ではなく、正しく発音された「ess cueell」)..
  33. ^ a b Wagner、Michael(2010)。SQL / XML:2006-EvaluierungderStandardkonformitätausgewählterDatenbanksystemeDiplomicaVerlag。NS。100. ISBN 978-3-8366-9609-8
  34. ^ 「SQL:2008は現在承認されたISO国際規格です」Sybase。2008年7月アーカイブ2011-06-28に。
  35. ^ Krishna Kulkarni、Jan-Eike Michels(2012年9月)。「SQL:2011の時間的機能」(PDF)SIGMODレコード41(3)。
  36. ^ フレッドゼムケ(2012)。「SQL:2011の新機能」(PDF)オラクル株式会社。
  37. ^ 「ISO / IEC9075-2:2016:情報技術-データベース言語-SQL-パート2:基礎(SQL /財団)」2016年12月。
  38. ^ SQL:2008ドラフト(Zip)、Whitemarsh Information Systems Corporation
  39. ^ 「ISO / IEC9075-1:2016:情報技術–データベース言語– SQL –パート1:フレームワーク(SQL /フレームワーク)」
  40. ^ ISO / IEC 9075-11:2008:情報および定義スキーマ(SQL /スキーマ)
  41. ^ フェルナンドサエンツ-ペレス。「演繹データベースシステムの外部結合」(PDF)Lbd.udc.es 2017年1月16日取得
  42. ^ Reinsch、R。(1988)。「SAAの分散データベース」。IBM SystemsJournal27(3):362–389。土井10.1147 /sj.273.0362
  43. ^ 分散リレーショナルデータベースアーキテクチャリファレンスIBM Corp.SC26-4651-0。1990年。
  44. ^ ブランドン、ジェイミー(2021年7月)。「SQLに対して」2021年8月2日取得
  45. ^ シャウダー、ジェン。「SQLがうまくいかない理由」Schauderhaft 2018年2月3日取得

ソース

SQL標準ドキュメント

ITTFの公開されている標準とテクニカルレポート

ISO / IEC 情報技術タスクフォースは公開してい公に利用可能な標準SQLを含むを。テクニカル正誤表(訂正)とテクニカルレポート(ディスカッションドキュメント)がそこで公開されています。

SQL-パート1:フレームワーク(SQL /フレームワーク)

ドラフトドキュメント

正式なSQL標準は、ISOおよびANSIから有料で入手できます情報を提供するためには、厳密な標準への準拠とは対照的に、ドラフトが遅いだけで十分なことがよくあります。

外部リンク