数据库实验报告
更新时间:2023-03-08 17:49:00 阅读量: 综合文库 文档下载
实验内容与要求
请有选择地实践以下各题。
(1)基于“教学管理”数据库jxgl,使用SQL的查询语句表达下列查询: ①检索年龄大于23岁的男学生的学号和姓名;
SELECT Sno,Sname FROM Student
WHERE Ssex=’男’AND
Sage>23;
②检索至少选修一门课程的女生姓名;
SELECT Sname FROM Student
WHERE Ssex=’女’AND Sno IN ( SELECT Sno
FROM SC
GROUP BY Sno
HAVING count(*)>=1; );
③检索王同学不学的课程的课程号;
SELECT Cno; FROM Course
WHERE Cno NOT IN ( SELECT Cno
FROM Student,SC
WHERE Sname like ’王%’AND Student.Sno=SC.Sno );
④检索至少选修两门课程的学生学号;
SELECT DISTINCT Sno FROM SC
GROUP BY Sno
HAVING count(*)>=2;
⑤检索全部学生都选修的课程的课程号与课程名;
SELECT Cno,Cname FROM Course
WHERE NOT EXISTS ( SELECT *
FROM Student WHERE NOT EXISTS ( SELECT *
FROM SC
WHERE SC.Sno=Student.Sno AND SC.Cno=Course.Cno ) );
⑥检索选修了所有3学分课程的学生学号;
SELECT DISTINCT Sno FROM SC X
WHERE NOT EXISTS ( SELECT *
FROM Course
WHERE Ccredit=3 AND NOT EXISTS ( SELECT *
FROM SC Y
WHERE X.Sno=Y.Sno AND Course.Cno=Y.Cno ) );
(2)基于“教学管理”数据库jxgl,使用SQL的查询语句表达下列查询: ①统计有学生选修的课程门数; SELECT count(DISTINCT Cno)
FROM SC;
②求选修4号课程的学生的平均年龄; SELECT AVG(Sage)
FROM Student,SC
WHERE Cno=4 AND Student.Sno=SC.Sno; ③求学分为3的每门课程的学生平均成绩;
SELECT AVG(Grade) FROM Course,SC
WHERE Ccredit=3 AND Course.Cno=SC.Cno GROUP BY SC.Cno;
④统计每门课程的学生选修人数,要求超过3人的课程才统计,要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列;
SELECT Cno,count(Sno) FROM SC GROUP BY Cno
HAVING count(Sno)>3
ORDER BY count(Sno) DESC,Cno ASC;
⑤检索学号比“王菲”同学大而年龄比他小的学生姓名;
SELECT Sname FROM Student X WHERE Sno> ( SELECT Sno
FROM Student Y
WHERE Sname=’王菲’AND Sage> ( SELECT Sage
FROM Student Z
WHERE Sname=’王菲’AND X.Sno=Z.Sno AND Y.Sno=Z.Sno ) );
⑥检索姓名以“王”打头的所有学生的姓名和年龄;
SELECT Sname,Sage FROM Student
WHERE Sname LIKE ‘王%’;
⑦在SC中检索成绩为空置的学生学号和课程号;
SELECT Sno,Cno FROM SC
WHERE Grade is NULL;
⑧求年龄大于女同学平均年龄的男学生姓名和年龄;
SELECT Sname,Sage FROM Student X
WHERE Ssex=’男’AND Sage> ( SELECT AVG(Sage)
FROM Student
WHERE Ssex=’女’AND X.Sno=Y.Sno );
⑨求年龄大于所有女同学年龄的男同学姓名和年龄;
SELECT Sname,Sage FROM Student X
WHERE Ssex=’男’AND Sage> ( SELECT MAX(Sage)
FROM Student Y
WHERE Ssex=’女’AND X.Sno=Y.Sno );
⑩检索所有比“王华”年龄大的学生姓名,年龄和性别;
SELECT Sname,Sage,Ssex FROM Student X WHERE Sage> ( SELECT Sage
FROM Student Y
WHERE Sname=’王华’AND X.Sno=Y.Sno );
①检索选修“2”课程的学生中成绩最高的学生和学号;
SELECT Sname,SC.Sno FROM Student,SC
WHERE Cno=2 AND Student.Sno=SC.Sno;
②检索学生姓名和其所选修课程的课程号和成绩;
SELECT Sname,Cno,Grade FROM Student,SC
WHERE Student.Sno=SC.Sno GROUP BY Sname;
③检索选修4门以上课程的学生总成绩(不统计不及格的课程),并要求按总成绩的降序排列出来;
SELECT Sno,SUM(Grade) FROM SC X
WHERE Grade>=60 AND Sno IN ( SELECT Sno
FROM SC Y
WHERE X.Sno=Y.Sno GROUP BY Sno
HAVING count(Cno)>4 )
` ORDER BY SUM(Grade) DESC;
(3)设有表4-1~表4-4的4个基本表(表结构于表内容是假设的),请先创建数据库及根据表内容创建表结构,并添加表记录,写出实现以下各题功能的SQL语句:
创建以下4各表: CREATE TABLE STUDENT (
SNO CHAR(6) PRIMARY KEY, SNAME CHAR(20) UNIQUE, SEX CHAR(2), AGE SMALLINT, CLASS CHAR(4) );
CREATE TABLE TEACHER (
TNO CHAR(3) PRIMARY KET, TNAMW CHAR(20) UNIQUE, SEX CHAR(2), AGE SMALLINT, PROF CHAR(10), DEPT CHAR(10) );
CREATE TABLE COURSE (
CNO CHAR(4) PRIMARY KEY, CNAME CHAR(20) UNIQUE, TNO CHAT(3),
FOREIGN KEY TNO REFERENCES TEACHER(TNO) );
CREATE TABLE SC (
SNO CHAR(6), CNO CHAR(4), GRADE SMALLINT,
PRIMARY KEY(SNO,CNO),
FOREIGN KEY SNO REFERENCES STUDENT(SNO), FOREIGN KEY CNO REFERENCES COURSE(CNO) );
插入数据:
INSERT INTO STUDENT
VALUES(‘980101’,’李华’,‘男’,19,’9801’); ......
同上方法依次插入数据
①查询选修课程“8105”且成绩在80到90之间的所有记录;
SELECT * FROM SC
WHERE CNO=’8105’AND GRADE BETWEEN 80 AND 90; ②查询成绩为79,89或99的记录;
SELECT * FROM SC
WHERE GRADE IN(79,89,99); ③查询“9803”班的学生人数;
SELECT count(SNO) FROM STUDENT
WHERE SNO LIKE ‘9803%’;
④查询至少有20名学生选修的并且课程号以8开头的课程及平均成绩;
SELECT CNO,AVG(GRADE) FROM SC
WHERE CNO LIKE ‘8%’ GROUP BY CNO;
HAVING count(SNO)>=20;
⑤查询最低分大于80,最高分小于95的SNO与平均分;
SELECT SNO,AVG(GRADE) FROM SC
GROUP BY SNO
HAVING MIN(GRADE)>80 AND MAX(GRADE)<95;
⑥查询“9803”班的学生所选各课程的课程号及平均成绩;
SELECT CNO,AVG(GRADE) FROM SC
WHERE SNO LIKE ‘9803’ GROUP BY CNO;
⑦查询选修“8105”课程的成绩高于“980302”号同学成绩的所有同学的记录;
SELECT * FROM SC X
WHERE CNO=’8105’AND GRATE> (
SELECT GRATE FROM SC Y
WHERE CNO=’8105’AND SNO=’980302’AND X.SNO=Y.SNO );
⑧查询与学号为“980103”的同学同岁的所有学生的SNO,SNAME和AGE;
SELECT SNO,SNAME,AGE
FROM STUDENT X WHERE AGE= (
SELECT AGE FROM STUDENT Y
WHERE SNO=’980103’AND X.SNO=Y.SNO );
⑨查询“钱军”教师任课的课程号,以及选修其课程学生的学号和成绩;
SELECT SC.CNO,SNO,GRADE FROM SC,TEACHRT,COURSE
WHERE TNAME=’钱军’AND TEACHER.TNO=COURSE.TNO AND SC.CON=COURSE.CON; ⑩查询选修某课程的学生人数多于20人的教师姓名;
SELECT DISTINCT TNAME FROM TEACHER,SC,COURSE
WHERE TEACHER.TNO=COURSE.TNO AND SC.CON=COURSE.CON GROUP BY SC.CNO
HAVING count(SNO)>20;
11查询选修编号为“8105”课程且成绩至少高于其选修编号为“8245”课程成绩的同学的 SNO及“8105”课程成绩,并按成绩从高到低依次排列;
SELECT SNO GRADE FROM SC X
WHERE CNO=’8105’AND GRADE> (
SELECT GRADE FROM SC Y
WHERE CNO=’8245’AND X.SNO=Y.SNO )
ORDER BY GRADE DESC; 12查询选修编号为“8105”课程且成绩高于所有选修编号为“8245”课程成绩的同学的CNO、SNO、GRADE;
SELECT CNO,SNO,GRADE FROM SC
WHERE CNO=’8105’AND GRADE> (
SELECT MAX(GRADE) FROM SC
WHERE CNO=’8245’AND X.CNO=Y.SNO );
13列出所有教师和同学的姓名,SEX,AGE;
SELECT TNAME,TEACHER.SEX,TEACHER.AGE,SNAME,STUDENT.SEX,STUDENT.AGE FROM TEACHER,SC
14查询成绩比该课程平均成绩高的学生的成绩表;
SELECT * FROM SC.X
GROUP BY SNO HAVING GRADE> (
SELECT AVG(GRADE) FROM SC.Y
WHERE X.CNO=Y.CNO GROUP BY CNO );
15列出所有任课教师的TNAME和DEPT;
SELECT TNAME,DEPT FROM TEACHER,COURSE
WHERE TEACHER.TNO=COURSE.TNO 16列出所有未讲课教师的TNAME和DEPT;
SELECT TNAME,DEPY FROM TEACHER WHERE NOT EXISTS (
SELECT * FROM COURSE
WHERE TEACHER.TNO=COURSE.TNO );
17列出至少有4名男生的班号;
SELECT CLASS FROM STUDENT GROUP BY CLASS
HAVING count(SNO)>=4; 18查询不姓“张”的学生记录;
SELECT * FROM STUDENT
WHERE SNAME NOT LIKE ‘张%’;
19查询每门课最高分的学生的SNO,CNO,GRADE;
SELECT SNO,CNO,GRADE FROM SC
GROUP BY CNO
HAVING GRADE=MAX(GRADE);
20查询与“李华”同性并同班的同学SNAME;
SELECT SNAME FROM STUDENT X WHERE CLASS= (
SELECT CLASS FROM STUDENT Y
WHERE SNAME=’李华’AND SEX= (
SELSCT SEX FROM STUDENT Z
WHERE SNAME=’李华’AND X.SNO=Y.SNO AND Y.SNO=Z.SNO )
);
21查询“女”教师及其所上的课程;
SELECT TNAME,CNO,CNAME FROM TEACHER,COURSE
WHERE TEACHER.TNO=COURSE.TNO,SEX=’女’;
22查询选修“数据库系统”课程的“男”同学的成绩表;
SELECT *
FROM SC,COURSE,STUDENT
WHERE STUDENT.SNO=SC.SNO AND COURSE.CNO=SC.CNO AND CNAME=’数据库系统’
AND SEX=’男’;
23查询所有比刘涛年龄大的教师姓名,年龄和刘涛的年龄;
SELECT TNAME,AGE FROM TEACHER X
WHERE SNAME=’刘涛’OR AGE> (
SELECT AGE FROM TEACHER Y
WHERE X.TNO=Y.TNO AND SNAME=’刘涛’ );
24查询不讲授“8106”号课程的教师姓名。
SELECT TNAME
FROM TEACHER,COURSE
WHERE TEACHER.TNO=COURSE.TNO AND CNO NOT IN(8106);
正在阅读:
数据库实验报告03-08
014模仿中创新:标杆管理实操05-02
浅谈建筑立面的肌理与层次03-08
2010新闻摄影自考试题及答案05-16
2018护士资格考试《专业实务》模拟试题02-23
毕业登记表的自我鉴定(最新4篇)03-25
2016年党建工作考核细则(初稿)09-09
银行招聘网:学校不好就没机会考进银行吗12-31
单片机经典教程 - 图文04-29
2015年度部门考核办法05-10
- 计算机试题
- 【2012天津卷高考满分作文】鱼心人不知
- 教育心理学历年真题及答案--浙江教师资格考试
- 20180327-第六届“中金所杯”全国大学生金融知识大赛参考题库
- 洪林兴达煤矿2018年度水情水害预测预报
- 基本要道讲义
- 机电设备安装试运行异常现象分析与对策
- 《有机化学》复习资料-李月明
- 非常可乐非常MC2--非常可乐广告策划提案 - 图文
- 2011中考数学真题解析4 - 科学记数法(含答案)
- 企业人力资源管理师三级07- 09年真题及答案
- 基于单片机的光控自动窗帘控制系统设计说明书1 - 图文
- 20160802神华九江输煤皮带机安装方案001
- (共53套)新人教版一生物必修2(全册)教案汇总 word打印版
- 2014行政管理学总复习
- 中国银监会关于加强地方政府融资平台贷款风险监管的指导意见
- 民宿酒店核心竞争与研究
- 游园活动谜语大全2012
- 河南省天一大联考2016届高三英语5月阶段性测试试题(六)(A卷)
- 小型超市管理系统毕业论文详细设计4
- 实验
- 数据库
- 报告
- 岭南版八年级下册美术教案
- 华东理工2011化工学院导师推荐名单
- 公文写作常用词汇和句子--最全
- 单纯形法
- xxx公司基础管理工作自查报告
- 华润置地任务与计划管理平台业务管理规范指导文件(试行)V311月10
- 中国华电集团公司下属发电公司
- 四川省达州市2018-2019学年高考历史二诊试卷
- 赣州市旅游发展总体规划
- 广州大学结构化学期末复习
- 进程管理习题
- LTE试题及答案
- 中国法学博士点及拥有法学博士后流动站一览
- 0毕业设计评审表(任务书)
- 党员档案 预备党员 1 入党申请书 2 入党积极分子考察表 3 考察期
- 吕沟煤矿六大系统实施规划
- 最新迎接本科教学工作合格评估教师手册
- 水电站电气部分设计毕业论文
- 圆锥曲线范围最值与图形存在
- 面试流程(预算员)