这是2012年的提问嘛,现在是2019年6月13日,我给你详细解答。
内连接里分为等值连接和不等连接,自然连接属于特殊的等值连接。这是他们二者的关系。
这是我建立的两个表 a和b
等值连接。要给出连接条件才能进行连接
eg。
意思就是,把a表的b列的数值都拿出来,把b表的b列的数值都拿出来,有相同的才做连接,不同的不连接。
2.自然连接。自然连接的前提是等值连接,在等值连接的基础上除去相同的属性列
相比上图,少了一个B,对吧
懂了吗,不懂追问吧
等值连接
select * from 表1 join 表2 on 表1.公共字段 = 表2.公共字段 where 查询条件
自然连接
select * from 表1 natural join 表2 where 查询条件
自然连接是一种特殊的等值内连接,它是由系统根据两表的同名字段自动作等值比较的内连接,不需要用ON关键字指定连接条件
是不是这样,比如说表A 有a,b,c三个列,B有b,c,d 三个列
等值连接则是 select * from A inner join B on A.b=B.b
自然连接就是去掉重复的列:select A.a,A.b,A.c ,B.d from A inner join B on A.b=B.b
不知道理解的对不对
你语句少了join
还有
select * from 表1 left join 表2 on 表1.列1=表2.列2
select * from 表1 ,表2 where 表1.列1=表2.列2
1、等值连接中不要求相等属性值的属性名相同,而自然连接要求相等属性值的属性名必须相同,即两关系只有在同名属性才能进行自然连接。
如上例R中的C列和S中的D列可进行等值连接,但因为属性名不同,不能进行自然连接。
2、等值连接不将重复属性去掉,而自然连接去掉重复属性,也可以说,自然连接是去掉重复列的等值连接。
如上例R中的B列和S中的B列进行等值连接时
结果有两个重复的属性列B,而进行自然连接时,结果只有一个属性列B。