在发现HandlerSocket并且与许多ORM混淆之后,让我烦恼的一件事是:
为什么SQL存在?一点都没有?
为什么数据库驱动程序无法提供直接方式,例如InnoDB,并在ORM库本身内包装各种操作?
为什么选择ORM - > SQL - >数据库解析SQL - > Db引擎运营?
为什么不能ORM - > Db引擎运营?
答案 0 :(得分:1)
在任何类型的ORM存在之前,SQL都是第一个。简史
然后有人了解使用查询语言的关系数据库。幸运的是,我们有一个称为SQL的标准(即使在SQL Server,oracle等SQL的不同方言之间存在一些细微差别)。
很久以后(SQL很老)有人发明了使用sql与dbs通信的ORM。
还有一些努力让ORM-> DB像no-sql dbs,面向对象的dbs(OODBMS)和文档
答案 1 :(得分:1)
SQL Structured Query Language
的目的是提供一种Structured
方式,通过该方式可以使用标准Query
在数据库中Language
信息。
SQL提供global
标准,用于处理不同平台上几乎没有差异的数据库。对于例如如果您熟悉SQL,则可以使用SQL Server
mySql
等主要数据库。 Oracle
语法中存在一些细微差别,但至少就基本操作而言,它们并不是非常突出。
答案 2 :(得分: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查询语言)你将如何做到这一点
答案 3 :(得分:-1)
它的存在是因为很多人使用它。有许多非常好的工具与SQL兼容。 ODBC,JDBC。
我认为SQL非常陈旧,但没有什么比这更好的了,它几乎适用于任何数据库引擎,并允许您使用SQL的功能来操作数据。
有一些现代工具可以处理数据,更适合当今需要使用 - ORM,Linq,OLAP但它们有不同的用途,它们不兼容。
还有一件事 - 你和许多ORM搞混了。那就是问题所在。有许多ORM,不兼容,人们必须互相学习。 SQL是一种语言(在不同的数据库引擎中存在一些小的差异。