MySQL Select 语句查询

笔记:


聚集函数:count,any,max,sum;

注意:
1.当其遇到空值时,除count(*)外,都会跳过空值去处理非空值!
2.聚集函数只能用于select语句  group by 中的having字句

where和having的区分:

1.where用于分组前的筛选
2.having用于分组后的筛选
例:
6.查询选修两门及两门以上课程的学生学号
select sno from sc group by sno having count(*)>1;

3.group by的分组,前面不需要选择了才可以用于分组,不选择也是可以分组的
例:
9.查询成绩不及格的学生的不及格课程数目
select sno,count(*) from sc where grade<60 group by sno;
这里去掉前面的sno也可以查询。

创建表数据:

create table student
(
sno char(9) primary key,
sname char(20) unique,
ssex char(2),
sage smallint,
sdept char(20));

insert into student values('201920','李勇','男',20,'CS');
insert into student values('201921','王敏','女',22,'IS');
insert into student values('201922','刘晨','女',21,'CS');
insert into student values('201923','张立','男',19,'MAS');
insert into student values('201924','王德发','男',19,'IS');
insert into student values('201925','纪伯伦','男',21,'CS');

create table course(
cno char (4) primary key,
cname varchar (40),
cpno char (4),
ccredit smallint);

insert into course values('1','数据库',5,4);
insert into course values('2','高等数学',null,1);
insert into course values('3','Java程序设计',4,5);
insert into course values('4','C语言程序基础',2,3);
insert into course values('5','网页前端设计',null,4);
insert into course values('6','线性代数',1,2);
insert into course values('7','Javascript',2,2);
insert into course values('8','HTML前端开发',3,1);

create table sc(
sno char (9),
cno char (4),
grade smallint,
primary key(sno,cno),
foreign key(sno) references student (sno),
foreign key(cno) references course (cno));

insert into sc values('201921','1',96);
insert into sc values('201922','2',80);
insert into sc values('201923','2',90);
insert into sc values('201923','3',70);
insert into sc values('201922','4',50);
insert into sc values('201923','4',59);
insert into sc values('201921','5',70);
insert into sc values('201924','4',60);
insert into sc values('201924','7',98);
insert into sc values('201925','4',50);
insert into sc values('201925','8',96);

题目:

针对student、course、sc 三个表,写出实现下列查询的select语句:
1.查询计算机系学生的学号和姓名
2.查询选修了课程的学生学号
3.查询选修“C01” 课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列
4.查询每门课程的平均分
5.查询学校开设的课程总数
6.查询选修两门及两门以上课程的学生学号
7.查询年龄在20-22之间的男生的学号、姓名、系部
8.查询选修“C01”课程的学生人数
9.查询成绩不及格的学生的不及格课程数目
10.查询每门课程的最高分数
11.查询平均成绩高于90分的课程号

查询语句:

1.查询计算机系学生的学号和姓名
select sno,sname from student where sdept='CS';

2.查询选修了课程的学生学号
select distinct sno from sc;

3.查询选修“C01” 课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列
select sno,grade from sc where cno='C01' order by grade desc,sno;

4.查询每门课程的平均分
select cno,avg(grade) from sc group by cno;

5.查询学校开设的课程总数
select count(cno) from course ;

6.查询选修两门及两门以上课程的学生学号
select sno from sc group by sno having count(*)>1;

7.查询年龄在20-22之间的男生的学号、姓名、系部
select sno,sname,sdept from student where sage>20 and sage<22 and ssex='男';
或者:
select sno,sname,sdept from student where sag between 20 and 22 and ssex='男';

8.查询选修“C01”课程的学生人数
select count(*) from sc where  cno='C01';

9.查询成绩不及格的学生的不及格课程数目
select sno,count(*) from sc where grade<60 group by sno;

10.查询每门课程的最高分数
select cno,max(grade) from sc group by cno;

11.查询平均成绩高于90分的课程号
select cno from sc group by cno having avg(grade)>90;


(仅供参考复习使用,如有错误请评论指正!)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值