SQLの種類と用途について

このQ&Aのポイント
  • SQLにはTransact-SQL、MySQL、PostgreSQL、PL/SQLなどの種類があります。それぞれのSQLには使用できる関数が異なりますが、具体的な違いやどのSQLをどの用途で使用するのかについて理解が不足しています。
  • また、SQLServerとOracleなどのデータベースに関連するSQLもあるようです。例えば、SQLServerではTransact-SQLを使用し、Oracleでは別のSQLを使用することがあるようです。
  • SQLはプログラミング言語の一種であり、C#やVBA、Javaなどのプログラミング言語と同様にコーディングすることができます。それぞれのプログラミング言語に対応したアプリケーションがあり、SQLServerやOracleなどのデータベースに接続し、SQLを実行することができます。
回答を見る
  • ベストアンサー

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)みたいな意味合いなんでしょうか? よく分からない質問と例えになってしまいましたが、ご回答のほうをよろしくお願いします。

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

  • ベストアンサー
noname#212058
noname#212058
回答No.2

うーん、まずは以下の関係を知ってください。 ----------------------------------- データベース名 | ストアドで使用する言語仕様 ----------------------------------- SQLServer   | Transact-SQL ORACLE     | PL/SQL MySQL      | SQL 2003 PostgreSQL   | pg/plsql など それぞれは『言語』と『その言語が動かせる環境』の関係です。 SQL というのは基本的に標準というものがあるのですが、これまでの歴史的な(各社の競争の)経緯で、独自方言がたくさん生み出されてきた経緯があります。各社とも 『他と差別化できるちょっと優れたモノ』を作った結果、このような 『似て非なるSQL』がいっぱいできちゃったんですね。

brave9977
質問者

お礼

回答ありがとうございます。 根本的に理解出来ていませんでした。 分かりやすい対照表ありがとうございます。 勝手に文字の後ろが「SQL」なので、SQLの種類だと思い込んでいました。 改めて勉強しなおします。 ご回答ありがとうございました。

その他の回答 (2)

  • mitoneko
  • ベストアンサー率58% (469/798)
回答No.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言語と言ったところでしょうか。  相当、簡略化して説明したつもりですが、これである程度の雰囲気はつかめますか?

brave9977
質問者

お礼

回答ありがとうございます。 根本的に理解出来ていませんでした。 言語だと思っていたものがDBだったという事は分かりました。 mitonekoさんの説明もある程度は雰囲気がつかめました。 自分は実業務ではTransact-SQLしかやっていなかったんだなぁとか 理解しました。 ありがとうございます。

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

brave9977
質問者

お礼

回答ありがとうございます。 根本的に理解出来ていませんでした。 勝手に「SQL Server」=DBで「SQL」が付いているんだから「SQL」と名の付くもの すべてに対応だと思っていました。 自分が言語だと思っていたものも、DBだったり、知らないSQLの種類があったり、 まだまだ、勉強しないといけないと思いました。 ご回答ありがとうございました。

