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

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;
发布了322 篇原创文章 · 获赞 61 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/wan_ide/article/details/105387688