發現HandlerSocket後發現有很多ORM,讓我困擾的一件事是:SQL語言的用途是什麼?
爲什麼SQL存在?在所有?
爲什麼數據庫驅動程序無法直接提供例如InnoDB,並將各種操作包裝在ORM庫本身中?
爲什麼ORM - > SQL - > DB SQL語法分析 - >數據庫引擎操作?
爲什麼不能ORM - >數據庫引擎操作?
發現HandlerSocket後發現有很多ORM,讓我困擾的一件事是:SQL語言的用途是什麼?
爲什麼SQL存在?在所有?
爲什麼數據庫驅動程序無法直接提供例如InnoDB,並將各種操作包裝在ORM庫本身中?
爲什麼ORM - > SQL - > DB SQL語法分析 - >數據庫引擎操作?
爲什麼不能ORM - >數據庫引擎操作?
那麼,SQL是第一個,在任何類型的ORM存在之前。簡史
而且那麼有人有關於查詢語言的關係數據庫的想法。幸運的是,我們有一個稱爲SQL的標準(即使SQL服務器,oracle等不同SQL方言之間有一些細微的差異)。
很久以後(SQL相當古老)有人發明了使用sql進行通信的ORM與dbs。
也有一些努力,有ORM-> DB一樣,沒有-SQL DBS,面向對象DBS(OODBMS)和文件
SQL Structured Query Language
的目的是提供一個Structured
途徑,使人們可以在Query
信息數據庫使用標準Language
。
SQL提供了一個global
標準用在不同的平臺很少或沒有差異數據庫工作。對於例如如果您熟悉SQL,則可以使用主要數據庫,如SQL Server
mySql
& Oracle
語法存在一些細微差異,但至少就基本操作而言,它們並不十分突出。
它的存在是因爲很多人使用它。有許多與SQL兼容的非常好的工具。 ODBC,JDBC。
我認爲SQL是非常古老的,但並沒有什麼更好的,這將與幾乎所有的數據庫引擎工作,並允許您使用SQL的功能操作數據。
有一些現代化的工具與資料,更舒適的今天需要使用工作 - ORM,LINQ中,OLAP但他們有不同勢的目的,他們不是compatibile。
還有一件事 - 你與許多ORM的混亂。那就是問題所在。有許多ORM,不兼容,人們必須相互學習。 SQL是一種語言(在不同勢的數據庫引擎一些小的個體差異。
實際上,SQL方言中的差異幾乎與ORM查詢語言中的差異一樣大。 –
當使用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查詢語言)
開始通過閱讀http://en.wikipedia.org/wiki/SQL –
停止downvoting。讓他學習。這不是一個可怕的問題,許多新手可能會感興趣。 – Kamil
這個問題是邀請參加開放式討論,而不是基於您面臨的實際問題的「實際的,可回答的問題」。這是一個問題[不適合堆棧溢出](http://stackoverflow.com/faq#dontask)。 -1。 –