プログラミング蚀語の歎史SQL-生涯暙準化





CodingDojoのアナリストによるず 、SQLはどんなに奇劙に聞こえおも、プログラミング蚀語の䞭で最も重芁で必芁なク゚リ蚀語です。 CodingDojoの評䟡では、劎働垂堎におけるプログラミング蚀語の需芁に関する統蚈が考慮されたす。



結局のずころ、DBMSMySQL、PostgreSQL、Microsoft SQL Serverはどこにでもありたす。倧小の䌁業、病院、銀行、倧孊などです。 基本的に、SQLはデスクトップデバむスのみに限定されたせん。SQLiteDBMSは、Apple Androidスマヌトフォンおよびモバむルデバむスで成功したした。 したがっお、SkypeやDropboxなどのアプリケヌションは垞にアクセスしたす。



ただし、スマヌトフォンがない堎合もありたしたが、この蚀語はすでに存圚しおいたした。 SQLの歎史は数幎ではなく、数十幎です。 圌らはすぐに圌を信じたせんでした。



System RおよびIBM



この蚀語の最初の蚀及は1974幎に遡りたす。 SQLはProject Rの実隓的なリレヌショナルDBMSシステムRの䞀郚ずしお䜜成されたした。IBMはこのプロゞェクトに埓事しおいたした。



圓初、この蚀語はSEQUELStructured English Query Languageず呌ばれおいたしたが、このフレヌズから「英語」ずいう蚀葉が消え、略語は私たちが長い間慣れ芪しんでいた圢になりたした。 䞀方では、SQLはリレヌショナルデヌタベヌスぞのク゚リのナヌザヌフレンドリな衚珟に向けられおいたした。 䞀方、ほが最初から、それはいわゆる「フルデヌタベヌス蚀語」でした。 これは、SQLに次が含たれるこずを意味したす。



•デヌタベヌススキヌマを決定および操䜜する手段。

•敎合性制玄ずトリガヌを決定する手段。

•デヌタベヌス衚珟を定矩する手段。

•ク゚リの効率的な実行をサポヌトする物理局の構造を決定する手段。

•関係ずそのフィヌルドぞのアクセスを蚱可する手段。

•トランザクションセヌブポむントを定矩し、トランザクションをコミットおよびロヌルバックする手段。



確かに、䞊列トランザクションの偎からデヌタベヌスオブゞェクトぞのアクセスを同期する手段を実装しおいたせんでした。 実際、開発者は、必芁な同期がDBMSによっお暗黙的に実行されるず最初に蚈算したずいうこずです。



この蚀語は、リレヌショナルおよび非リレヌショナルの䞡方の倧郚分のDBMSに実装されおいたす。 開発の目的は、プログラミングスキルさえ持たないナヌザヌでも䜿甚できる、単玔な非手続き型蚀語を䜜成するこずでした。



ク゚リ蚀語は、Donald D. ChamberlinずRay Boyceによっお開発されたした。







SEQUELがこの目的の唯䞀の蚀語ではありたせんでした。 カリフォルニア倧孊バヌクレヌ校では、非営利のDBMSであるIngresが開発されたした。これはリレヌショナルDBMSでしたが、独自のQUEL蚀語を䜿甚しおいたしたが、SQLず比范しおそれをサポヌトするDBMSの数に匹敵するこずはできたせんでした。
System Rは、最も耇雑で完党なバヌゞョンのSQLを実装しおいたす。 同じIBMのSQL / DSずDB2の機胜はわずかに少なかった。 SQLシステムRからは、十分に開発されおいない郚分たずえば、セヌブポむント、たたは実装によっお技術的問題が倧きすぎる郚分たずえば、敎合性制玄やトリガヌのみが削陀されたした。



商業的成功



したがっお、IBMが採甚したSQLの商甚実装ぞの道は、トップダりン運動ず呌ばれたす。



Oracle、Informix、およびSybaseは異なる方法で行きたした。ボトムアップ垂堎に導入されたこれらのシステムの最初のバヌゞョンは、SQLシステムRのかなり限られたサブセットを䜿甚したした。 ただし、Oracle DBMSでのSQLの最初の商甚実装では、サンプリング挔算子でネストされたサブク゚リの䜿甚が蚱可されおおらず、耇数の関係の化合物でク゚リを䜜成する可胜性はありたせんでした。





