SQL 1

创建四个表并添加数据

student:

insert into student(学号,姓名,出生日期,性别) 
values('0001' , '猴子' , '1989-01-01' , '男');

insert into student(学号,姓名,出生日期,性别) 
values('0002' , '猴子' , '1990-12-21' , '女');

insert into student(学号,姓名,出生日期,性别) 
values('0003' , '马云' , '1991-12-21' , '男');

insert into student(学号,姓名,出生日期,性别) 
values('0004' , '王思聪' , '1990-05-20' , '男');

score:

insert into score(学号,课程号,成绩) 
values('0001' , '0001' , 80);

insert into score(学号,课程号,成绩) 
values('0001' , '0002' , 90);

insert into score(学号,课程号,成绩) 
values('0001' , '0003' , 99);

insert into score(学号,课程号,成绩) 
values('0002' , '0002' , 60);

insert into score(学号,课程号,成绩) 
values('0002' , '0003' , 80);

insert into score(学号,课程号,成绩) 
values('0003' , '0001' , 80);

insert into score(学号,课程号,成绩) 
values('0003' , '0002' , 80);

insert into score(学号,课程号,成绩) 
values('0003' , '0003' , 80);

course:

insert into course(课程号,课程名称,教师号)
values('0001' , '语文' , '0002');

insert into course(课程号,课程名称,教师号)
values('0002' , '数学' , '0001');

insert into course(课程号,课程名称,教师号)
values('0003' , '英语' , '0003');

teacher:

-- 教师表:添加数据
insert into teacher(教师号,教师姓名) 
values('0001' , '孟扎扎');

insert into teacher(教师号,教师姓名) 
values('0002' , '马化腾');

-- 这里的教师姓名是空值(null)
insert into teacher(教师号,教师姓名) 
values('0003' , null);

-- 这里的教师姓名是空字符串('')
insert into teacher(教师号,教师姓名) 
values('0004' , '');

 

1、简单查询

查询姓猴的

select *
from student
where 姓名 like '猴%'

查询名字中带猴的 

select *
from student
where 姓名 like '%猴%'
select *
from student
where 姓名 like '%猴%'

 查询姓名中有马字的老师的个数

select count(教师姓名)
from teacher
where 教师姓名 like '%马%'

2、汇总分析

查询课程编号为“0002”的总成绩

select sum(成绩)
from score
where 课程号 = '0002';

 分析思路:

select 查询结果 [总成绩:汇总函数sum]
from 从哪张表中查找数据[成绩表score]
where 查询条件 [课程号是0002]

查询选了课程的学生人数:

select count(distinct 学号) as 学生人数
from score

练习:分组

查询各科成绩最高和最低的分, 以如下的形式显示:课程号,最高分,最低分

select 课程号,max(成绩) as 最高分,min(成绩) as 最低分
from score
group by 课程号

查询每门课程被选修的学生数

select 课程号, count(学号) as 数量
from score
group by 课程号

查询男生、女生人数

select 性别, count(姓名) as 数量
from student
group by 性别

练习:分组结果的条件

查询平均成绩大于60分学生的学号和平均成绩

select 学号, avg(成绩) as 平均成绩
from score
group by 学号
having 平均成绩>60

查询至少选修两门课程的学生学号

select 学号, count(成绩) as 修课数量
from score
group by 学号
having 修课数量>=2

查询同名同姓学生名单并统计同名人数

select 姓名,count(姓名) as 同名人数
from student
group by 姓名

查询每门课程的平均成绩,结果按平均成绩升序排序,平均成绩相同时,按课程号降序排列

select 课程号,avg(成绩) as 平均成绩
from score
group by 课程号
order by 平均成绩 asc,课程号 desc

检索课程编号为“0004”且分数小于60的学生学号,结果按按分数降序排列

select 学号,成绩
from score
where 成绩<60 and 课程号='0004'
order by 成绩 desc

统计每门课程的学生选修人数(超过2人的课程才统计)

要求输出课程号和选修人数,查询结果按人数降序排序,若人数相同,按课程号升序排序

select 课程号,count(成绩) as 选修人数
from score
group by 课程号
having 选修人数>2
order by 选修人数 desc,课程号 asc

查询两门以上不及格课程的同学的学号及其平均成绩

select 学号,avg(成绩) as 不及格的平均成绩
from score
where 成绩<60
group by 学号
having count(不及格的平均成绩)>2

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值