数据库习题1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第2章
【1】查询所有计算机系的学生信息。
【2】查询成绩在90分以上的学生学号
【3】查询选修1号课程且成绩在90分以上的学生学号
【4】查询选修数据库原理且成绩在85分以上的学生姓名【5】查询不选修1号课程的学生学号
【6】查询没有选修课程的学生学号
【7】查询选修1号和3号课程的学生学号
【8】查询选修全部课程的学生姓名。
【9】查询至少选修了S1所选的课程的学生学号。
答案:
(1)σSdept='计算机’(student)
(2)πSno (σGrade>90(SC))
(3)πSno (σGrade>90^Cno=’1’(SC))
(4)πSname(σGrade>85^Cname=’数据库原理’(Student SC Course))
(5)πSno (Student)- πSnoσCno=’1’(SC)
(6)πSno (Student)- πSno(SC)
(7)πSnoσCno=’1’(SC)∩πSnoσCno=’3’(SC)
(8)πSname ((πSno,Cno (SC)÷πCno (Couse)) Student))
(9)πSno,Cno (SC)÷πCno(σSno=’s1’(SC))
第3章
一、单表查询
【例1】输出学生表中的学生的姓名和年龄。
【例2】查询学生表中的所有数据。
【例3】查询选课的学生学号。
【例4】查询学生表中的系别。
【例5】查询学生表中的姓名和出生年份。
【例6】查询学生表中女生的信息。
【例7】在学生表中检索出年龄在18到20之间的学生信息。
【例8】查询姓王同学的记录。
【例9】查询学生表中计算机系男同学的学号、姓名。
【例10】查询全体男学生情况,要求结果按年龄降序排列。
【例11】查询学生总人数。
【例12】查询选课的学生人数。
【例13】统计系别的总数目。
【例14】统计计算机系学生的平均年龄。
【例15】统计每个系的学生人数。
【例16】查询选修3门以上课程的学生学号。
【例17】输出学生人数超过800人的系别和学生人数。
连接查询:
【例1】查询选课的学生学号和姓名。
【例2】查询每位学生的班长姓名。
【例3】查询选修数据库原理的学生学号。
【例4】查询选修数据库原理的学生学号和姓名。
【例6】查询选修3门以上课程的学生学号和姓名。
【例7】查询选修数据库原理的学生学号和成绩,并按成绩降序排列。
嵌套查询:
【例1】查询选修1号课程的学生学号和姓名。
【例2】查询刘雅所在系的学生信息。
【例3】查询没有选课的学生姓名。
【例4】查询其他系中比计算机系某一学生年龄大的学生姓名和年龄。
【例5】查询所有选修1号课程的学生学号和姓名。(用存在量词EXIST)
【例6】查询没有选修1号课程的学生姓名。
【例7】查询选修全部课程的学生姓名。
【例8】查询至少选修了S1所选的课程的学生学号。
Sql 综合练习
今天是你上班的第一天,职务是系部的教学秘书,职责之一是回答领导、老师、家长们的各种询问......
你的前任已经把数据库建好,数据库表也已输入过数据,你所知的情况如下:在“学生”数据库中有三张表文件,表名以及主要字段名如下:
学生(学号、姓名、性别、年龄)年龄是数值型,其余为字符型
成绩(学号、课程号、成绩)成绩是数值型,其余为字符型
课程(课程号、课程名)均为字符型
现在请你利用在学校学过的知识,用SQL命令快速解决以下问题:
首先设置默认目录至“上机文件夹”
1、系里决定给年龄较小的同学开一个座谈会,请你查询所有年龄在19岁以下的学生姓名及年龄(提示:用“学生”表)
2、辅导员要找考试不及格的同学谈话,请你查询考试成绩不及格的学生的学号和课程名(成绩,课程)
3、李华的父母来电询问李华的学习情况,请你查询李华所选修课程的课程号和成绩(学生,成绩)
4、有学生捡到一本书,上面只写了一个字“张”,请你查询所有姓张的学生信息
5、带003号课程的教师想要课程考试情况清单,请你查询选修了003号课程的学生的学号及成绩,结果按成绩的降序排列(成绩排序)
6、系里要开会总结学生选课率,请你查询选修了课程的学生人数(成绩计数)
7、001号课程是学校的精品课程,学校想知道这次考试中最高分是多少,请你查询选修001号课程的学生最高分数(成绩求最大值)
8、选修2门以上课程的同学可以申请不参加某些集体活动,请你查询选修了2门以上课程的学生学号(分组 having 计数)
9、辅导员想知道有哪些学生选了002号课程,请你查询所有选修了002号课程的学生姓名。(in)
10、辅导员想知道有哪些学生没有选002号课程,查询没有选修002号课程的学生姓名. (not in)
11、有学生转学过来,请你向学生表中插入一条记录("48","刘佩佩",19,"女")
12、学号为48的学生还未报到,暂时将她的信息从学生表中删除
13、学号“12”的学生受到处分,所以将成绩表中学号为“12”的成绩减去10
【例】查询选课的学生学号。
SELECT 学号,姓名;
FROM 学生
【例】查询学生表中的所有数据。
SELECT *;
FROM 学生
【例】输出学生表中的学生的姓名和年龄。
SELECT 姓名,YEAR(DATE())-YEAR(出生日期)AS 年龄;
FROM 学生
【例】查询学生表中的系别。
SELECT DISTINCT 系别;
FROM 学生
【例】查询学生表中女生的信息。
【例】在学生表中检索出年龄在18到20之间的学生信息。
【例】查询姓王同学的记录。
SELECT * ;
FROM 学生;
WHERE 姓名 LIKE “王%”
【例】查询学生表中D06系男同学的学号、姓名。
SELECT 学号,姓名;
FROM 学生;
WHERE 系别=“D01” AND 性别=“男”
【例】查询全体男学生情况,要求结果按出生日期降序排列。
SELECT * ;
FROM 学生;
WHERE 性别=“男”ORDER BY 出生日期 DESC
【例】查询学生总人数。
SELECT COUNT(*) ;
FROM 学生
【例】查询选课的学生人数。
【例】统计系别的总数目。
SELECT COUNT(DISTINCT 系别) ;
FROM 学生
【例】统计借书的学生人数。
【例】统计D06系学生的平均年龄。
SELECT AVG (YEAR(DATE())-YEAR(出生日期)AS 年龄;
FROM 学生;
WHERE 系别=’D06’