数据库查询语句(note4)

第五周(数据库查询语句)

学习内容

知识点:
1.select子句
2.from子句
3.where子句
包括分组查询:
分组:group by子句、
分组条件:having子句、
排序:order  by子句、
输出行限制:limit子句、
联合查询:union子句、
行浏览查询:handler语句

练习题

#1. 在xscj数据库产生一个结果是集,包括每门课程各专业的平均成绩、每门课程的总平均成绩和所有课程的总平均成绩
#字段
SELECT 课程名,专业名,AVG(成绩) as '平均成绩'
#关系表
FROM xs,kc,xs_kc
#建立表之间的联系
where xs_kc.`课程号`=kc.`课程号` and xs_kc.`学号`=xs.`学号`
GROUP BY 课程名,专业名
WITH ROLLUP;

#2. 查询平均成绩在85分以上的学生的学号和平均成绩
select 学号,AVG(成绩) as 平均成绩
from xs_kc
GROUP BY 学号
HAVING 平均成绩>85;
    
    
#3. 查询选修课程超过2门且成绩都在80分以上的学生的学号
SELECT 学号 FROM xs_kc WHERE 成绩>=80 GROUP BY 学号 HAVING COUNT(*)>2;

#4. 查找通信工程专业平均成绩在85分以上的学生的学号和平均成绩
SELECT 学号,AVG(成绩) as '平均成绩'
FROM xs_kc
WHERE 学号 IN(SELECT 学号 FROM xs WHERE 专业名='通信工程')
GROUP BY 学号
HAVING AVG(成绩)>=85;


#5. 将通信工程专业的学生按照出生日期先后排序
SELECT 学号,姓名,专业名,出生日期
FROM xs
WHERE 专业名='通信工程'
ORDER BY 出生日期;#(或者 ORDER BY 4;)




#6. 将计算机专业学生的计算机基础课程成绩按降序排列
SELECT 姓名,课程名,成绩
FROM xs,xs_kc,kc
WHERE xs.`学号`=xs_kc.`学号` AND xs_kc.`课程号`=kc.`课程号` AND 课程名='计算机基础' 
AND 专业名='计算机'
GROUP BY 成绩 DESC;

#7. 将计算机专业学生按其平均成绩排列
SELECT 学号,姓名,专业名
FROM xs 
WHERE 专业名='计算机' 
ORDER BY (SELECT AVG(成绩) 
					FROM xs_kc 
					GROUP BY xs_kc.`学号` 
					HAVING xs.`学号`=xs_kc.`学号`);

#8. 查找xs表中学号最靠前的5位学生的信息
SELECT 学号,姓名,专业名,性别,出生日期,总学分
FROM xs
ORDER BY 学号
LIMIT 5;



#9. 查找xs表中从第4位同学开始的5位学生的信息

SELECT 学号,姓名,专业名,性别,出生日期,总学分
FROM xs
ORDER BY 学号
LIMIT 3,5;

# 10.查找学号为081101和学号081210的两位学生的信息
SELECT 学号,姓名,专业名,性别,出生日期,总学分
FROM xs
WHERE 学号='081101'
UNION
SELECT 学号,姓名,专业名,性别,出生日期,总学分
FROM xs
WHERE 学号='081210';
posted @ 2020-04-22 16:10  风里来雨里去duu  阅读(910)  评论(0编辑  收藏  举报