连接
摘要
内连接, 相等连接, 自然连接, 交叉连接,外连接,左外连接, 右外连接, 全连接, 自连接
概述
sql的连接join, 将数据库中的两个或多个表组合起来,连接生成的集合,可以被保存为表,或者当做表使用
join语句的含义是把两张表的属性通过值组合在一起,
基于ANSI标准的sql列出了5种join方式,inner, full outer, left outer, right outer, cross(交叉连接)
在特定的情况下,一张表(基本表,视图,连接表)可以和自身进行连接,成为自连接self-join
程序员使用join表示得到连接后的集合,如果 evaluated predicate 为真, 组合后的记录会按照预期的方式生成,
例如一个记录集,一张临时表
正文
一 内连接 inner join
内连接是应用程序中普遍的连接操作,一般是默认的连接类型
内连接基于连接谓词将两张表A,B的列组合在一起,产生新的结果表,
查询会将A表中的每一行和B表中的每一行进行比较,找出满足连接谓词的组合
当连接谓词被满足,两表中匹配的行会按列组合(并排组合)成结果集中的一行
连接产生的结果集,可以定义为首先对两张表做笛卡尔积(交叉连接)--将A中每一行和B中每一行组合
实际上SQL产品会尽可能用其他方式实现连接,笛卡尔积运算效率极低
二 外连接 outer join
外连接并不要求连接的两表的每一条记录在对方表中都有一条匹配的记录
要保留所有的记录(甚至这条记录没有匹配的记录的记录也需要保留)的表称为保留表
外连接可依据连接表保留左表,右表,或全部表的行,进一步分为左外连接,右外连接,全连接
在标准的SQL语言中,外连接没有隐式的连接符号