GROUP BY阶段可以将WHERE逻辑查询处理阶段返回的行按“组”进行组合。每个组由在GROUP BY子句中指定的各元素决定。例如,以下代码所示查询的GROUP BY子句就使用了empid和YEAR(orderdate)元素:[代码]  这意味着对于WHERE阶段返回的数据中出现的每个雇员ID和订单年份值的唯一组合,在GROUP BY阶段将会为其生成一个组。表达式YEAR(orderdate)会调用YEAR函数,只返回orderdate列的年份部分。  如果上面的代码没有GROUP BY子句,并且去掉COUNT(*) AS numorders字段,WHERE子句将返回31行数据,其中有16对 Read More
posted @ 2010-12-11 23:35 宁静月光 Views(711) Comments(0) Diggs(0) Edit
在WHERE子句中,可以指定一个谓词或逻辑表达式,从而过滤由FROM阶段返回的行。只有能让逻辑表达式结果为TRUE的行,才能由WHERE阶段返回给后续的逻辑查询处理阶段。[代码]  上面这段代码应用了过滤条件custid=71,WHERE阶段将只保留客户ID等于71的行。  WHERE子句对查询性能有重要影响。在过滤表达式的基础上,SQL Server会计算使用什么索引来访问请求的数据。与扫描整个表相比,通过使用索引,有时可以大幅减少SQL Server在获取请求的数据时付出的代价。如果向调用者返回所有可能的行,让他们在客户端进行过滤,这样会产生大量的网络传输流量,而通过查询过滤器就可以减少这 Read More
posted @ 2010-12-11 22:43 宁静月光 Views(183) Comments(0) Diggs(0) Edit
FROM子句是在逻辑处理阶段第一个要处理的查询子句。这个子句用于要查询的表名,以及对这些表进行操作的表运算符。应该总是用数据库架构来限定代码中的对象名称。即便你没有显示指定架构名称,SQL Server也一定会隐式地解析它。这样就产生了一些额外的代价,而且如果完全让SQL Server决定使用哪个对象,也容易产生歧义。通过显示指定架构名称,可以保证得到的对象的却是你原来想要的而且还不必付出任何额外的代价。  如果不用任何特殊处理而返回一个表的所有行,所有需要做的就是使用一个带有FROM子句的查询,在FROM子句中指定想要查询的表名,在SELECT子句中指定想要返回的各个属性。例如以下语句查询S Read More
posted @ 2010-12-11 22:29 宁静月光 Views(430) Comments(0) Diggs(0) Edit