从左表中取出每一条记录,去右表中与所有的记录进行匹配:匹配必须是某个条件在左表中与右表中相同最终才会保留结果,否则不保留。
语法一:select 列名 from 表1 inner join 表2 on 表1.公共字段=表2.公共字段
语法二:select 列名 from 表1,表2 where 表1.公共字段=表2.公共字段 # 又叫等值连接
其中,on表示连接条件,公共字段表示具有相同的含义的字段。
字段别名以及表别名的使用: 在查询数据的时候,不同表有同名字段,这个时候需要加上表名才能区分,而表名太长,通常可以使用别名。
内连接可以没有连接条件: 没有on之后的内容,这个时候系统会保留所有结果(笛卡尔积)。
等值连接:内连接还可以使用where代替on关键字,此方法又叫等值连接。从集合论角度看,等值连接是内连接的子集。但此方法执行效率比较低,尽量不用。
内连接与等值连接是一回事情。
经常有人会问到select a.id,b.name from a,b where a.id=b.pid
select a.id,b.name from a inner join b on a.id=b.pid.有什么区别,哪个效率更高一些。
实际上一回事情了。只是内连接是由SQL 1999规则定的书写方式。两个说的是一码事。
连接运算符是“=”的连接运算称为等值连接。它是从关系R与S的广义笛卡尔积中选取A,B属性值相等的那些元组
自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