sql数据库之联表查询

表准备:

在网站 https://www.bejson.com/runcode/sql/ 或者 https://www.liaoxuefeng.com/wiki/1177760294764384/1179611432985088

执行下列sql创建表

CREATE TABLE jobs( employee varchar(30), title varchar(30));
CREATE TABLE ranks( title varchar(30), rank varchar(30));
CREATE TABLE salary( rank varchar(30), payment int(11));
insert into jobs values('张三','经理'),('李四','总经理'),('王五','总经理助理');
insert into ranks values('经理','三'),('总经理','一'),('总经理助理','二'),('董事长','零');
insert into salary values('一',20000),('二',8000),('三',7000),('四',7000);

这次我们用到3张表:

jobs 表:

 ranks 表:

 salary 表:

 

一、 内连接——Inner Join

内连接Inner join基于连接谓词将两张表(如A和B)的列组合在一起,产生新的结果表。

 

select ranks.title,ranks.rank,salary.rank,salary.payment from ranks,salary where salary.rank=ranks.rank; 隐式内连接

select * from ranks r inner join salary s on s.rank=r.rank; 显式内连接

查询结果如下:

r!titler!ranks!ranks!payment
经理 7000
总经理 20000
总经理助理 8000

二、左外连接(left outer join,outer可省略)

左表全部出现在结果集中,若右表无对应记录,则相应字段为NULL

 

select * from ranks r left join salary s on r.rank=s.rank;

结果如下:

r!titler!ranks!ranks!payment
经理 7000
总经理 20000
总经理助理 8000
董事长 NULL NULL
select * from ranks r left join salary s on r.rank=s.rank where s.rank is null;

结果如下:

r!titler!ranks!ranks!payment
董事长 NULL NULL

三、右外连接(right outer join,outer可省略)

右表全部出现在结果集中,若左表无对应记录,则相应字段为NULL

select * from ranks r right join salary s on r.rank=s.rank;

 

 结果如下:

 
r!titler!ranks!ranks!payment
经理 7000
总经理 20000
总经理助理 8000
NULL NULL 7000
select * from ranks r right join salary s on r.rank=s.rank where r.rank is null;

结果如下:

r!titler!ranks!ranks!payment
NULL NULL 7000

四、全外连接(full outer join)

全外连接=左外连接+右外连接

 

select * from ranks r full outer join salary s on r.rank=s.rank;

结果如下:

r!titler!ranks!ranks!payment
经理 7000
总经理 20000
总经理助理 8000
董事长 NULL NULL
NULL NULL 7000
select * from ranks r full outer join salary s on r.rank=s.rank where r.rank is null or s.rank is null;

结果如下:

r!titler!ranks!ranks!payment
董事长 NULL NULL
NULL NULL 7000

 

posted @   超级宝宝11  阅读(1342)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示