编写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的连接, ......
8.2 聚合函数的应用
聚合函数在数据库数据的查询分析中,应用十分广泛。本节将分别对各聚合函数的应用进行说明。
8.2.1 求和函数——SUM()
求和函数SUM( )用于对数据求和,返回选取结果集中所有值的总和。语法如下。
SELECT SUM(column_name) ......
在软件开发中,常常需要为程序建立Sql Server数据库的运行环境。完成如在SQL Server数据库中建立设备,建立数据库,建立表格,分配权限等功能,如何方便的建立应用程序所需Sql Server环境的数据库环境,而不用启动SQL Enterprise Manager呢?
下面来看:
启动VB6.0,新建一个工 ......
孤立帐户,就是某个数据库的帐户只有用户名而没有登录名,这样的用户在用户库的sysusers系统表中存在,而在master数据库的syslogins中却没有对应的记录。
孤立帐户的产生一般是以下两种:
1.将备份的数据库在其它机器上还原;
2.重装系统或SQL SERVER之后只还原了用户库
解决方法是使用sp_change_users_login来修复。
......
超大型数据库的大小常常达到数百GB,有时甚至要用TB来计算。而单表的数据量往往会达到上亿的记录,并且记录数会随着时间而增长。这不但影响着数据库的运行效率,也增大数据库的维护难度。除了表的数据量外,对表不同的访问模式也可能会影响性能和可用性。这些问题都可以通过对大表进行合理分区得到很大的改善。当表和索引 ......