表连接就是将两张表"合并"成一张表
tbl1:
1. 张三 1
2. 李四 2
3. 王五 null
tbl2:
1.男
2.女
一. 交叉连接(cross join)--笛卡尔积(叉积)
将第一张表的每一条记录依次与第二张表的每一条记录进行组合,得到一张新表
交叉连接的结果为:
1. 张三 1 1.男
1. 张三 1 2.男
2. 李四 2 2.女
2. 李四 2 1.女
3. 王五 null 1.男
3. 王五 null 2.女
语法:
select t1.*,t2.* from 表1 as t1 cross join 表2 as t2
二.内连接(inner join … on)
-> 交叉连接后数据有大部分是无用的,需要对其进行一个筛选
-> 可以将内连接理解为在交叉连接的基础之上进行一个筛选
内连接的结果为 :
1.张三 1 1.男
2.李四 2 2.女
语法:
select t1.*,t2.* from 表1 as t1 inner join 表2 as t2 on t1.字段 = t2.字段;
三.外连接(left join … on 和 right join … on)
1.左外连接
-> 内连接可以将两张表合并,同时进行筛选,但是有些数据不符合筛选条件,却应该留下来
-> 可以将左外连接理解为将内连接筛选掉的数据再重新插回结果中
左外连接的结果为:
1.张三 1 1 男
2.李四 2 2 女
3.王五 null null null
-> 连接的SQL语句一定是关于两张表的,需要补回的数据以左表为准即,将左表被筛选掉的数据重新插回结果中
-> 语法
select * from 左表 as t1 left join 右表 as t2 on t1.字段 = t2.字段;
2.右外连接
四.多表连接
这三个基本的连接都写在from子句后面,并且作为一个数据源进行使用
t1 cross join t2 cross join t3
t1 inner join t2 on t1.字段 = t2.字段 inner join t3 on t1.字段 = t3.字段
t1 left join t2 on t1.字段 = t2.字段 left join t3 on t1.字段 = t3.字段
五.内连接和外连接的区别
浙公网安备 33010602011771号