SQL多表连接查询分类

SQL多表连接查询分类:

1、等值连接查询

1.1、内链接查询

1.2、自然连接查询

2、外连接查询,包括

2.1、左外连接查询

2.2、右外连接查询

2.3、全外连接查询

3、交叉连接查询

现在有2张表,一张t_user,一张t_book,一对多的关系,二者没建立外键,其中个t_user中有个user没在t_book中体现,t_book中有条book的userId也没有在t_user中体现。

等值连接查询:

select * from t_user u
inner join t_book b
on u.id=b.userid
 

结果只有2张表的有关联的数据才被查出来了。

它相当于用where的连接查询:

SELECT * FROM t_book b,t_user u WHERE u.id=b.userid
 

自然连接查询:不需要指明任何等同连接条件就可以查出来,并且能去掉重复的列。

SELECT * FROM t_book b
NATURAL JOIN t_user u

左外连接查询:

select * from t_user u
left join t_book b
on u.id=b.userid

它等同于把t_user放在right join后面的

右外连接查询:

SELECT * FROM t_book b
RIGHT JOIN t_user u
ON u.id=b.userid

   全外连接查询:在mysql中好像有问题??

SELECT * FROM t_book b
FULL JOIN t_user u
ON u.id=b.userid

交叉连接查询:如果后面不带on,那么结果是两个表列的乘积,笛卡尔积


SELECT * FROM t_book b
CROSS JOIN t_user u
 

猜你喜欢

转载自doushini.iteye.com/blog/1715060