2011幎時点の垂堎シェアの分垃



リレヌショナルデヌタベヌス管理システムぞの早期移行に察する垂堎の関心の高たりにより、䞊蚘の䌁業の開発者は商業的な成功を収めるこずができたした。 これは、DBMSが完璧からはほど遠いずいう事実に反しお、むしろ起こりたした。 さお、今ではOracle、Informix、Sybase、Microsoft SQL Serverは非垞に匷力なSQL方蚀をサポヌトしおいたす。



暙準化



SQLの倚くの方蚀の出珟ずその成長は、互換性の問題やその他の矛盟に぀ながるず考えられおいたした。



しかし、SQL蚀語の暙準化は非垞に時間通りに始たりたした-最初の商甚実装の出珟ずほが同時に。 1982幎、米囜芏栌協䌚ANSIのデヌタベヌス委員䌚は、リレヌショナルデヌタベヌスの暙準蚀語の仕様の開発を任されたした。







1986幎に倱敗した䞀連の芏栌のバヌゞョンを拒吊した埌、専門家は共通点を芋぀けたした。 そしお1987幎、SQL / 86暙準は囜際暙準化機構ISOによっお承認されたした。



SQL System Rを暙準の基瀎ずするこずは䞍可胜でしたたず、このバヌゞョンの蚀語は技術的に十分に機胜しおいたせんでした。 第二に、実装するのが難しすぎるでしょう。 したがっお、1980幎代初期にIBMで開発されたSQL蚀語の方蚀が基瀎ずしお採甚されたした。 本質的に、この方蚀はSQL System Rのサブセットでした。



SQL1暙準



1989幎たでに、SQL / 86暙準はわずかに拡匵され、その埌、ANSI / ISO SQL / 89ず呌ばれる次の暙準が登堎したした。



SQL / 89は、䞖界で最初に受け入れられたSQL蚀語暙準です。 この蚀語には倚くの欠点がありたす。倚くの重芁な抂念が定矩されおおらず、倚くは実装に翻匄されおいたす。 この暙準は、デヌタベヌススキヌマや動的SQLの操䜜などの重芁なセクションを完党に排陀したす。



それにもかかわらず、圌は真に暙準化されたリレヌショナルデヌタベヌス管理システムの開発においお圹割を果たしたした。 さらに、SQL / 89暙準の出珟により、特定のDBMS補造業者ずあたり関係のない情報システムの蚭蚈、開発、および保守が可胜になりたした。 ある意味で、SQL / 89の出珟は、オヌプンシステムぞのデヌタベヌステクノロゞヌの進歩でした。



おそらく、SQL / 89暙準の最も重芁な成果は、構文の明確な暙準化、デヌタ怜玢ずデヌタ操䜜挔算子の明確な暙準化、およびデヌタベヌスの敎合性を制限する手段の固定です。



この芏栌では、2぀のレベルの蚀語ず、敎合性を維持するための個別の手段が定矩されおいたす。 レベル2は、敎合性ツヌルを含たない完党なSQLデヌタベヌス蚀語です。 レベル1は、レベル2の指定されたサブセットです。



敎合性ツヌルには、以䞋を決定する機胜が含たれおいたす。



•テヌブル間のリンクに必芁な制限。

•テヌブル行の制玄を確認したす。

•テヌブルに行を入力するずきのデフォルトの列倀。



倖郚キヌを決定する手段により、デヌタベヌスのいわゆる参照敎合性の芁件を簡単に定匏化できたす。 リレヌショナルデヌタベヌスで䞀般的なこの芁件は、SQL System Rの敎合性制玄の䞀般的なメカニズムに基づいお定匏化できたすが、倖郚キヌの抂念に基づいた定匏化はより簡単で理解しやすいものです。





さたざたな暙準での結合操䜜の機胜



SQL2暙準ずその远加



SQL暙準の䞍完党さを認識しお、さたざたな䌁業の専門家がSQL2ず呌ばれる次の暙準の䜜業を開始したした。 この䜜業は数幎続き、倚くの暙準ドラフトが発行されたした。最終的に1992幎3月に暙準の最終ドラフトSQL / 92が採甚されたした。 この暙準は、SQL / 89暙準よりもはるかに完党であり、アプリケヌションの実装に必芁なほがすべおの偎面を網矅しおいたすデヌタベヌススキヌマの操䜜、トランザクションの管理保存ポむントが衚瀺されたすおよびセッションセッションは、䞀時的な関係が栌玍されるトランザクションのシヌケンスです、デヌタベヌス接続、動的SQL。 最埌に、デヌタベヌスディレクトリの関係が暙準化されたした。これは実際には蚀語に盎接関係しおいたせんが、実装に倧きく圱響したす。



1995幎に、暙準は呌び出しレベルむンタヌフェむスSQL / CLI仕様によっお補足されたした。 SQL / CLIは、動的に定矩されたSQLステヌトメントを実行できるようにする呌び出しを持぀プロシヌゞャむンタヌフェむスの仕様のセットです。 基本的に、SQL / CLIは動的SQLの代替です。



SQL / CLI暙準は、ナビキタスODBCOpen Database ConnectivityおよびJDBCJava Database Connectivityむンタヌフェヌスの䜜成の基瀎ずしお機胜したした。



1996幎、別のコンポヌネントがSQL / 92暙準に远加されたした-SQL / PSMPersistent Stored Modules。 この仕様の䞻な目的は、ストアドプロシヌゞャを定矩および䜿甚する方法を暙準化するこずです。぀たり、デヌタベヌスに栌玍され、アプリケヌションによっお呌び出され、DBMS内で実行できるSQLステヌトメントを含む特別に蚭蚈されたプログラムです。



Oracleは最も人気のあるDBMSの1぀です。 さらに、SQL / 92暙準ずの互換性が実装されたのは初めおでした。

そしお圓初、SQL蚀語をサポヌトする最初のDBMSは、VAXマシン甚に開発されたOracle V2でした。 これは1979幎のこずです。
Oracleは、Windows、Linux、Max OS X、Sun Solarisなど、さたざたなプラットフォヌムをサポヌトしおいたす。



Oracleが開発した手続き型拡匵機胜のSQLはPL / SQL手続き型蚀語/構造化照䌚蚀語ず呌ばれ、AdaおよびPascal蚀語の構文に基づいおいたす。 Oracle DBMSでSQLおよびPL / SQLずずもに䜿甚される3番目の䞻芁蚀語はJavaです。



PL / SQLは、プログラムブロックのほか、数倀、文字列、日付、フロヌ制埡挔算子条件付きゞャンプずルヌプを含むおよび3皮類のコンテナヌコレクションを栌玍するためのさたざたなデヌタ型をサポヌトしたす-可倉長配列、連想配列、ネストされたテヌブル。



SQL3暙準



圓初は、1995幎に新しい暙準の䜜業を終了する予定でした。 実際には、新しい暙準の䜜業は1999幎にのみ郚分的に完了したした。このため、暙準はSQL1999ず呌ばれおいたした。

SQL蚀語暙準の各新しいバヌゞョンは、以前のバヌゞョンよりも倧幅に倧きくなりたした。 したがっお、暙準のSQL / 89が玄600ペヌゞを占めおいた堎合、SQL / 92のボリュヌムは300ペヌゞ以䞊増えたした。
最初のSQL3プロゞェクトは玄1,500ペヌゞを占有したした。



しかし、SQL3の開発者は、このような暙準のボリュヌムにより、その採甚ずその埌のサポヌトの成功の可胜性が倧幅に枛少するずいう結論に達したした。 したがっお、圌らは暙準を比范的独立した郚分に分割するこずを決めたした。



1999幎に、SQL暙準の5぀の郚分である1999が採甚されたした。



最初の郚分SQL /フレヌムワヌクは、暙準の抂念構造の説明に圓おられたす。 このパヌトでは、次の4぀のパヌトの詳现な芁玄を提䟛し、暙準に準拠しおいるず䞻匵する実装の芁件を策定したす。



SQLの2番目の郚分1999SQL / Foundationは、暙準の基瀎を圢成したす。 蚀語タむプのシステムが導入され、機胜の䟝存関係ず可胜なキヌを決定するための芏則が定匏化され、䞻芁なSQLステヌトメントの構文ずセマンティクスが決定されたす。



•デヌタベヌススキヌマを決定および操䜜するための挔算子。

•デヌタ操䜜挔算子。

•トランザクション管理オペレヌタヌ。

•デヌタベヌス接続管理オペレヌタなど







3番目の郚分は、SQL / 92ず比范しお、指定されたSQL / CLI仕様で占められおいたす。 4番目の郚分では、SQL / PSM —ストアドプロシヌゞャ定矩蚀語の構文ずセマンティクスを指定したす。 最埌に、5番目の郚分SQL /バむンディングは、プログラミング蚀語の暙準バヌゞョンのSQLバむンディングルヌルを定矩したす。



SQL1999には、さらにいく぀かの郚分が含たれるこずになっおいたす。 その䞭で、次のツヌルの仕様



•分散トランザクション管理SQL /トランザクション。

•テンポラルデヌタプロパティSQL /テンポラルのサポヌト。

•倖郚デヌタ管理SQL / MED。

•オブゞェクト指向プログラミング蚀語SQL / OLBぞのバむンド。

•運甚分析凊理SQL / OLAPのサポヌト。



21䞖玀のSQL



2003幎の終わりに、囜際的なSQL2003暙準の新しいバヌゞョンが採甚され、公開されたした。 倚くの専門家は、SQL1999に続く暙準のバヌゞョンでは、SQL1999の䞍正確性のみが修正されるず信じおいたした。 しかし実際には、SQL2003では、いく぀かの新しい重芁なプロパティが指定されおおり、2008幎の埌半にわずかな倉曎が導入されおいたす。



SQL2003暙準のパヌト2で指定されおいるSQL蚀語の最も重芁な倉曎は、次の偎面に関連しおいたす。



•デヌタ型。

•SQLから呌び出されるルヌチン。

•CREATE TABLEステヌトメントの高床な機胜。

•新しい回路オブゞェクト-シヌケンスゞェネレヌタ。

•新しいタむプの列-識別列ID列および生成列生成列。

•新しい挔算子MERGE。



暙準の䞀般的な組織は、いく぀かの倉曎を受けおいたす。 SQL2003暙準は、次の郚分で構成されおいたす。



•9075-1、SQL /フレヌムワヌク。

•9075-2、SQL / Foundation;

•9075-3、SQL / CLI。

•9075-4、SQL / PSM。

•9075-9、SQL / MED。

•9075-10、SQL / OLB;

•9075-11、SQL /スキヌマ。

•9075-13、SQL / JRT;

•9075-14、SQL / XML。



パヌト1-4および9-10は、必芁な倉曎を加えお、SQL1999ず同じたたでした。 パヌト5SQL /バむンディングは存圚しなくなりたした。 関連する仕様はパヌト2に含たれおいたす。



情報スキヌムに特化したSQL1999パヌト2のセクションは、別のパヌト11で匷調衚瀺されおいたす。2぀の新しいパヌト-13ず14が登堎したした。



パヌト13は、完党に「Javaプログラミング蚀語を䜿甚したSQLルヌチンず型」ず呌ばれおいたす。 暙準のこの郚分の倖芳は、SQL指向のDBMSの倧手メヌカヌからJava蚀語ぞの泚目が高たっおいるこずによっお正圓化されおいたす。



最埌に、SQLの最埌の郚分である2003は、SQL環境でXMLドキュメントを操䜜できるようにする蚀語ツヌルの仕様に特化しおいたす。



開発者の努力にもかかわらず、暙準化プロセスは明らかに倉曎に察応しおいたせん。





SQL履歎のハむラむト



それでも、デヌタベヌススキヌマの定矩、デヌタの遞択ず操䜜、デヌタアクセスの蚱可、プログラミング蚀語ぞのSQLの埋め蟌みのサポヌト、動的SQLステヌトメントを含むSQLステヌトメントの基本セットは、商甚実装で十分に確立されおおり、ほが暙準に準拠しおいるず蚀えたす。



PS SQLは、埓来のプログラミング蚀語に完党に垰属するこずはできたせん。プログラムの実行を制埡する埓来の挔算子、型蚘述挔算子などは含たれおいたせん。デヌタベヌスに保存されたデヌタにアクセスするための暙準挔算子のセットのみが含たれおいたす。 しかし、これらの「欠点」は、ITの歎史における圌の䜍眮を考えるず、圌を蚱しおいたす。



All Articles