重新了解数据库——排序、分页和子查询

select完整语法

group by、having、order by和limit都要按照select语句的语法顺序来写。

 

排序

语法:order by 字段 升序/降序;

  • 升序ASC
  • 降序DESC
--查询结果按成绩升序排序
select id,name,score 
from student
order by score ASC;

 

分页

语法:limit 起始值,页面的大小

--查询结果按成绩升序排序,每五个分页
select id,name,score 
from student
order by score ASC
limit 0,5;

 

子查询

语法:在where中嵌套一个子查询语句

查询课程为高数并且成绩大于80分的学生学号和姓名

使用子查询:子查询稍微难理解一点但是语法简洁

select id,name from student where id in (
  select id from result where score>80 and subjectId = (
  select subjectId from subject where subjectName = '高数'
  )
)

使用联表查询:

select s.id name
from student s
inner join result r
on s.id = r.id
inner join subject sub
on r.id = sub.id
where score>80 and subjectName='高数';

 

分组和过滤

在使用了分组后的过滤中不能使用where,需要使用having,不过他们两个效果是一样的。

--查询不同课程的平均分,最高分,平均分大于80(根据不同的课程分组)
select SubjectName,AVG(score) as 平均分,MAX(score)
from result r
inner join subject sub
on r.SubjectId = sub.SubjectId
group by r.SubjectId
having 平均分>80;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值