SQL的连接查询

152 阅读2分钟

今天学习的SQL连接查询主要分三个,即内连接,左外连接,右外连接。

对于个人理解来说,用数学中的集合来理解可能会更好的理解,比如说连接查询中的内连接可以理解为数学集合中的交集,

举个例子来说现在有两个集合 q(1,2,3,4,5) 和 p(2,3,4,5,6),则它们的交集为 w(2,3,4,5), 集合q和集合p当作两个表,那交集w就相当于它们内连接后的结果。

左外连接则可以理解为集合q和交集w的并集 即q∪w=(1,2,3,4,5),右外连接也是同一个道理。

下面用一个简单例子来演示一下:首先创建了两个简单的表

#商品分类表commodity_1

create table commodity_1(
                        id int primary key ,  # 商品分类类型的编号
                        cname varchar(30),    # 商品分类的名称
                        cid int        # 某商品的编号
);

# 商品表commodity_2
create table commodity_2(
                         sid int primary key ,  # 商品的编号
                         sname varchar(30)    # 商品的名称
);
# 插入一些数据
insert into commodity_1 values (1,'日常生活用品',4),(2,'零食区',5),(3,'粮食区',6);
insert into commodity_1 values (4,'饮料区',8);
insert into commodity_2 values (4,'桶'),(5,'旺仔小馒头'),(6,'油');
insert into commodity_2 values (7,'自行车');

内连接

# 内查询
# 内连接关键字: inner join ... on

# 显式内连接格式: select * from 左表 inner join 右表 on 关联条件;

# 隐式内连接格式:  select * from 左表 , 右表 where 关联条件;

注意: 左表和右表没有特殊含义,只是在前面是左表,在后面的是右表

# 例子
select id,cname,commodity_2.sname from commodity_1 inner join commodity_2  on commodity_1.cid=commodity_2.sid;

结果

image.png

左外连接

# 左连接
# 内连接关键字: left outer join ... on

# 左外连接格式: select * from 左表 left outer join 右表 on 关联条件;

# 例子
select id,cname,commodity_2.sname from commodity_1 left join commodity_2  on commodity_1.cid=commodity_2.sid;

结果

image.png

(获取所有的商品分类和对应的商品,没有的null补全)

右外连接

# 内连接关键字: right outer join ... on

# 左外连接格式: select * from 左表 right outer join 右表 on 关联条件;

# 例子
select id,cname,commodity_2.sname from commodity_1  right join commodity_2  on commodity_1.cid=commodity_2.sid;

结果

image.png

以上就是上述三个连接查询的内容啦

还是小白新一个,如有不对的地方或者理解有误,欢迎指正。