ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:22.76KB ,
资源ID:5767084      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5767084.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据库期末复习资料sql.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据库期末复习资料sql.docx

1、数据库期末复习资料sql对于教学数据库的三个基本表 学生 S(S#,SNAME,AGE,SEX) 学习 SC(S#,C#,GRADE) 课程 C(C#,CNAME,TEACHER) 试用SQL的查询语句表达下列查询: (1)检索LIU老师所授课程的课程号和课程名。(2)检索年龄大于23岁的男学生的学号和姓名。(3)检索至少选修LIU老师所授课程中一门课程的女学生姓名。(4)检索WANG同学不学的课程的课程号。 (5)检索至少选修两门课程的学生学号。(6)检索全部学生都选修的课程的课程号与课程名。(7)检索选修课程包含LIU老师所授课的学生学号。 设有两个基本表R(A,B,C)和S(D,E,F)

2、,试用SQL查询语句表达下列关系代数表达式: (1)A(R)(2)B=17(R) (3)RS(4)A,F(C=D(RS) 设有两个基本表R(A,B,C)和S(A,B,C)试用SQL查询语句表达下列关系代数表达式: (1)RS(2)RS(3)RS(4)A,B(R)B,C(S) 试用SQL查询语句表达下列对教学数据库中三个基本表S、SC、C的查询:学生 S(S#,SNAME,AGE,SEX) 学习 SC(S#,C#,GRADE) 课程 C(C#,CNAME,TEACHER) (1)统计有学生选修的课程门数。 (2)求选修C4课程的学生的平均年龄。 (3)求LIU老师所授课程的每门课程的学生平均成绩

3、。 (4)统计每门课程的学生选修人数(超过10人的课程才统计)。要求输出课程号和选修人数, 查询结果按人数降序排列,若人数相同,按课程号升序排列。 (5)检索学号比WANG同学大,而年龄比他小的学生姓名。 (6)检索姓名以WANG打头的所有学生的姓名和年龄。 (7)在SC中检索成绩为空值的学生学号和课程号。 (8)求年龄大于女同学平均年龄的男学生姓名和年龄。 (9)求年龄大于所有女同学年龄的男学生姓名和年龄。 试用SQL更新语句表达对教学数据库中三个基本表S、SC、C的各个更新操作:(1)往基本表S中插入一个学生元组(S9,WU,18)。(2)在基本表S中检索每一门课程成绩都大于等于80分的学

4、生学号、姓名和性别, 并把检索到的值送往另一个已存在的基本表STUDENT(S,SANME,SEX)。(3)在基本表SC中删除尚无成绩的选课元组。(4)把WANG同学的学习选课和成绩全部删去。(5)把选修MATHS课不及格的成绩全改为空值。(6)把低于总平均成绩的女同学成绩提高5%。(7)在基本表SC中修改C4课程的成绩,若成绩小于等于75分时提高5%, 若成绩大于75分时提高4%(用两个UPDATE语句实现)。 “仓库管理”关系模型有五个关系模式: 零件PART(P,PNAME,COLOR,WEIGHT) 项目PROJECT(J,JNAME,DATE) 供应商SUPPLIER(S,SNAME

5、,SADDR) 供应PP(J,P,TOTOAL) 采购PS(P,S,QUANTITY) (1)试用SQLDDL语句定义上述五个基本表,并说明主键和外键。(2)试将PROGECT、PP、PART三个基本表的自然联接定义为一个视图VIEW1,PART、PS、SUPPLIER 三个基本表的自然联接定义为一个视图VIEW2。(3)试在上述两个视图的基础上进行数据查询:1)检索上海的供应商所供应的零件的编号和名字。 2)检索项目J4所用零件的供应商编号和名字。 对于教学数据库中基本表SC,已建立下列视图: CREATEVIEWSGRADE(S,CNUM,AVGGRADE) ASSELECTS,COUNT

6、(C),AVG(GRADE) FROMSC GROUPBYS 试判断下列查询和更新是否允许执行。若允许,写出转换到基本表SC上的相应操作。 (1) SELECT* FROMSGRADE(2) SELECTS,CNUM FROMSGRADE WHEREAVGGRADE80(3) SELECTS,AVGGRADE FROMSGRADE WHERECNUM(SELECTCNUM FROMSGRADE WHERESS4)(4) UPDATESGRADE SETCNUMCNUM1 WHERESS4(5) DELETEFROMSGRADE WHERECNUM4 对于教学数据库的三个基本表 学生 S(S#,

7、SNAME,AGE,SEX) 学习 SC(S#,C#,GRADE) 课程 C(C#,CNAME,TEACHER) 试用SQL的查询语句表达下列查询: (1)检索LIU老师所授课程的课程号和课程名。 SELECT C#,CNAME FROM C WHERE TEACHER=LIU (2)检索年龄大于23岁的男学生的学号和姓名。 SELECT S#,SNAME FROM S WHERE (AGE23) AND (SEX=M) (3)检索至少选修LIU老师所授课程中一门课程的女学生姓名。 SELECT SNAME FROM S WHERE SEX=F AND S# IN (SELECT S# FRO

8、M SC WHERE C# IN (SELECT C# FROM C WHERE TEACHER=LIU) NOTICE:有多种写法,比如联接查询写法: SELECT SNAME FROM S,SC,C WHERE SEX=F AND SC.S#=S.S# AND SC.C#=C.C# AND TEACHER=LIU 但上一种写法更好一些。 (4)检索WANG同学不学的课程的课程号。 SELECT C# FROM C WHERE C# NOT IN (SELECT C# FROM SC WHERE S# IN (SELECT S# FROM S WHERE SNAME=WANG) (5)检索至

9、少选修两门课程的学生学号。 SELECT DISTINCT X.SNO FROMSC X,SC Y WHERE X.SNO=Y.SNO AND X.CNOY.CNO Notice:对表SC进行自连接,X,Y是SC的两个别名。 (6)检索全部学生都选修的课程的课程号与课程名。 SELECT C#,CNAME FROM C WHERE NOT EXISTS (SELECT * FROM S WHERE S# NOT IN (SELECT * FROM SC WHERE SC.C#=C.C#) 要从语义上分解:(1)选择课程的课程号与课程名,不存在不选这门课的同学。 其中,“不选这门课的同学”可以表

10、示为: SELECT * FROM S WHERE S# NOT IN (SELECT * FROM SC WHERE SC.C#=C.C#) 或者 SELECT * FROM S WHERE NOT EXISTS (SELECT * FROM SC WHERE S.S#=C.S# AND SC.C#=C.C# ) (7)检索选修课程包含LIU老师所授课的学生学号。 SELECT DISTINCT S# FROM SC WHERE C# IN (SELECT C# FROM C WHERE TEACHER=LIU) 3.3设有两个基本表R(A,B,C)和S(D,E,F),试用SQL查询语句表达

11、下列关系代数表达式: (1)A(R)(2)B=17(R) (3)RS(4)A,F(C=D(RS) (1)SELECT A FROM R (2)SELECT * FROM R WHERE B=17 (3)SELECT A,B,C,D,E,F FROM R,S (4)SELECT A,F FROM R,S WHERE R.C=S.D 3.43.4设有两个基本表R(A,B,C)和S(A,B,C)试用SQL查询语句表达下列关系代数表达式: (1)RS(2)RS(3)RS(4)A,B(R)B,C(S) (1)SELECT A,B,C FROM R UNION SELECT A,B,C FROM S (2

12、)SELECT A,B,C FROM R INTERSECT SELECT A,B,C FROM S (3)SELECT A,B,C FROM R WHERE NOT EXISTS (SELECT A,B,C FROM S WHERE R.A=S.A AND R.B=S.B AND R.C=S.C) (4)SELECT R.A,R.B,S.C FROM R,S WHERE R.B=S.B 3.5试叙述SQL语言的关系代数特点和元组演算特点。 (P61-62) 3.6试用SQL查询语句表达下列对教学数据库中三个基本表S、SC、C的查询:(1)统计有学生选修的课程门数。 SELECT COUNT(

13、DISTINCT C#) FROM SC (2)求选修C4课程的学生的平均年龄。 SELECT AVG(AGE) FROM S WHERE S# IN (SELECT S# FROM SC WHERE C#=C4) 或者, SELECT AVG(AGE) FROM S,SC WHERE S.S#=SC.S# AND C#=004 (3)求LIU老师所授课程的每门课程的学生平均成绩。 SELECT CNAME,AVG(GRADE) FROM SC ,C WHERE SC.C#=C.C# AND TEACHER=LIU GROUP BY C# (4)统计每门课程的学生选修人数(超过10人的课程才统

14、计)。要求输出课程号和选修人数, 查询结果按人数降序排列,若人数相同,按课程号升序排列。 SELECT DISTINCT C#,COUNT(S#) FROM SC GROUP BY C# HAVING COUNT(S#)10 ORDER BY 2 DESC, C# ASC (5)检索学号比WANG同学大,而年龄比他小的学生姓名。 SELECT X.SNAME FROM S AS X, S AS Y WHERE Y.SNAME=WANG AND X.S#Y.S# AND X.AGE(SELECT AVG(AGE) FROM S AS Y WHERE Y.SEX=女) (9)求年龄大于所有女同学年

15、龄的男学生姓名和年龄。 SELECT SNAME,AGE FROM S AS X WHERE X.SEX=男 AND X.AGEALL (SELECT AGE FROM S AS Y WHERE Y.SEX=女) 3.7试用SQL更新语句表达对教学数据库中三个基本表S、SC、C的各个更新操作:(1)往基本表S中插入一个学生元组(S9,WU,18)。 INSERT INTO S(S#,SNAME,AGE) VALUES(59,WU,18) (2)在基本表S中检索每一门课程成绩都大于等于80分的学生学号、姓名和性别, 并把检索到的值送往另一个已存在的基本表STUDENT(S,SANME,SEX)。

16、 INSERT INTO STUDENT(S#,SNAME,SEX) SELECT S#,SNAME,SEX FROM S WHERE NOT EXISTS (SELECT * FROM SC WHERE GRADE80 AND S.S#=SC.S#) (3)在基本表SC中删除尚无成绩的选课元组。 DELETE FROM SC WHERE GRADE IS NULL (4)把WANG同学的学习选课和成绩全部删去。 DELETE FROM SC WHERE S# IN (SELECT S# FROM S WHERE SNAME=WANG) (5)把选修MATHS课不及格的成绩全改为空值。 UPD

17、ATE SC SET GRADE=NULL WHERE GRADE60 AND C# IN (SELECT C# FROM C WHERE CNAME=MATHS) (6)把低于总平均成绩的女同学成绩提高5%。 UPDATE SC SET GRADE=GRADE*1.05 WHERE GRADE(SELECT AVG(GRADE) FROM SC) AND S# IN (SELECT S# FROM S WHERE SEX=F) (7)在基本表SC中修改C4课程的成绩,若成绩小于等于75分时提高5%, 若成绩大于75分时提高4%(用两个UPDATE语句实现)。 UPDATE SC SET GR

18、ADE=GRADE*1.05 WHERE C#=C4 AND GRADE75 3.8在第1章例1.4中提到“仓库管理”关系模型有五个关系模式: 零件PART(P,PNAME,COLOR,WEIGHT) 项目PROJECT(J,JNAME,DATE) 供应商SUPPLIER(S,SNAME,SADDR) 供应PP(J,P,TOTOAL) 采购PS(P,S,QUANTITY) (1)试用SQLDDL语句定义上述五个基本表,并说明主键和外键。 CREATE TABLE PART (P# CHAR(4) NOT NULL,PNAME CHAR(12) NOT NULL, COLOR CHAR(10),

19、WEIGHT REAL, PRIMARY KEY(P#) CREATE TABLE PROJECT (J# CHAR(4) NOT NULL,JNAME CHAR(12) NOT NULL, DATE DATE, PRIMARY KEY(J#) CREATE TABLE SUPLIER (S# CHAR(4) NOT NULL,SNAME CHAR(12),SADDR VARCHAR(20), PRIMARY KEY(S#) CREATE TABLE P_P (J# CHAR(4),P# CHAR(4),TOTAL INTEGER, PRIMARY KEY(J#,P#), FOREIGN KE

20、Y(J#) REFERENCE PROJECT(J#), FOREIGN KEY(P#) REFERENCE PART(P#) CREATE TABLE P_S (P# CHAR(4),S# CHAR(4),QUANTITY INTEGER, PRIMARY KEY(P#,S#), FOREIGN KEY(P#) REFERENCE PART(P#), FOREIGN KEY(S#) REFERENCE SUPLIER(S#) (2)试将PROGECT、PP、PART三个基本表的自然联接定义为一个视图VIEW1,PART、PS、SUPPLIER 三个基本表的自然联接定义为一个视图VIEW2。

21、CREATE VIEW VIEW1(J#,JNAME,DATE,P#,PNAME,COLOR,WEIGHT,TOTAL) AS SELECT PROJECT.J#,JNAME,DATE,PART.P#,PNAME,COLOR,WEIGHT,TOTAL FROM PROJECT,PART,P_P WHERE PART.P#=P_P.P# AND P_P.J#=PROJECT.J# CREATE VIEW VIEW2(P#,PNAME,COLOR,WEIGHT,S#,SNAME,SADDR,QUANTITY) AS SELECT PART.P#,PNAME,COLOR,WEIGHT,SUPPLIE

22、R.S#,SNAME,SADDR,QUANTITY FROM PART,P_S,SUPPLIER WHERE PART.P#=P_S.P# AND P_S.S#=SUPPLIER.S# (3)试在上述两个视图的基础上进行数据查询:1)检索上海的供应商所供应的零件的编号和名字。 SELECT P#,PNAME FROM VIEW2 WHERE SADDR=SHANGHAI 2)检索项目J4所用零件的供应商编号和名字。 SELECT S#,SNAME FROM VIEW2 WHERE P# IN(SELECT P# FROM VIEW1 WHERE J#=J4) 3.9对于教学数据库中基本表SC,

23、已建立下列视图: CREATEVIEWSGRADE(S,CNUM,AVGGRADE) ASSELECTS,COUNT(C),AVG(GRADE) FROMSC GROUPBYS 试判断下列查询和更新是否允许执行。若允许,写出转换到基本表SC上的相应操作。 (1) SELECT* FROMSGRADE 允许 SELECT S#,COUNT(C#),AVG(GRADE) FROM SC GROUP BY S# (2) SELECTS,CNUM FROMSGRADE WHEREAVGGRADE80 允许 SELECT S#,COUNT(C#) FROM SC WHERE AVG(GRADE)80 (

24、3) SELECTS,AVGGRADE FROMSGRADE WHERECNUM(SELECTCNUM FROMSGRADE WHERESS4) 允许 SELECT S#,AVG(GRADE) FROM SC AS X WHERE COUNT(X.C#)(SELECT COUNT(Y.C#) FROM SC AS Y WHERE Y.S#=S4) GROUP BY S# (4) UPDATESGRADE SETCNUMCNUM1 WHERESS4 不允许 (5) DELETEFROMSGRADE WHERECNUM4 不允许 3.10预处理方式对于嵌入式SQL的实现有什么重要意义? 预处理方式是先用预处理程序对源程序进行扫描,识别出SQL语句,并处理成宿主语言的函数调用形式; 然后再用宿主语言的编译程序把源程序编译成目标程序。这样,不用扩充宿主语言的编译程序, 就能处理SQL语句。 3.11 在宿主语言的程序中使用SQL语句有哪些规定?在宿主语言的程序中使用SLQ语句有以下规定: (1)在程序中要区分SQL语句与宿主语言语句 (2)允许嵌入的SQL语句引用宿主语言的程序变量(称为共享变量),但有两条规定: 1)引用时,这些

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

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