收藏 分销(赏)

数据库实验报告 (3).doc

上传人:鼓*** 文档编号:12100099 上传时间:2025-09-12 格式:DOC 页数:8 大小:29.50KB 下载积分:8 金币
下载 相关 举报
数据库实验报告 (3).doc_第1页
第1页 / 共8页
数据库实验报告 (3).doc_第2页
第2页 / 共8页


点击查看更多>>
资源描述
实验内容与要求 请有选择地实践以下各题。 (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 SCo=Courseo ) ); ⑥检索选修了所有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 Courseo=Yo ) ); (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 Courseo=SCo GROUP BY SCo; ④统计每门课程得学生选修人数,要求超过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 SCO,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 SCO 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 XO=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 XO=YO 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 COURSEO=SCO 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);
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服