こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

SQLについて

SQLには
Transact-SQL、MySQL、PostgreSQL、PL/SQLといったように種類があります。

使用できる関数が違うとかは分かるのですが、
具体的に何がどう違うかなどははっきり理解できていません。
また、どのSQLをどのような用途で使用するのかなども分かっていません。

また、これに関することで、DBでSQLServerとかOracleとかが関わっていると思われるのですが。
例えば、SQLServerではTransact-SQLを使用して、Oracleでは別のSQL(ここはよく分かっていません)を使用するみたいなことでしょうか?

要はSQLというものがあって、それをコーディングするためのアプリケーションに対応しているものが、各SQLといった事?

例えば、C#、VBA、Java(Transact-SQL、MySQL)などのプログラミング言語(SQL)があって
それを使用できるアプリケーションはそれぞれ
VisualStudio、Excel、eclipse(SQLServer、Oracle)みたいな意味合いなんでしょうか?

よく分からない質問と例えになってしまいましたが、ご回答のほうをよろしくお願いします。

投稿日時 - 2011-01-14 19:34:51

QNo.6447785

困ってます

質問者が選んだベストアンサー

うーん、まずは以下の関係を知ってください。

-----------------------------------
データベース名 | ストアドで使用する言語仕様
-----------------------------------
SQLServer   | Transact-SQL
ORACLE     | PL/SQL
MySQL      | SQL 2003
PostgreSQL   | pg/plsql など

それぞれは『言語』と『その言語が動かせる環境』の関係です。

SQL というのは基本的に標準というものがあるのですが、これまでの歴史的な(各社の競争の)経緯で、独自方言がたくさん生み出されてきた経緯があります。各社とも 『他と差別化できるちょっと優れたモノ』を作った結果、このような 『似て非なるSQL』がいっぱいできちゃったんですね。

投稿日時 - 2011-01-14 22:14:43

お礼

回答ありがとうございます。
根本的に理解出来ていませんでした。

分かりやすい対照表ありがとうございます。
勝手に文字の後ろが「SQL」なので、SQLの種類だと思い込んでいました。

改めて勉強しなおします。
ご回答ありがとうございました。

投稿日時 - 2011-01-17 12:31:26

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(3)

ANo.3

 これは・・・データベースって何?の段階から、どうも食い違いがあるように見えます。
 もともと、コンピュータのプログラムで保存するデータは、各アプリケーションで独自の扱いをしていました。でも、「もっと汎用的にデータを使いたい」「アプリ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言語と言ったところでしょうか。

 相当、簡略化して説明したつもりですが、これである程度の雰囲気はつかめますか?

投稿日時 - 2011-01-15 00:01:52

お礼

回答ありがとうございます。
根本的に理解出来ていませんでした。

言語だと思っていたものがDBだったという事は分かりました。

mitonekoさんの説明もある程度は雰囲気がつかめました。
自分は実業務ではTransact-SQLしかやっていなかったんだなぁとか
理解しました。
ありがとうございます。

投稿日時 - 2011-01-17 12:36:08

ANo.1

こんばんは。

えーと・・・、何か大きな勘違いをされているような・・・。

>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は切り離して考えるべきです。
もちろん相性はありますが、どの組み合わせでも構いません。

投稿日時 - 2011-01-14 20:41:04

お礼

回答ありがとうございます。
根本的に理解出来ていませんでした。

勝手に「SQL Server」=DBで「SQL」が付いているんだから「SQL」と名の付くもの
すべてに対応だと思っていました。
自分が言語だと思っていたものも、DBだったり、知らないSQLの種類があったり、
まだまだ、勉強しないといけないと思いました。

ご回答ありがとうございました。

投稿日時 - 2011-01-17 12:27:13

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-