2012-11-29 3 views
5

HandlerSocketが発見され、多くのORMが混乱した後、私に悩まされるものは次のとおりです。SQL言語の目的は何ですか?

なぜSQLが存在するのですか?全く?

なぜデータベースドライバは、例えば、 InnoDBを使用し、ORMライブラリ自体の中でさまざまな操作をラップしますか?

なぜORM - > SQL - > DB解析SQL - > Dbエンジン操作ですか?

なぜORM - > Dbエンジン操作ができないのですか?

+1

スタートhttp://en.wikipedia.org/wikiを読み取ることにより、/SQL –

+5

downvotingを停止します。彼に教えさせてください。これはひどい疑問ではない、多くの初心者が興味を持っているかもしれない。 – Kamil

+1

この質問は、「実際に直面している問題に基づいて実践的で解決できる質問」ではなく、自由討論の招待状です。これは一種の質問です(Stack Overflowには適切ではありません)(http://stackoverflow.com/faq#dontask)。 -1。 –

答えて

1

ORMの種類が存在する前は、SQLが最初です。あなたはシーケンシャルファイルにデータを格納し簡単な歴史

  • まず
  • 後で、
  • 後最初の非リレーショナルのDBが登場し、直接ファイル(clients.dat)を使用(thisを確認してください)

そして、誰かがクエリ言語を持つリレーショナルデータベースの考え方を持っています。幸運なことに私たちはSQLと呼ばれる標準を持っています(たとえSQLサーバ、オラクルなどのSQLの異なる方言の間に少しの違いがあります)

長い時間が経ってから(SQLがかなり古く)、SQLを使って通信するORM dbsで

ありORM-> DBを持っているためにいくつかの努力が無SQL DBS、オブジェクト指向DBS(OODBMS)のようでもあるし、SQL Structured Query Languageの文書

1

目的は一つでQuery情報をできることでStructured方法を提供することですデータベースLanguageを使用します。

SQLには、プラットフォームごとに違いがほとんどまたはまったくないデータベースで作業するためのglobal標準があります。例えば、あなたがSQLに慣れているなら、SQL ServermySql & Oracleのようなわずかな違いがありますが、少なくとも基本的な操作についてはそれほど顕著ではありません。

-1

それを使用している人が多いからです。 SQLと互換性のある多くの非常に良いツールがあります。 ODBC、JDBC。

SQLは非常に古風ですが、ほとんどのデータベースエンジンで動作し、SQLの機能でデータを操作できるようになりました。

ORM、Linq、OLAPなど、今日のニーズに合わせて使いやすい、データを扱う現代的なツールがいくつかありますが、目的は異なりますが、互換性がありません。

さらにもう1つ - あなたは多くのORMを使いこなしました。それが問題だ。多くのORMは、非互換性があり、人々はお互いを学ばなければならない。 SQLは1つの言語です(異なるデータベースエンジンでは若干の相違点があります)。

+0

実際、SQLの方言の違いは、ORMのクエリ言語の違いとほぼ同じです。 –

0

ORMを使用する場合は、SQLをHibernateのHQLなどのものに置き換えるだけです。

SQLは、あなたのためにバックグラウンドで多くの作業を行います。手動で実装する必要があります。 SQLは、クエリの結果がどのようなものであるべきかを述べるように設計されています。その後、データベースにそれを行う方法を理解させます。

は何かについて考えてみよう:

私に2011年に雇用された従業員をすべて取得し、彼らが働く部署の平均給与よりも20%高い給料を持って

これをSQLで行うのはそれほど複雑ではありません。

select name, 
     salary, 
     deptno, 
     hire_date 
from (
    select name, 
      salary, 
      deptno, 
      avg(salary) over (partition by deptno) as avg_detp_salary, 
      hire_date 
    from employee 
    where extract(year from hire_date) = 2011  
) as t 
where salary >= avg_dept_salary * 1.20; 

今、あなたはクエリ言語(SQLやORMのクエリ言語でもない)を持っていなかった場合は、これを実行したい方法を考える

関連する問題