- ベストアンサー
SQLの種類と用途について
- SQLにはTransact-SQL、MySQL、PostgreSQL、PL/SQLなどの種類があります。それぞれのSQLには使用できる関数が異なりますが、具体的な違いやどのSQLをどの用途で使用するのかについて理解が不足しています。
- また、SQLServerとOracleなどのデータベースに関連するSQLもあるようです。例えば、SQLServerではTransact-SQLを使用し、Oracleでは別のSQLを使用することがあるようです。
- SQLはプログラミング言語の一種であり、C#やVBA、Javaなどのプログラミング言語と同様にコーディングすることができます。それぞれのプログラミング言語に対応したアプリケーションがあり、SQLServerやOracleなどのデータベースに接続し、SQLを実行することができます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
うーん、まずは以下の関係を知ってください。 ----------------------------------- データベース名 | ストアドで使用する言語仕様 ----------------------------------- SQLServer | Transact-SQL ORACLE | PL/SQL MySQL | SQL 2003 PostgreSQL | pg/plsql など それぞれは『言語』と『その言語が動かせる環境』の関係です。 SQL というのは基本的に標準というものがあるのですが、これまでの歴史的な(各社の競争の)経緯で、独自方言がたくさん生み出されてきた経緯があります。各社とも 『他と差別化できるちょっと優れたモノ』を作った結果、このような 『似て非なるSQL』がいっぱいできちゃったんですね。
その他の回答 (2)
- mitoneko
- ベストアンサー率58% (469/798)
これは・・・データベースって何?の段階から、どうも食い違いがあるように見えます。 もともと、コンピュータのプログラムで保存するデータは、各アプリケーションで独自の扱いをしていました。でも、「もっと汎用的にデータを使いたい」「アプリAで入力したデータをアプリBでも使いたい」という用途が非常にあるものですから、アプリケーションとデータの管理を完全に分離できないか?という動機で作られたのが、データベースです。 データベースシステムというデータ管理用の中央アプリケーションに対して、決まった形式で要求すると、保存したデータを操作することが出来るというイメージです。 さて、一口に「データを操作する」と言っても、その内容は非常に多彩です。アプリケーションは自分の興味のあるデータを使いやすい形で読み出して書き込みたいでしょう。例えば、住所と名前だけが欲しいのに、年齢・職業・電話番号まで必ず出てくるのではちょっと使いでが悪いです。 そこで、データの操作の仕方を指示するための決まりというか言語が必要です。 データベースにもいろいろな形式があり、それぞれに特徴があるのですが、スタンダードと言って良いほど、良く使われているのがリレーショナルデータベースという形式です。Oracle・SQL Server・MySQL・Postgre等々いろいろなシステムが出回っています。 これらのリレーショナルデータベース(RDBと略します。)のデータを操作するための言語がSQLです。アプリケーションがどんな言語で作られているかに関わらず、RDBに対してデータを要求し、操作するための共通言語です。 SQLに関しては、実は、規格が存在します。存在するのですが・・・HTMLと一緒で、データベースのシステムに何を使うかによって、若干の方言が存在します(HTMLもブラウザの種類によって表示が変わったりしますよね。これと同じです。)。特に、SQL文中で使用できる関数に関しては、多数の方言が存在します。 方言は存在しますが、SQLという言語を利用して、アプリケーションからデータを操作するという形は変わりません。アプリケーションで利用している言語(例えば、C++とか、VBとか、JAVAとか・・・)に関わらず、同じ文法でデータベースへのアクセスは行います。(極端な話、データを見るだけなら、アプリケーションもその他のプログラム言語も要りません。データベースのコンソールにSQL文を直接打ち込めばちゃんと結果が帰ってきます。) データベースシステムを使うという立場で見ると、このデータベースはどちらかというとアプリケーションと言うよりは、全ての永続データ(保存しておくデータ)の管理を司るOSの一部と考えた方がしっくり来るかもしれません。例えば、windowsシステムで、ファイルや画面に対してアクセスする際にはWINDOWS APIや、.NET APIを呼ぶことによってアクセスします。このAPIに相当するのがSQL言語と言ったところでしょうか。 相当、簡略化して説明したつもりですが、これである程度の雰囲気はつかめますか?
お礼
回答ありがとうございます。 根本的に理解出来ていませんでした。 言語だと思っていたものがDBだったという事は分かりました。 mitonekoさんの説明もある程度は雰囲気がつかめました。 自分は実業務ではTransact-SQLしかやっていなかったんだなぁとか 理解しました。 ありがとうございます。
- taka451213
- ベストアンサー率47% (436/922)
こんばんは。 えーと・・・、何か大きな勘違いをされているような・・・。 >Transact-SQL、MySQL、PostgreSQL、PL/SQL これは同列に並びません。 Transact-SQL、PL/SQL これはSQLの拡張言語で、特定のRDBMSで使用するようになっています。 Transact-SQL → SQL Server PL/SQL → Oracle MySQL、PostgreSQL これらはRDBMSなので、SQL ServerやOracleと同列ですね。 SQLはANSIやISOなどによって標準化されています。 この標準的なSQLは、どのようなRDBMSでも使用できるようになっています。 ただ、関数や方言など、各RDBMS独自で用意されているものも多々あり、このあたりが理解が難しいところかと・・・。 アプリケーションとSQLは切り離して考えるべきです。 もちろん相性はありますが、どの組み合わせでも構いません。
お礼
回答ありがとうございます。 根本的に理解出来ていませんでした。 勝手に「SQL Server」=DBで「SQL」が付いているんだから「SQL」と名の付くもの すべてに対応だと思っていました。 自分が言語だと思っていたものも、DBだったり、知らないSQLの種類があったり、 まだまだ、勉強しないといけないと思いました。 ご回答ありがとうございました。
お礼
回答ありがとうございます。 根本的に理解出来ていませんでした。 分かりやすい対照表ありがとうございます。 勝手に文字の後ろが「SQL」なので、SQLの種類だと思い込んでいました。 改めて勉強しなおします。 ご回答ありがとうございました。