関連するQ&A

  • SQLで小数点の計算がしたいです。

    postgresql8.2.4を使っています。 select to_char(10/3, '99D999'); とすると、 3.000となります。 10/3=3.3333....ではないのでしょうか? 他のSQL(MySQLやSQLServer,Oracle,DB2)もどう記述するか知りたいです。

  • DB2のPL/SQLについて

    はじめまして、Oracleでは、JavayよりPL/SQLをコールできるのは、確認済みなのですが、DB2でもできるのでしょうか??ちなみにPostgresqlではでないみたいです。

    • ベストアンサー
    • Java
  • DBサーバーはどれがいいのですか?

    MySQL、PostgreSQL、SQLサーバー、ORACLEデータベースについて 仮に、ユーザが5000万人のSNSを作った場合、MySQLやPostgreSQLで対応できますか? 検索に時間がかかったりするのでしょうか? その場合、DBをORACLEにしたほうがいいのでしょうか? ■費用について もし、DBサーバーを1台設置して、ORACLEにした場合、初期費用や毎月のコストはどのくらいになるのでしょうか? ORACLE対応のDBサーバーの金額等も教えて頂ければ幸いです。 あと、SNSの会員が10万人までだとしたら、 MySQL、PostgreSQL、SQLサーバー、ORACLEのうちだと、どれがコスト的に一番効率的でしょうか?

  • transact-sqlからoracle DBを参照したい。

    transact-sqlからoracle DBを参照したい。 sql-server 2005 window server 2003 R2での環境です。transact-sqlを使用して、他のマシン上にあるoracle データベース上のテーブルのデータを取得し、そのデータを自身のマシン上のsql serverのテーブルに格納したいのですが、そのようなことはできますでしょうか。 もし、できるとすれば、どのような方法(手順)になるのでしょうか。

  • oracle sql developerについて

    oracle sql developerを現場でインストールしました。 現場ではネットは全くつながっておりません。 postgreSQL2005は使用したことがあるのですが、 oracle sql developerは今まで全く使用したことが無く「インストールしてテスト台帳につなげてDB内容確認して」とか言われても正直困っております。 既存で作成されている「テスト台帳」にどうやって接続をすればいいのでしょうか? 設定方法やコネクトの手順がわかる方いましたらアドバイスをいただけないでしょうか? 現段階ではoracle sql developerをインストールしただけです。

  • PostgreSQLからOracleの移行について

    PostgreSQLからOracleへの移行を行うマイグレーションツールはありますでしょうか。お金はいくらかかってもかまいませんので、移行をスムーズにかつ工数をかけずにできるツールをご紹介頂けたらと思います。。そのツールの特徴や問題点なども教えていただけたら幸いです。 また主要DB(Oracle、SQL Server、DB2、MySQL、PostgreSQL)を相互に移行できるマイグレーションツールみたいなのはありますでしょうか。

  • PL/SQLとMS SQLServerの違いを教えてください

    SQLを学ぼうとしているのですが。。。 概要で煮詰まってしまいました;; SQLはRDBMSにおいてのデータベース言語で、直接データベースに宣言を実行でき、PL/SQLはOracle社が開発した、手続き型に組み込めるSQLで、 MS SQLServerは。。。? Oracle SQLは。。。? と、調べれは調べるほどに、訳が分からなくなってきました; PL/SQLとMS SQLServerの違いはなんなのでしょうか? Oracle SQLとSQLは別物と考えてよいのでしょうか? 使用できるOSが違うのか、組み込める言語が特定されているのか、具体的な違いが判らず、どのような条件下で使用したらよいのかわかりません。 お手数ですがご解答よろしくお願いいたします。

  • Transact-SQLでストアードプロシージャ・関数内でのみ有効なモジュールは作れますか?

    SQL Server 2000のTransact-SQLで、ストアードプロシージャ あるいは関数内でのみ有効なモジュール(OracleのPL/SQL で言うところのサブプログラム)は作れますか? もし可能なら、その方法をご教授下さい。 よろしくお願いします。

  • PL/SQLとPL/pgSQLの違い

    こんにちは。 現在の環境がOracle8iで、次のシステムがPostgreSQLで構築されることになりました。 今後に向けてPL/SQLを勉強しようと思ったのですが、PostgreSQLにはPL/pgSQLというストアドプロシージャが有ると言うことを知りました。 そこで質問なのですが、PL/SQLとPL/pgSQLは何か大きな違いは有るのでしょうか? PL/SQLの勉強をすれば、PL/pgSQLも出来るようになるのかを教えていただけますでしょうか。

  • PL/SQLで実行したSQLのログの取得について

    ASP(ActiveServerPage)より、PL/SQLのFunctionを実行し、Oracleの複数のTABLEを更新しようとしています。 ASPから実行する際には、引数を渡し、その引数をSQL実行の条件としていますが、実際に実行されたSQL文のログを取得したいのですが、どうしたらよいでしょうか? 何か良い方法をお教えいただけますよう、よろしくお願いいたします。 [実行環境] DB:Oracle8i