四种连接查询分别是
- 内连接(inner join或join)
- 左外连接(left outer join或left join)
- 右外连接(right outer join或right join)
- 完全外连接(full outer join或full join)
注:左外连接,右外连接,完全外连接都属于外连接
举例:创建两个表(person表和card表)
create table person(
id int,
name varchar(20),
cardId int
);
create table card(
id int,
name varchar(20)
);
往表里添加数据
INSERT INTO card VALUES(1,'饭卡');
INSERT INTO card VALUES(2,'建行卡');
INSERT INTO card VALUES(3,'农行卡');
INSERT INTO card VALUES(4,'工商卡');
INSERT INTO card VALUES(5,'邮政卡');
INSERT INTO person VALUES(1,'小文',1);
INSERT INTO person VALUES(2,'小黄',3);
INSERT INTO person VALUES(3,'小曲',6);
虽然两个表之间存在外键关系,但我们并没有创建外键。
- inner join查询(两张表中的数据通过某个字段相等查询出相关记录数据)
SELECT * FROM person INNER JOIN card ON person.cardId=card.id
查询结果:
- left join查询(左外连接会把左边表里所有的数据取出来,对于右边表中的数据,如果符合条件就显示,不符合就会补NULL)
SELECT * FROM person LEFT JOIN card ON person.cardId=card.id
查询结果:
- right join(右外连接会把右边表里所有的数据取出来,对于左边表中的数据,如果符合条件就显示,不符合就会补NULL)
SELECT * FROM person RIGHT JOIN card ON person.cardId=card.id
查询结果:
- full join(两个表的并集)
SELECT * FROM person FULL JOIN card ON person.cardId=card.id
查询结构:
报错啦:mysql不支持full join
如果需要实现full join的效果,我们可以使用union把左连接和右连接相结合
SELECT * FROM person LEFT JOIN card ON person.cardId=card.id
UNION
SELECT * FROM person RIGHT JOIN card ON person.cardId=card.id
查询结果: