SQL语句是如何执行的? 在项目开发时,会经常写大量的SQL语句,可是为什么每次写SQL语句都有疑惑的感觉呢?后来我想了想,还是自己对SQL语句是如何被执行的没有弄清楚。比如写一个查询语句,语句里面有ORDER BY ,GROUP BY 等等。它具体是如何执行的,最终取出结果集的呢?总之,对于写SQL语句我仿佛找不到一个很好思路。对于我这样的问题,望各位大虾帮忙。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 看执行计划,可以知道oracle到底是按照什么顺序执行sql的 SQL语言是第四代语言,和我们常用的编程语言(第三代语言)不同的是:第四代语言描述的是你要的执行结果,而不是执行过程(这是第三代语言所做的事)。因此SQL的风格与常用的编程语言是不一样的,从这个思路去思考就可以理解SQL了,而没有必要去关心具体是怎么执行的(当然,这常常也是要考虑的)。就如同你坐出租车和你自驾车的区别,坐出租车的你只要告诉司机你要去的地方(第四代语言),而自驾车的你要关心的是走哪条路(第三代语言)。当然,你坐出租车也会关心走哪条路,但这是为了更省钱或省时间,这时你可以问一下司机打算如何走(看执行计划)。但你也可以不关心走哪条路,只说目的地。因此你说的你对SQL的疑惑,我觉得不是去了解SQL语句是如何被执行能够解决的,而是思维方式的问题,要了解SQL的语义。想想吧,你要的结果是什么,别管过程,这样你就能理解SQL了。至于SQL如何被执行,是DBMS管的事,可以说同样的SQL语句在不同的数据库里,甚至在不同的执行过程中其执行计划都可能不一样。当然你可以通过看执行计划来了解执行过程,但这样做的目的应该是为了提高性能,而不是用来理解SQL。 set autotrace on当你执行SQL后就有一串执行步骤,然后参考执行步骤,提出好的解决方案 谢谢xb_feng() 两表数据简单合并的sql语句,怎么写? 大家好,请大家帮我看一下这个触发器错在哪里? 这样的update语句,为何在Access可以执行,oracle里面却错,错在哪里? Oracle 10g 怎么导出和转换已有表的表空间? 再问个分区与索引的查询问题! 旧事重提,sid与全局数据库名有何区别? 如何删除表内重复数据? oracle816在windows2000下的启动问题。 事務概念,簡單. 一个小问题,谢谢了 为什么GROUP BY 语句有这样的限制? 让我头痛的sql语句
当你执行SQL后就有一串执行步骤,然后参考执行步骤,提出好的解决方案