SQL里inner join和连接谓词有什么区别?

比如说
SELECT * FROM TABLE1 JOIN TABLE2 ON TABLE1.CON1=TABLE2.CON2

SELECT * FROM TABLE1,TABLE2 
WHERE TABLE1.CON1=TABLE2.CON2
有神马区别啊...
看了半个月SQL,这考四级了,不清楚是咋回事...
好吧,我知道如果select*是有区别的,但是比如选择的是table1.col1,两者的作用也是一样的么?

慕哥9229398
浏览 734回答 2
2回答

猛跑小猪

第一条SQL在WHERE子句中使用的连接语句,在数据库语言中,被称为隐性连接。第二条INNER JOIN……ON子句产生的连接称为显性连接。(其他JOIN参数也是显性连接,如Left join, Right Join, Full Join等)WHERE 和INNER JOIN产生的连接关系,没有本质区别,结果也一样。但是!隐性连接随着数据库语言的规范和发展,已经逐渐被淘汰,比较新的数据库语言基本上已经抛弃了隐性连接,全部采用显性连接了。

HUX布斯

那两条select * 语句 查询出来的结果包含了table和table2的所有字段,一般实际编程中不会这样做的。当你要查询两个表中某几个指定的字段就用 select table1.con1,table2.con2 这样的方式。当两个表没有相同名称的字段的情况下可以直接写 select con1,con2,如果有相同的字段就必须加上表名称了,建议是都加上表名称。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

SQL Server