T-sql 学习(2) - join与group by

来源:互联网 发布:软件著作权简历 编辑:程序博客网 时间:2024/04/29 14:14

 1,  join与where
1)inner join和out jion(left join, right join, full join):产生两个或者多个表的连接结果,但后者可能会有NULL结果出现。

2)cross join 不支持on的语法,但是支持where子句的限制。而实际上,cross join就是没有任何条件的select * from a, b两个表:他就会产生笛卡尔积的结果。

 

join 与where 的区别,有两个资源可以查看:
1)http://www.cnblogs.com/pcjim/archive/2008/10/06/799302.html

2)“Transact-SQL权威指南.pdf”,权威就是权威,说的明白


join连接多于2个表的方法:

select ...

from A

join B

on ...

join C

on ...

 

建议使用join,因为它是ANSI  SQL-92标准;where是传统语法,有可能有二义性。

where子句的顺序不重要,不会影响到查询的结果;这样做,是为了把这个性能的提高编程服务器的一部分工作;


2,
类型转换cast和convert
declare @name as char(10)
declare @id as smallint
set @name = '100'
set @id = cast(@name as smallint)


3,
case ... when的用法,被权威老大批判了一下,说是太罗嗦;没办法,能用就行了。


4,
数据分组,group by
having之于 group by,相当于where 之于select。
只是,having是操作在结果集合上,where是操作在查询表上。也正因为如此,建议使用where(或者join等价的)过滤,而不是having。