[参考SQL Server 2000 宝典 Paul Nielsen 著]在ANSI-92将连接的语法标准化为join...on之前,早期的连接语法格式采用了在from子句中指定参与连接的表,而在where子句中指定连接条件的方法。为了向后兼容,SQl Server仍然支持早期的连接语法。第一种方法把连接分割为两个部分,其中参与连接的表放在from子句中,而连接条件放在where子句中,这种写法很容易出错。第二种方法在from子句中完整的指定连接显得更加规范和清晰。对于多个表后者的优势就会充分显示,所以要尽量抛弃第一种写法。
select * from student A, teacher B where A.class = B.class
2.可读性好! 无二义性!如果使用 "*="实现两表以上的外连接时,要注意此时 WHERE 子句的 AND 条件是有顺序的,尽 管《ANSI/ISO SQL》标准不允许 WHERE 条件的顺序影响查询结果,但是 FROM 子句 的各表连接的顺序可以影响查询结果。
前者是交叉连接(cross join),加了where 条件的交叉连接,作用同内连接一样.
前一种是Transact_SQL语法(即SQL Server的语法)
后一种是ANSI92标准的语法,兼容所有标准的关系型数据库
from student A, teacher B
where A.class = B.class
"*="实现两表以上的外连接时,要注意此时 WHERE 子句的 AND 条件是有顺序的,尽
管《ANSI/ISO SQL》标准不允许 WHERE 条件的顺序影响查询结果,但是 FROM 子句
的各表连接的顺序可以影响查询结果。