表连接就是将两张表"合并"成一张表
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.字段

 

五.内连接和外连接的区别

 

 

posted on 2014-07-23 01:21  努力--坚持  阅读(176)  评论(0)    收藏  举报