数据库实验报告

2019-04-14 12:26

实验内容与要求

请有选择地实践以下各题。

(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


数据库实验报告.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:科学精神与人文精神

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: