汎用プログラミングには、文字通り何百ものプログラミング言語があります。しかし、データベースを操作/クエリするために、SQLがほとんど唯一の使用言語であるのはなぜですか?
Basileの回答に加えて、SQLはオブジェクト指向言語や手続き型言語とは思えない言語であることも認識してください。多くの点で、ANSI SQL標準は、プロトコルまたは セット理論 、 述語論理 と 関係代数 。
しかし、個別 [〜#〜] rdbms [〜#〜] の開発者がこれらの標準を実装する方法は、各個別の実装をほぼ分類できるように、さまざまな専用ソフトウェアによって大幅に異なります。独自の言語として。
たとえば、Oracle SQLは MySQL などとは異なるMicrosoft SQL Server SQLとはかなり異なります。さらに、各企業は独自の独自の従来のANSI SQL標準ステートメントに加えて、関数、データベースエンジン、および(場合によっては)手続き型言語。時には、自分の個人的な実装を支持して、標準を放棄することを選択する人さえいます。
SQLとリレーショナルモデルのこの結婚の歴史は、主にテクノロジーと言語が1970年代に E.F。によって並行して開発されたという事実によるものです。コッド 、ドナルドD.チェンバリン、レイモンドF.ボイス。あなたがそれについて読む機会があれば、トピックに関するウィキペディアのかなりまともな記事がいくつかあります。
最初のSQLは、主に relationalデータベース 用です。そして、それは複数の異形または方言を持っています。
したがって、非リレーショナルデータベースには他のクエリ言語があります。 NoSQL についてお読みください。たとえば MongoDB を調べます。 クエリ言語 を参照して、他のクエリ言語の一覧を掲載したWikiページもご覧ください。
SQLはそれ自体が「言語」ではなく、言語を作成するための標準です。参考として SQLタイムライン を参照してください。複数の関係者が、標準に基づいた特定のデータベースクエリ言語を実装しています。これは、標準が遵守される度合いが異なります。
その意味では、「SQL言語」などは存在しないため、SQLが唯一のデータベースクエリ言語であると言うのは誤りです。むしろ、Transact-SQL(Microsoft SQL Serverで使用される)、MySQL、PostgreSQL、Oracle SQLなどの複数の言語実装があります。これらは多くの点で似ていますが、特定のリレーショナルデータベースエンジンのドメイン向けに設計されています。
Basile Starynkevitch 正しく指摘されている のように、ほとんどの従来のプログラミング言語で使用できるAPIを介して実装できる「NoSQL」データベース言語も複数あります。
それだけがクエリ言語ではありません...クエリ言語にはさまざまな実装方法があります。基本的に、SQLは参照標準として使用されるか、内部的に他の言語がSQLに変換されます。
いくつかのクエリ言語がリストされています here 。
C#開発者は [〜#〜] linq [〜#〜] クエリ言語を頻繁に使用します。
これは非常に良い質問ですが、より一般的には次のように質問できます。
なぜすべてのリレーショナルデータベースが非常によく似ているのですか?
AccessやFilemakerなどのGUIに付属する小さなバリアントと、やや特殊なシングルユーザーエンジンを除いて、リレーショナルデータベースはすべて、驚くべき数の特性を共有しています。
要するに、それらはすべて、多くのデータストレージと処理タスクに信じられないほど素晴らしく、不可欠なものですが、驚くほど同じように、すべて混乱し、風変わりです。最初のものが書かれた後、誰もがそれをコピーしただけでなく、時間が経つにつれて人々は当時クールだった機能だけを追加し、それがすべてのプレーヤーにコピーされたことを見ることができます。
これは、非常に異なるパラダイムがあり、各パラダイム内に大幅に異なる構文さえあるプログラミングプラットフォームとは大きく異なります。新しいアイデアは古い言語にもハッキングされますが、多くの場合、人々は実際に新しい言語やプラットフォームを作成します。 Javaは1990年に一歩前進しました。NETは2002年に一歩前進しました。リレーショナルデータベースと同じくらい古い言語はC++であり、それはそれを示しています。リレーショナルデータベースでのみ、本当の選択肢はありませんが、それらを使用することです。
「NoSQL」データベースがあることは知っていますが、リレーショナルパラダイムは依然として非常に重要です。そこに多元主義がほとんどないのは悲しいです。