使用的例表结构
create table person(
id int,
name varchar(20),
cardId int
);
create table card(
id int,
name varchar(20)
);
insert into person values(1,'张三',1),(2,'李四',3),(3,'王五',6);
insert into card values(1,'饭卡'),(2,'建行卡'),(3,'农行卡'),(4,'工商卡'),(5,'邮政卡');
内连接 inner join 或 join
就是两张表的数据,通过某个字段对应,查询出相关记录数据。
select * from person inner join card on person.cardId=card.id;
内连接
左外连接 left join 或者 left outer join
会把左边表里面的所有数据取出来,而右边表中的数据,如果有相等的就取出来如果没有,就会补NULL。
select * from person right join card on person.cardId=card.id;
左外连接
右外连接 rigth join 或者 right outer join
会把右边表里面所有数据取出来,而左边表中的数据,如果有相等的,就显示出来,如果没有就补NULL。
select * from person right join card on person.cardId=card.id;
右外连接
完全外连接 full join 或者 full outer join
mysql不支持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;