数据库复习题.docx

上传人:b****7 文档编号:10492281 上传时间:2023-02-14 格式:DOCX 页数:23 大小:27.47KB
下载 相关 举报
数据库复习题.docx_第1页
第1页 / 共23页
数据库复习题.docx_第2页
第2页 / 共23页
数据库复习题.docx_第3页
第3页 / 共23页
数据库复习题.docx_第4页
第4页 / 共23页
数据库复习题.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

数据库复习题.docx

《数据库复习题.docx》由会员分享,可在线阅读,更多相关《数据库复习题.docx(23页珍藏版)》请在冰豆网上搜索。

数据库复习题.docx

数据库复习题

习题一答案

1、设有关系R和S:

RABCSBCD

642449

653425

568526

538

684

计算:

R

S,R

,R

,R

2、设有关系R和S:

RABCSABC

367345

257723

723

443

2<2

计算:

R

R-S,R

R×S,π3,2(S),σB<’5’(R),R

R

3、设有3个关系:

S(S#,SNAME,AGE,SEX)

SC(S#,C#,CNAME)

C(C#,CNAME,TEACHER)

试用关系代数表达式表示下列查询:

(1)检索LIU老师所授课的课程号和课程名。

SELECTC#,CNAME

FROMC

WHERETEACHER=’LIU’;

(2)检索年龄大于23岁的男学生的学号和姓名。

SELECTS#,SNAME

FROMS

WHEREAGE>23ANDSEX=’M’;

(3)检索学号为S3学生所学课程的课程名与任课教师名。

SELECTCNAME,TEACHER

FROMSC,C

WHERESC.C#=C.C#ANDS#=’S3’;

(4)检索至少选修LIU老师所讲授课程中一门课的女学生姓名。

SELECTSNAME

FROMS,SC,C

WHERES.S#=SC.S#ANDSC.C#=C.C#

ANDSEX=’F’ANDTERCHER=’LIU’;

(5)检索WANG同学不学的课程的课程号。

SELECTC#

FROMC

WHERENOTEXISTS

(SELECT*

FROMS,SC

WHERES.S#=SC.S#ANDSC.C#=C.C#

ANDSNAME=’WANG’);

(6)检索至少选修两门课的学生学号。

SELECTDISTINCTX.S#,

FROMSCASX,SCASY

WHEREX.S#=Y.S#ANDX.C#!

=Y.C#;

(7)检索全部学生都选修的课程的课程号与课程名。

SELECTC#,CNAME

FROMC

WHERENOTEXISTS

(SELECT*

FROMS

WHERENOTEXISTS

(SELECT*

FROMSC

WHERES#=S.S#ANDC#=C.C#));

(8)检索选修课程包含LIU老师所授全部课程的学生学号。

SELECTDISTINCTS#

FROMSCASX

WHERENOTEXISTS

(SELECT*

FROMC

WHERETEACHER=’LIU’

ANDNOTEXISTS

(SELECT*

FROMSCASY

WHEREY.S#=X.S#ANDY.C#=C.C#));

习题二答案

已知某教学管理数据库中包含5个基本表:

学生情况基本表Students(Sno,Sname,Sage,Ssex,Sdept,Sclno)其中,Sclno表示班别

课程情况基本表Courses(Cno,Cname,Credit)

选课情况基本表Grade(Sno,Cno,Gmark)其中,Gmark表示成绩

教师任课情况基本表TeachINg(Cno,Class,Tno,Snum)其中,Snum是选修此课人数

教师情况基本表Teachers(Tno,Tname,Tage,Ps)其中,Ps表示职称

完成下列问题:

1、检索至少选修课程号为001和010的学生学号;

SELECTSno

FROMGradeX,GradeY

WHEREX.Sno=Y.SnoANDX.Cno=’001’ANDY.Cno=’010’;

2、找出各课程的平均成绩,按课程号分组,且只选择学生超过10人的课程的成绩;

SELECTCno,AVG(Gmark)

FROMGrade

GROUPBYCno

HAVINGCOUNT(*)>=10;

3、检索“王一平”老师讲授的课程名及选修课程的学生人数;

SELECTCname,Snum

FROMCourses,Teachers,Teaching

WHERECourses.Cno=Teaching.Cno

ANDTeachers.Tno=Teaching.Tno

ANDTeachers.Tname=’王一平’;

4、统计“教授”职称的教师人数及平均年龄;

SELECTCOUNT(*),AVG(Tage)

FROMTeachers

WHEREPs=’教授’;

5、列出各系的学生数(人数多的排在前面);

SELECTSdept,COUNT(*)

FROMStudents

GROUPBYSdept

ORDERBYCOUNT(*)DESC;

6、找出各科成绩均在85分以上(含85分)的学生的学号、姓名;

SELECTSno,Sname

FROMStudents

WHERESno=

(SELECTSno

FROMGrade

WHEREStudents.Sno=Grade.Sno

GROUPBYSno

HAVINGMIN(Gmark)>=85);

7、找出计算机系至少有三门课程的成绩在75分以下的学生的学号、姓名;

SELECTSno,Sname

FROMStudents

WHERESno=

(SELECTSno

FROMGrade

WHEREStudents.Sno=Grade.SnoANDGmark<75

GROUPBYSno

HAVINGCOUNT(*)>=3)

ANDSdept='计算机';

8、列出学生的学号、姓名、数据库成绩,按照数据库成绩降序排列;

SELECTStudents.Sno,Sname,Gmark

FROMStudents,Grade,Courses

WHEREStudents.Sno=Grade.SnoANDCourses.Cno=Grade.Cno

ANDCourses.Cname='数据库'

ORDERBYGmarkDESC;

9、查询平均成绩大于75分的学号、姓名、平均成绩;

SELECTStudents.Sno,Sname,AVG(Gmark)

FROMStudents,Grade

WHEREStudents.Sno=Grade.Sno

GROUPBYStudents.Sno,Students.Sname

HAVINGAVG(Gmark)>75;

10、求其他班中比00312班某一学生年龄小的学生(即年龄小于00312班年龄最大者的学生);

SELECT*

FROMStudents

WHEREClno!

='00312'ANDSage

(SELECTSage

FROMStudents

WHEREClno='00312');

11、求其他班中比00312班学生年龄都小的学生;

SELECT*

FROMStudents

WHEREClno!

='00312'ANDSage

(SELECTSage

FROMStudents

WHEREClno='00312');

12、求没有选修‘数据库’课程的学生姓名;

SELECTSno,Sname

FROMStudents

WHERESnoNOTIN

(SELECTSnoFROMGrade,CoursesWHEREGrade.Cno=Courses.Cno

ANDCourses.Cname='数据库');

13、求至少选修了姓名为“李勇”的学生所选修全部课程的学生学号和姓名;

SELECTSno,SnameFROMStudents

WHERESnoIN

(SELECTDISTINCTSno

FROMGradeSCX

WHERENOTEXISTS

(SELECT*

FROMGradeSCY

WHERESCY.Sno=(SELECTSnoFROMStudents

WHERESname='李勇')ANDNOTEXISTS

(SELECT*

FROMGradeSCZ

WHERESCZ.Sno=SCX.Sno

ANDSCZ.Cno=SCY.Cno)));

14、求1号课程的成绩高于李勇的学生学号和成绩;

SELECTSno,GmarkFROMGrade

WHERESnoIN

(SELECTSnoFROMGrade

WHERECno='1'ANDGmark>

(SELECTGmarkFROMGrade,StudentsWHEREGrade.Sno=Students.Sno

ANDStudents.Sname='李勇'ANDCno='1'));

15、求选修了高等数学的学号和姓名;

SELECTSno,Sname

FROMStudents

WHERESnoIN

(SELECTSno

FROMGrade,Courses

WHEREGrade.Cno=Courses.Cno

ANDCourses.Cname=’高等数学’);

16、查询选修了全部课程的学生姓名;

SELECTSnameFROMStudents

WHERENOTEXISTS

(SELECT*FROMCourses

WHERENOTEXISTS

(SELECT*FROMGrade

WHEREGrade.Cno=Courses.Cno

ANDGrade.Sno=Students.Sno));

17、检索“张雨”老师讲授的课程名及选修课程的学生人数;

SELECTCname,Snum

FROMCourses,Teaching,Teachers

WHERETeaching.Tno=Teachers.Tno

ANDTeaching.Cno=Courses.CnoANDTname=’张雨’;

18、统计“讲师”职称的教师人数及平均年龄;

SELECTCOUNT(*),AVG(Sage)

FROMTeachers

WHEREPs=’讲师’;

19、查出课程成绩在80分以上的女学生的姓名、课程名和成绩;

SELECTSname,Cname,Gmark

FROMStudents,Courses,Grade

WHEREStudents.Sno=Grade.SnoANDGrade.Cno=Courses.Cno

ANDGrade.Gmark>=80ANDSsex=’女’;

20、找出学生的平均成绩和所学课程门数;

SELECTSno,AVG(Gmark),COUNT(*)

FROMGrade

GROUPBYSno;

21、找出年龄超过平均年龄的学生姓名;

SELECTSnameFROMStudents

GROUPBYSname

HAVINGSage>AVG(Sage);

22、查询哪些课程只有男生选读。

SELECTDISTINCTCnoFROMCourses

WHERE‘男’=ALL

(SELECTSsexFROMGrade,Students

WHEREGrade.Sno=Students.Sno

ANDGrade.Cno=Courses.Cno);

习题三答案

1、请使用Transact-SQL建立如下表:

表名:

雇员基本信息表;

字段名数据类型宽度精度可空性要求

NO_IDCHAR7NOTNULL设为主键

NAMECHAR10NOTNULL

SEXCHAR2NOTNULL默认值为”男”

AGEINTNOTNULL

DEPTVARCHAR50NULL

PHONEVARCHAR20NULL

NOTESVARCHAR50NULL

1、createtable雇员基本信息表

(no_idchar(7)notnull,

namechar(10)notnull,

sexchar

(2)notnull,

ageintnotnulldefault‘男’,

deptvarchar(50),

phonevarchar(20),

notesvarchar(50),

primarykey(no_id))

2、下面是一个电子商务网站购物模式,包括了三个表(主码用下划线标出)

客户表:

Client(Cno,Cname,Csex,Cage,Cclass),Cclass是客户类别

商品表:

Goods(Gno,Gname,Gpno,Gprice),Gpno是赠品号

购物表:

CG(Cno,Gno,Time,Value),Value是客户对这次购物的评分(10分制)

备注:

有的客户只登记,但尚未购买商品。

(1)查询购买了商品的客户号及姓名。

(2)查询1980年出生的客户号及姓名。

(3)购买了三种以上商品的客户号及客户姓名。

2、

(1)selectCno,Cname

fromClient

whereCnoin

(selectdistinctCno

fromCG)

(2)selectCno,Cname

fromClient

whereCage=26

(3)selectCno,Cname

fromClient

whereCnoin

(selectCno

fromCG

groupbyCno

havingcount(*)>3)

3、现有一销售表,它们结构如下:

idint(标识号)

codnochar(7)(商品编码)

codnamevarchar(30)(商品名称)

specvarchar(20)(商品规格)

pricenumeric(10,2)(价格)

sellnumint(销售数量)

deptnochar(3)(售出分店编码)

selldatedatetime(销售时间)

要求:

写出查询销售时间段在2002-2-15日到2002-4-29之间,分店编码是01的所有记录。

3、select*from销售表

whereselldatebetween‘2002-2-15’and’2002-4-29’anddeptno=01

4、设有三个关系:

学生关系S(SNO,SNAME,AGE,SEX),主码为SNO

学习关系SC(SNO,CNO,GRADE),主码为(SNO,CNO)

课程关系C(CNO,CNAME,TEACHER),主码为CNO

试用SQL语句表示下列查询语句:

检索选修课程包括ZHA老师所授课程的学生学号。

4、selectdistinctSNO

fromSC

whereCNOin

(selectCNO

fromC

whereTEACHER=‘ZHA’)

5、已知某教学管理数据库包含三个基本表:

学生基本信息表S(S#,SNAME,AGE,SEX)

选修课程成绩信息表SC(S#,C#,GRADE)

选修课程基本信息表C(C#,CNAME,TEACHER)

试用SQL查询语句表达下列对教学数据库中三个基本表S、SC、C的查询:

(1)统计有学生选修的课程门数;

(2)求选修C4课程的学生的平均年龄;

(3)求ZHANG老师所授课程的每门课程的学生平均成绩;

(4)在基本表S中插入一个学生元组(‘S9’,‘WU’,18)。

(5)把选修MATHS课不及格的成绩全改为空值。

5.

(1)SELECTCOUNT(DISTINCTC#)

FROMSC

(2)SELECTAVG(AGE)

FROMS,SC

WHEREC#=’C4’ANDS.S#=SC.S#

(3)SELECTSC.C#,CNAME,AVG(GRADE)

FROMSC,C

WHERESC.C#=C.C#ANDTEACHER=’’

GROUPBYSC.C#

(4)INSERTINTOS(S#,SNAME,AGE)

VALUES(‘S9’,’WU’,18)

(5)UPDATESCSETGRADE=NULL

WHEREGRADE<60ANDC#IN

(SELECTC#FROMCWHERECNAME=’MATHS’)

6、已知某教学管理数据库中包含四个基本表:

学生情况基本表Students(Sno,Sname,Age,Sex,Bplace)

课程情况基本表Courses(Cno,Cname,Credit)

选课情况基本表Enrolls(Sno,Cno,Grade)

教师任课情况基本表Teaching(Cno,Class,Tno,Snum)

教师情况基本表Teachers(Tno,Tname,Age,PS)

试用SQL查询语句完成下列对数据的查询要求:

(1)检索至少选修课程号为001和010的学生学号;

(2)找出各课程的平均成绩,按课程号分组,且只选择学生超过10人的课程的成绩;

(3)检索“王一平”老师讲授的课程名及选修课程的学生人数;

(4)统计“教授”职称的教师人数及平均年令。

6.

(1)SELECTSNO

FROMENROLLSX,ENROLLSY

WHEREX.SNO=Y.SNOANDX.CNO=’0001’ANDY.CNO=’0010’

(2)SELECTCNO,AVG(GRADE),STUDENTS=COUNT(*)

FROMENROLLS

GROUPBYCNO

HAVINGCOUNT(*)>=10

(3)SELECTCNAME,SNUM

FROMCOURSES,TEACHERS,TEACHING

WHERECOURSES.CNO=TEACHING.CNO

ANDTEACHERS.TNO=TEACHING.TNO

ANDTEACHERS.TNAME=’王一平’

(4)SELECTCOUNT(*),AVG(AGE)

FROMTEACHERS

WHEREPS=’教授’

7、供应商-零件-工程项目数据库由以下四个关系模式构成:

S(SNO,SNAME,STATUS,CITY)

P(PNO,PNAME,COLOR,WEIGHT,CITY)

J(JNO,JNAME,CITY)

SPJ(SNO,PNO,JNO,QTY)

供应商S,零件P和工程项目J分别由供应商号(SNO),零件号(PNO)和工程项目号(JNO)唯一标识。

供货SPJ是指由某个供应商向某个工程项目供应某些数量的某种零件。

请用SQL语言完成如下的操作:

(1)找出给北京的工程项目提供不同的零件号;

(2)将没有供货的所有工程项目从J中删除;

(3)查询提供全部零件的供应商名;

(4)查询这样的工程项目号:

供给该工程项目的零件P1的平均供应量大于供给工程J1的任何一种零件的最大供应量;

(5)一个视图,它由所有这样的工程项目(工程项目号与所在城市名称)组成:

它们由供应商S1供货且使用零件P1。

7.

(1)SELECTDISTINCTSPJ.PNO

FROMSPJ,J

WHERESPJ.JNO=J.JNOANDJ.CITY=’北京’

(2)DELETEFROMJ

WHEREJNONOTIN(SELECTJNOFROMSPJ)

(3)SELECTSNAMEFORMS

WHERENOTEXISTS(SELECT*FROMP

WHERENOTEXISTS(SELECT*FROMSPJ

WHERESNO=S.SNOANDPNO=P.PNO))

(4)SELECTDISTINCTJNOFROMSPJ

WHEREPNO=’P1’

GROUPBYJNO

HAVINGAVG(QTY)>(SELECTMAX(QTY)FROMSPJWHEREJNO=’J1’)

(5)CREATEVIEWJ_S1_P1

ASSELECTJ.JNO,J.CITYFROMSPJ,J

WHERESPJ.JNO=J.JNOANDSPJ.SNO=’S1’ANDSPJ.PNO=’P1’

8、设有学生表S(SNO,SN)(SNO为学生号,SN为姓名)和学生选修课程表SC(SNO,CNO,CN,G)(CNO为课程号,CN为课程名,G为成绩),试用SQL语言完成以下各题:

(1)建立一个视图V_SSC(SNO,SN,CNO,CN,G),并按CNO升序排序;

(2)从视图V_SSC上查询平均成线在90分以上的SN、CN和G。

8.

(1)CREATEVIEWV_SSC(SNO,SN,CNO,CN,G)

ASSELECTS.SNO,S.SN,CNO,SC.CN,SC.G

FROMS,SC

WHERES.SNO=SC.SNO

ORDERBYCNO

(2)SELECTSN,CN,G

FROMV_SSC

GROUPBYSNO

HAVINGAVG(G)>90

9、今有如下关系数据库:

S(SNO,SNAME,STATUS,CITY)

P(PNO,PN,COLOR,WEIGHT)

J(JNO,JN,CITY)

SPJ(SNO,PNO,JNO,QTY)

其中,S为供应单位,P为零件,J为工程,SPJ为工程订购零件的订单,其语义为:

某供应单位供应某种零件给某个工程,请用SQL完成下列操作。

(1)求为工程J1提供红色零件的供应商代号。

(2)求使用S1供应的零件的工程名称。

(3)求供应商与工程所在城市相同的供应商提供的零件代号。

(4)求至少有一个和工程不在同一城市的供应商提供零件的工程代号。

9.

(1)SELECTDISTINCTSPJ.SNO

FROMSPJ,P

WHEREP.PNO=SPJ.PNOANDSPJ.JNO=’J1’ANDP.COLOR=’红’

(2)SELECTJ.JN

FROMJ,SPJ

WHEREJ.JNO=SPJ.JNOANDSPJ.SNO=’S1’

(3)SELECTDISTINCTSPJ.PNO

FROMS,J,SPJ

WHERES.SNO=SPJ.SNOANDJ.JNO=SPJ.JNOANDS.CITY=J.CITY

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 育儿理论经验

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1