编写SQL查询的关键—SQL语句的执行顺序
【文章标题】编写
SQL
查询的关键—
SQL
语句的执行顺序
【文章作者】曾健生
【作者邮箱】
zengjiansheng1@126.com
【作者
QQ
】
190678908
【作者
MSN
】
zengjiansheng1@hotmail.com
【作者博客】
blog.csdn.net/newjueqi
*******************************************************************************
编写
SQL
语句是每个程序员应该具备的基本功。在实际开发过程中,需要编写比较复杂的
SQL
查询语句是必不可少的,但很多
SQL
书籍上不是简单的介绍一下就是出最终的查询语句,编写复杂
SQL
查询的具体思路却没有多少介绍,这不能不说是一种巨大的遗憾
,
看着一串无比复杂的
SQL
语句,没有掌握方法的话谁看了都会头晕
^-^
回忆一下学习编程语言的经历(
C++,java
等),我们一般都是先学习变量的定义,然后是流程控制语句,接着是函数,类等等。但我们在学习
SQL
,
SQL
书籍上都普遍忽略了一个重要的方面:
SQL
语句的执行顺序。
不知道是什么原因,这一点确实没被多少书籍提过。掌握了SQL语句的执行顺序的规律,就能较轻松的编写出复杂的
SQL
查询。
SQL
语句的执行顺序如下:
1
、
from
子句组装来自不同数据源的数据;
2
、
where
子句基于指定的条件对记录行进行筛选;
3
、
group by
子句将数据划分为多个分组;
4
、使用聚集函数进行计算;
5
、使用
having
子句筛选分组;
6
、计算所有的表达式;
7
、使用
order by
对结果集进行排序。
下面举一个简单的例子举例说明,假设有以下一张表
student
:
ID
Name
Age
1
Tom
23
2
Jack
25
3
Lucy
15
4
Anay
18
5
Bobby
21
要求通过
SQL
语句把年龄大于
20
的学生姓名查出来
SQL
语句如下:
Select name
from student
Where age>20
结果是:
Tom
Jack
Bobby
那对于这个简单的
SQL
语句,执行顺序是怎么样的呢?
1.
from
子句组装来自不同数据源的数据,简单点来说就是要确定查询的数据来自哪个表。如果
from
关键字后跟的表有两个或以上,就产生笛卡尔积。
2.
where
子句对每个记录行进行
筛选,把不符合条件的行筛选掉。
3. &
相关文档:
作者 Haidong Ji 翻译 GoodKid
在我的关于Oracle和SQL Server 互用性的系列文章 part 1 和 part 2 当中,我讨论了Oracle和SQL Server 的一些不同点的话题以及Oracle驱动的可选性。在本主题中,我将讨论一个来自Oracle 10g的新工具,Oracle即时客户端。
对于Oracle 10g以前的版本,如果想建立和Oracle的连接, ......
近日,俺通过MS SQL Server 2008的链接服务器查询MySQL的数据。其实,俺在多年前就使用过这个,当时是分布式查询Excel表数据,现在,换成异构数据库MySQL。俺以64位系统说明:
首先,Windows程序访问MySQL数据库需要驱动程序,可以到官方网站下载,俺就是使用Mysql ODBC 5.1 Driver for 64bit,通过数 ......
1.查询的模糊匹配
尽量避免在一个复杂查询里面使用 LIKE '%parm1%'—— 红色标识位置的百分号会导致相关列的索引无法使用,最好不要用。
解决办法:
其实只需要对该脚本略做改进,查询速度便会提高近百倍。改进方法如下:
a、修改前台程序—&mdas ......
什么是数据库分区?
数据库分区是一种对表的横向分割,Sql server 2005企业版和之后的Sql server版本才提供这种技术,这种对表的横向分割不同于2000中的表分割,它对访问用户是透明的,用户并不会感觉的表被横向分割了。(2000中的表横向分割是建n个表例如按时间建表每月一个表,表名不同,最后需要做一个大视图)
为什 ......