小结:SQL的四种连接查询

四种连接查询分别是

  • 内连接(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

查询结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/wennianzhu/article/details/107382838