文章目录
join分类
join
用于多个数据表的连接,目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起数据库中的表可通过键将彼此联系起来第一步均为将所有参与操作的表进行了一个笛卡儿积,然后才依据各连接条件进行记录的筛选。
通过增加连接条件,可以避免出现笛卡尔积。笛卡尔积现象:列数相加,行数记录相乘。 语法 SELECT 列名称 FROM 表1 inner join 表2 ON 表1的某列 = 表2的某列
分类
inner join:在表中存在至少一个匹配时,则返回行,等同于join 一对一,没有空列 select * from T1, T3 where T1.userid = T3.userid等同于select * from T1 inner join T3 on T1.userid=T3.useridleft join:即使右表中没有匹配,也从左表返回所有的行 多对一,右边可存在空列right join:即使左表中没有匹配,也从右表返回所有的行 一对多,左边可存在空列full join:只要其中一个表中存在匹配,就返回行 多对多,任意一边都可存在空列 即把左联结果表 + 右联结果表组合在一起,然后过滤掉重复的注意 外连接:左联、右连、全连。外连接规则:左连右补,右连左补,全连左右合并。 自然连接是通过对参与表关系中所有同名的属性对取等(即相等比较)来完成的,故无须自己添加连接条件,与外连接的区别在于对于无法匹配的记录外连接会虚拟一条与之匹配的记录来保全连接表中的所有记录,但自然连接不会。 内连接与自然连接基本相同,不同之处在于自然连接只能是同名属性的等值连接,而内连接可以使用using或on子句来指定连接条件,连接条件中指出某两字段相等(可以不同名)。