测试数据:
city表:
create table city(id int,name text);
insert into city values(0,'北京'),(1,'西安'),(2,'天津'),(3,'上海'),(4,'哈尔滨'),(5,'西藏')
- 1
- 2
person表:
create table person(id int,lastname char(20));
insert into person values(0,'Tom'),(2,'Lily'),(3,'Mary'),(5,'Coco');
- 1
- 2
select * from city;
- 1
select * from person;
- 1
一:内连接:
1.inner join
inner join(等值连接) 只返回两个表中联结字段相等的行
sql语句:
select * from city inner join person on city.id = person.id;
- 1
也可以写成:
select * from city join person on city.id = person.id;
- 1
结果如下:
从结果可以看出,表格中显示出了city.id=person.id的记录,它显示出了符合这个条件的记录。
二:外连接:
1.full outer join
full outer join(全外连接)返回参与连接的两个数据集合中的全部数据
sql语句:
select * from city full outer join person on city.id = person.id;
- 1
也可以写成:
select * from city full join person on city.id = person.id;
- 1
结果如下:
从结果可以看出,全外连接得到了city和person表中的全部数据
2.left outer join
left outer join(左连接) 返回包括左表中的所有记录和右表中连接字段相等的记录
sql语句:
select * from city left outer join person on city.id = person.id;
- 1
也可以写成:
select * from city left join person on city.id = person.id;
- 1
结果如下:
从结果可以看出,左外连接和全外连接的结果一模一样?
我们在给person中添加一行数据:
insert into person values(9,'Kiki');
- 1
在重新执行:
select * from city full join person on city.id = person.id;
- 1
结果如下:
select * from city left join person on city.id = person.id;
- 1
结果如下:
两个结果对照着看,left join显示出了city中的所有记录和person连接字段相等的记录
3.right outer join
right outer join(右连接) 返回包括右表中的所有记录和左表中连接字段相等的记录
sql语句:
select * from city right outer join person on city.id = person.id;
- 1
也可以写成
select * from city right join person on city.id = person.id;
- 1
结果如下:
从结果可以看出,person中的记录被全部显示出来,而city中的显示的数据是根据连接字段相等的记录
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/markdown_views-ea0013b516.css">
</div>
测试数据:
city表:
create table city(id int,name text);
insert into city values(0,'北京'),(1,'西安'),(2,'天津'),(3,'上海'),(4,'哈尔滨'),(5,'西藏')
- 1
- 2
person表:
create table person(id int,lastname char(20));
insert into person values(0,'Tom'),(2,'Lily'),(3,'Mary'),(5,'Coco');
- 1
- 2
select * from city;
- 1
select * from person;
- 1
一:内连接:
1.inner join
inner join(等值连接) 只返回两个表中联结字段相等的行
sql语句:
select * from city inner join person on city.id = person.id;
- 1
也可以写成:
select * from city join person on city.id = person.id;
- 1
结果如下:
从结果可以看出,表格中显示出了city.id=person.id的记录,它显示出了符合这个条件的记录。
二:外连接:
1.full outer join
full outer join(全外连接)返回参与连接的两个数据集合中的全部数据
sql语句:
select * from city full outer join person on city.id = person.id;
- 1
也可以写成:
select * from city full join person on city.id = person.id;
- 1
结果如下:
从结果可以看出,全外连接得到了city和person表中的全部数据
2.left outer join
left outer join(左连接) 返回包括左表中的所有记录和右表中连接字段相等的记录
sql语句:
select * from city left outer join person on city.id = person.id;
- 1
也可以写成:
select * from city left join person on city.id = person.id;
- 1
结果如下:
从结果可以看出,左外连接和全外连接的结果一模一样?
我们在给person中添加一行数据:
insert into person values(9,'Kiki');
- 1
在重新执行:
select * from city full join person on city.id = person.id;
- 1
结果如下:
select * from city left join person on city.id = person.id;
- 1
结果如下:
两个结果对照着看,left join显示出了city中的所有记录和person连接字段相等的记录
3.right outer join
right outer join(右连接) 返回包括右表中的所有记录和左表中连接字段相等的记录
sql语句:
select * from city right outer join person on city.id = person.id;
- 1
也可以写成
select * from city right join person on city.id = person.id;
- 1
结果如下:
从结果可以看出,person中的记录被全部显示出来,而city中的显示的数据是根据连接字段相等的记录
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/markdown_views-ea0013b516.css">
</div>