0
点赞
收藏
分享

微信扫一扫

从入门到精通:数据库辅助查询和连接查询


文章目录

  • ​​一、辅助查询​​
  • ​​1.排序​​
  • ​​2.分组查询​​
  • ​​3.使用 LIMIT 限制查询结果的数量​​
  • ​​二、连接查询​​
  • ​​1.内连接查询​​
  • ​​2.外连接查询​​
  • ​​3.复合条件连接查询​​

一、辅助查询

1.排序

# 默认升序
select 字段名 from 表名 order by 字段1 [asc|desc], 字段2 [asc|desc];


# where写在order by前面
SELECT *
FROM tb_score
WHERE class_id = 1
ORDER BY score DESC;

2.分组查询

# 语法规则 查询的是每个分组中 首次出现的一条记录 一般情况下,GROUP BY都和聚合函数一起使用。
SELECT 字段名 FROM 表名 GROUP BY 字段名;

3.使用 LIMIT 限制查询结果的数量

# 用来限制查询结果的数量。
SELECT 字段名 FROM 表名 LIMIT [OFFSET,] 记录数;

第一个参数,OFFSET,可选参数,表示偏移量,如果不指定默认值为0,表示从查询结果的第一条记录开始,若偏移量为1,则从查询结果中的第二条记录开始,以此类推。

第二个参数,记录数,表示返回查询结果的条数。


SELECT *
FROM tb_score
ORDER BY score DESC
LIMIT 1,4;

二、连接查询

1.内连接查询

# 仅将两个表中满足连接条件的行组合起来作为结果集,称为内连接;
表1 [inner] join 表2 on 表1.字段=表2.字段

# 从表1中取出每一条记录,去表2中与所有的记录进行匹配,匹配必须是某个条件在表1中与表2中相同,最终才会保留结果,否则不保留。inner 关键字可省略不写;on 表示连接条件:条件字段就是代表相同的业务含义(如下面两张表中的 employee.dept_id 和 department.id),大多数情况下为两张表中的主外键关系。

# as可以分别为字段和表名起别名
SELECT s.name as studentName,c.name as className
FROM tb_student as s join tb_class as c
ON s.class_id = c.id

2.外连接查询

# 以某张表为主,取出里面的所有记录,然后每条与另外一张表进行连接,不管能不能匹配上条件,最终都会保留。能匹配,正确保留;不能匹配,其它表的字段都置空(null),称为外连接。

# 外连接查询分为左外连接查询和右外连接查询;
表1 left/right [outer] join 表2 on 表1.字段=表2.字段

左外连接:在内连接的基础上,还包含表1中所有不符合条件的数据行,并在其中的表2列填写 NULL
右外连接:在内连接的基础上,还包含表2中所有不符合条件的数据行,并在其中的表1列填写 NULL

# 左外连接能做到的查询,右外连接也能做到,仅展现的效果有所不同。
左外连接和右外连接可以互转,只需将基准表换一下

3.复合条件连接查询

# 复合条件连接查询,就是在连接查询的过程中,通过添加过滤条件来限制查询结果,使查询结果更加精确。
SELECT s.name as studentName,s.score,c.name as className
FROM tb_student as s join tb_class as c
ON s.class_id = c.id
where s.score > 90;


举报

相关推荐

0 条评论