数据库sql查询语句练习2_习题_结果(单世民)
更新时间:2024-06-02 06:42:01 阅读量: 综合文库 文档下载
- SQL数据库查询语句推荐度:
- 相关推荐
数据库sql
现在有一教学管理系统,具体的关系模式如下:
Student (no, name, sex, birthday, class)
Teacher (no, name, sex, birthday, prof, depart) Course (cno, cname, tno) Score (no, cno, degree)
其中表中包含如下数据: Course表:
Score表:
Student表:
- 1 -
数据库sql
Teacher表:
根据上面描述完成下面问题:
(注意:注意保存脚本,尤其是DDL和DML,以便进行数据还原) DDL
1. 写出上述表的建表语句。
2. 给出相应的INSERT语句来完成题中给出数据的插入。
单表查询
3. 以class降序输出student的所有记录(student表全部属性)
命令:select * from Student order by class desc;
- 2 -
数据库sql
4. 列出教师所在的单位depart(不重复)。
命令:select distinct depart from Teacher;
5. 列出student表中所有记录的name、sex和class列
命令:select name,sex,class from Student;
6. 输出student中不姓王的同学的姓名。
命令:select name from Student except select name from Student where name like '王%';或
- 3 -
数据库sql
select name from Student where name not like '王%';
7. 输出成绩为85或86或88或在60-80之间的记录(no,cno,degree)
命令:select no,cno,DEGREE from Score where degree=85 or degree=86 or degree=88 or degree between 60 and 80;
8. 输出班级为95001或性别为‘女’ 的同学(student表全部属性)
命令:select * from Student where class=95001 or sex='女';
- 4 -
数据库sql
9. 以cno升序、degree降序输出score的所有记录。(score表全部属性)
命令:select * from Score order by cno asc,degree desc;
10. 输出男生人数及这些男生分布在多少个班级中
命令:select COUNT(*),count(distinct class) from Student where sex='男';
11. 列出存在有85分以上成绩的课程编号。
命令:select distinct cno from Score where degree>85;
12. 输出95001班级的学生人数
命令:select COUNT(*) from Student where class=95001;
- 5 -
数据库sql
13. 输出‘3-105’号课程的平均分
命令:select avg(cast(degree as float)) from Score where cno='3-105';
14. 输出student中最大和最小的birthday日期值
命令:select MAX(birthday),MIN(birthday) from Student;
15. 显示95001和95004班全体学生的全部个人信息(不包括选课)。(student表全部属性)
命令:select * from Student where class=95001 or class=95004;
聚合查询
16. 输出至少有5个同学选修的并以3开头的课程的课程号,课程平均分,课程最高分,
课程最低分。
命令:select cno,avg(cast(degree as float)),MAX(degree),MIN(degree) from Score where cno like '3%' group by cno having COUNT(cno)>5; 或者:
select cno,AVG(cast(DEGREE as float)),MAX(degree),MIN(DEGREE) from Score group by cno having COUNT(cno)>=5 and cno like '3%'
17. 输出所选修课程中最低分大于70分且最高分小于90分的学生学号及学生姓名
命令:select Student.no,name from Student join Score on
Student.no=Score.no
group
by
Student.no,name
having
MAX(Score.degree)<90 and MIN(Score.degree)>70;
18. 显示所教课程选修人数多于5人的教师姓名
命令:select name from Teacher join Course on Teacher.no=Course.tno
where Course.cno in(select cno from Score group by cno having COUNT(Score.cno)>5);
- 6 -
数据库sql
19. 输出’95001’班级所选课程的课程号和平均分
命令:select cno,avg(cast(degree as float)) from Score where no
in(select no from Student where class=95001) group by cno;
或者:
select cno,AVG(cast(degree as float)) from Score join Student on Score.no=Student.no group by cno,class having class='95001'
20. 输出至少有两名男同学的班级编号。
命令:select class from Student where sex='男' group by class having COUNT(class)>=2;
或者:select a.class from (select * from Student where sex='男') a group by a.class having COUNT(a.class)>=2
多表查询
21. 列出与108号同学同年出生的所有学生的学号、姓名和生日
命令:select no,name,birthday from Student where year(birthday)
=(select year(birthday) from Student where no=108);
或者:select b.no,b.name,b.birthday from Student a join Student b on datediff(YEAR,a.birthday,b.birthday)=0 and a.no='108'
22. 列出存在有85分以上成绩的课程名称
- 7 -
数据库sql
命令:select cname from Course where cno in (select distinct cno from
Score where degree>85);或
select distinct cname from Course join Score on Course.cno=Score.cno where degree>85;
23. 列出“计算机系”教师所教课程的成绩表(课程编号,课程名,学生名,成绩)。
命令:select Course.cno,cname,Student.name,DEGREE from Teacher join
Course on Teacher.no=Course.tno join Score on Course.cno=Score.cno join Student on Score.no=Student.no where Teacher.depart='计算机系';
24. 列出所有可能的“计算机系”与“电子工程系”不同职称的教师配对信息,要求输出
每个老师的姓名(name)和(职称)
命
select a.name,a.prof,b.name,b.prof from (select
name,prof,depart from Teacher where depart='计算机系' or depart='电子工程系') a join (select name,prof,depart from Teacher where depart='电子工程系' or depart='计算机系') b on not a.prof=b.prof and not a.depart=b.depart;
令:
25. 列出所有处于不同班级中,但具有相同生日的学生,要求输出每个学生的学
号和姓名。(提示:使用datediff函数,具体用法可以参考:http://hcmfys.javaeye.com/blog/588844)
命令:select a.no,a.name,b.no,b.name from Student a join Student b on not a.class=b.class and a.birthday=b.birthday;
26. 显示‘张三’教师任课的学生姓名,课程名,成绩
命令:select Student.name,cname,DEGREE from Teacher join Course on
Teacher.no=Course.tno join Score on Course.cno=Score.cno join Student on Score.no=Student.no where Teacher.name='张三';
- 8 -
数据库sql
27. 列出所讲课已被选修的教师的姓名和系别
命令:select distinct name,depart from Teacher join Course on Teacher.no=Course.tno join Score on Course.cno=Score.cno;
28. 输出所有学生的name、no和degree。(degree为空的不输出和为空的输出两
种情况)。
命令:select name,Student.no,DEGREE from Student left join Score on
Student.no=Score.no;
select name,Student.no,DEGREE from Student join Score on Student.no=Score.no;
- 9 -
数据库sql
29. 列出所有任课教师的name和depart。(从课程选修和任课两个角度考虑)
命令:select distinct name,depart from Teacher join Course on
Teacher.no=Course.tno;
select distinct name,depart from Teacher join Course on Teacher.no=Course.tno join Score on Course.cno=Score.cno;
30. 输出男教师所上课程名称。
命令:select cname from Teacher join Course on Teacher.no=Course.tno where Teacher.sex='男';
31. 出与“李军”同性别的所有同学的name。
命令:select name from Student where sex=(select sex from Student where name='李军');
32. 输出选修“数据结构”课程的男同学的成绩。
命令:select DEGREE from Score join Student on Score.no=Student.no
- 10 -
数据库sql
join Course on Score.cno=Course.cno where sex='男' and cname='数据结构';
33. 列出选修编号为‘3-105’课程并且该门课程成绩比课程 ‘3-111’的最高分
要高的cno,no和degree。
命令:select Course.cno,Score.no,DEGREE from Course join Score on
Course.cno=Score.cno join Student on Score.no=Student.no where Course.cno='3-105' and Score.degree>(select max(degree) from Score where Score.cno='3-111');
子查询
34. 输出score中成绩最高的学号和课程号
命令:select no,cno from Score where degree in(select MAX(degree) from Score);
35. 输出选修3-105课程,其成绩高于109号同学在此课程所得成绩的所有同学的学号,姓
名
命令:select Student.no,name from Student join Score on Student.no
=Score.no where Score.cno='3-105' and degree>(select degree from Score where no='109' and cno='3-105');
36. 列出成绩比该课程平均成绩低的同学的学号,成绩和该门课的平均成绩
命令:select no,DEGREE,a.avg_degree from Score join (select
cno,AVG(cast(degree as float)) from Score group by cno) a(cno,avg_degree)
on
Score.cno=a.cno
where
Score.degree
- 11 -
数据库sql
37. 列出没有实际授课的教师的姓名和系别
命令:select name,depart from Teacher except select name,depart from
Teacher join Course on Teacher.no=Course.tno join Score on Course.cno=Score.cno;
38. 列出选修了编号为‘3-105’课程且其成绩高于‘4-109’课程最高成绩的同学的 课程
编号,学号和成绩
命令:select cno,no,DEGREE from Score where cno='3-105' and degree>(select MAX(degree) from Score where cno='4-109');
39. **列出符合下述条件的所有可能的同学配对(sno1,sname1,sno2,sname2,difference)。
其中要求学号为sno1的sname1同学的所学课程的平均分大于学号为sno2的sname2同学的所学课程平均分,两个同学的课程平均分的差值difference为(sno1同学平均分-sno2同学平均分)
命令:select a.no,a.name,b.no,b.name,a.avg_degree-b.avg_degree as
difference from (select Student.no,name,avg(degree) from Student join Score
on
Student.no=Score.no
group
by
Student.no,name)
a(no,name,avg_degree) join (select Student.no,name,avg(degree) from Student join Score on Student.no=Score.no group by Student.no,name) b(no,name,avg_degree) on a.avg_degree>b.avg_degree;
- 12 -
数据库sql
- 13 -
正在阅读:
查看Oracle表空间使用情况07-28
复旦投毒案事件始末02-13
小学生二年级夏天的景色作文06-13
ansys解决非线性分析不收敛的技巧11-24
45MW风力发电场建设项目可行性研究报告04-08
9第九章教育科学的调查研究法04-10
泪水凝聚的爱作文600字07-17
区2021年基层党建工作会议发言材料08-23
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 习题
- 语句
- 练习
- 数据库
- 结果
- 查询
- sql
- 卫生部下发精神卫生专科医院建筑设计方案参考图集
- 实验室安全知识习题 (4)单选
- 辽宁省茶叶零售企业名录2018版860家 - 图文
- 企业财务会计习题集(第四版)参考答案
- 关于进一步加强我市建设工程深基坑施工管理工作的紧急通知 杭建
- 英语语法术语解释
- 习题1:企业合并
- c语言题库1
- 2014会计本科函授《高级财务会计》复习资料柯婷
- 上海阳光集团项目营销策略
- 如何提高课堂提问的有效性
- 青铜器装饰纹样—窃曲纹的构成及形式美研究
- 共青团浙江大学宁波理工学院委员会
- 文言特殊句式学案全
- 《小学语文阅读有效教学策略研究》开题报告
- 管网设计计算书
- 2010福建省事业单位招聘考试必过技巧
- 外销员资格考试历年试题 单选
- 2018版中国污水处理现状发展趋势走势分析报告目录
- 关于鼓励员工考取职称及职业资格证书的奖励办法