【1】等值连接
1)连接:凡是查询涉及到两个以上的表,就需要将表连接;
2)就是用where子句做的连接查询;连接查询的列名可以不同;
【2】自然连接:
select * from
a_tbl natual join b_tbl
这就需要a_tbl 与 b_tbl 有相同的列且值相同;连接查询的列名可必须相同;
【3】左外连接
select * from
a_tbl a left join b_tbl b on a.id = b.rcrd_id
以a表为主表进行查询, 查询出a表的所有数据, b表中有连接数据则填充,如果没有则补null;
【4】右外连接:与左外连接类似;
【5】内连接:
左外连接和内连接的交集;
【6】全外连接
左外连接和右外连接的并集;
【注意】内连接与等值连接的区别:
转自: http://www.cnblogs.com/huangfr/archive/2012/06/20/2555530.html
注意1)内连接:两个表(或连接)中某一数据项相等的连接称为内连接。
等值连接:一般用where字句设置条件,内连接一般用on字句设置条件,但内连接与等值连接效果是相同的。
注意2)内连接与等值连接其实是一回事情(等效)。
经常有人会问到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 有什么区别,哪个效率更高一些。
1)连接:凡是查询涉及到两个以上的表,就需要将表连接;
2)就是用where子句做的连接查询;连接查询的列名可以不同;
【2】自然连接:
select * from
a_tbl natual join b_tbl
这就需要a_tbl 与 b_tbl 有相同的列且值相同;连接查询的列名可必须相同;
【3】左外连接
select * from
a_tbl a left join b_tbl b on a.id = b.rcrd_id
以a表为主表进行查询, 查询出a表的所有数据, b表中有连接数据则填充,如果没有则补null;
【4】右外连接:与左外连接类似;
【5】内连接:
左外连接和内连接的交集;
【6】全外连接
左外连接和右外连接的并集;
【注意】内连接与等值连接的区别:
转自: http://www.cnblogs.com/huangfr/archive/2012/06/20/2555530.html
注意1)内连接:两个表(或连接)中某一数据项相等的连接称为内连接。
等值连接:一般用where字句设置条件,内连接一般用on字句设置条件,但内连接与等值连接效果是相同的。
注意2)内连接与等值连接其实是一回事情(等效)。
经常有人会问到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规则定的书写方式。两个说的是一码事。
注意3) 不过今天有同事说了: 连接查询的话,是先筛选数据行,然后再进行笛卡尔积; where子句查询的话,是先做笛卡尔积,然后再筛选数据行;