数据库期末复习资料sqlWord格式.docx
- 文档编号:18754145
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:13
- 大小:22.76KB
数据库期末复习资料sqlWord格式.docx
《数据库期末复习资料sqlWord格式.docx》由会员分享,可在线阅读,更多相关《数据库期末复习资料sqlWord格式.docx(13页珍藏版)》请在冰豆网上搜索。
(4)统计每门课程的学生选修人数(超过10人的课程才统计)。
要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。
(5)检索学号比WANG同学大,而年龄比他小的学生姓名。
(6)检索姓名以WANG打头的所有学生的姓名和年龄。
(7)在SC中检索成绩为空值的学生学号和课程号。
(8)求年龄大于女同学平均年龄的男学生姓名和年龄。
(9)求年龄大于所有女同学年龄的男学生姓名和年龄。
试用SQL更新语句表达对教学数据库中三个基本表S、SC、C的各个更新操作:
(1)往基本表S中插入一个学生元组(‘S9’,‘WU’,18)。
(2)在基本表S中检索每一门课程成绩都大于等于80分的学生学号、姓名和性别,并把检索到的值送往另一个已存在的基本表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,SADDR)
供应 P_P(J#,P#,TOTOAL)
采购 P_S(P#,S#,QUANTITY)
(1)试用SQL DDL语句定义上述五个基本表,并说明主键和外键。
(2)试将PROGECT、P_P、PART三个基本表的自然联接定义为一个视图VIEW1,PART、P_S、SUPPLIER三个基本表的自然联接定义为一个视图VIEW2。
(3)试在上述两个视图的基础上进行数据查询:
1)检索上海的供应商所供应的零件的编号和名字。
2)检索项目J4所用零件的供应商编号和名字。
对于教学数据库中基本表SC,已建立下列视图:
CREATE VIEW S_GRADE(S#,C_NUM,AVG_GRADE)
AS SELECT S#,COUNT(C#),AVG(GRADE)
FROM SC
GROUP BY S#
试判断下列查询和更新是否允许执行。
若允许,写出转换到基本表SC上的相应操作。
(1)SELECT *
FROM S_GRADE
(2)SELECT S#,C_NUM
FROM S_GRADE
WHERE AVG_GRADE>80
(3)SELECT S#,AVG_GRADE
FROM S_GRADE
WHERE C_NUM>(SELECT C_NUM
FROM S_GRADE
WHERE S#=‘S4’)
(4)UPDATE S_GRADE
SET C_NUM=C_NUM+1
WHERE S#=‘S4’
(5)DELETE FROM S_GRADE
WHERE C_NUM>4
SELECTC#,CNAME
FROMC
WHERETEACHER=‘LIU’
SELECTS#,SNAME
FROMS
WHERE(AGE>
23)AND(SEX=‘M’)
SELECTSNAME
WHERESEX=‘F’ANDS#IN
(SELECTS#
FROMSC
WHEREC#IN
(SELECTC#
FROMC
WHERETEACHER=‘LIU’)
NOTICE:
有多种写法,比如联接查询写法:
FROMS,SC,C
WHERESEX=‘F’ANDSC.S#=S.S#
ANDSC.C#=C.C#
ANDTEACHER='
LIU'
但上一种写法更好一些。
SELECTC#
WHEREC#NOTIN
(SELECTC#
WHERES#IN
(SELECTS#
FROMS
WHERESNAME='
WANG'
))
SELECTDISTINCTX.SNO
FROM SCX,SCY
WHEREX.SNO=Y.SNOANDX.CNO<
>
Y.CNO
Notice:
对表SC进行自连接,X,Y是SC的两个别名。
SELECTC#,CNAME
WHERENOTEXISTS
(SELECT*
FROMS
WHERES#NOTIN
(SELECT*
FROMSC
WHERE
SC.C#=C.C#))
要从语义上分解:
(1)选择课程的课程号与课程名,不存在不选这门课的同学。
其中,“不选这门课的同学”可以表示为:
SELECT*
FROM
S
WHERE
S#NOTIN
(SELECT
*
FROMSC
SC.C#=C.C#)
或者
NOTEXISTS
WHERES.S#=C.S#AND
SC.C#=C.C#)
SELECTDISTINCTS#
WHERETEACHER='
))
3.3 设有两个基本表R(A,B,C)和S(D,E,F),试用SQL查询语句表达下列关系代数表达式:
(1)SELECTAFROMR
(2)SELECT*FROMRWHEREB='
(3)SELECTA,B,C,D,E,FFROMR,S
(4)SELECTA,FFROMR,SWHERER.C=S.D
3.4 3.4 设有两个基本表R(A,B,C)和S(A,B,C)试用SQL查询语句表达下列关系代数表达式:
(1)SELECTA,B,C
FROMR
UNION
SELECTA,B,C
(2)SELECTA,B,C
INTERSECT
(3)SELECTA,B,C
WHERENOTEXISTS
(SELECTA,B,C
FROMS
WHERER.A=S.AANDR.B=S.BANDR.C=S.C)
(4)SELECTR.A,R.B,S.C
FROMR,S
WHERER.B=S.B
3.5 试叙述SQL语言的关系代数特点和元组演算特点。
(P61-62)
3.6 试用SQL查询语句表达下列对教学数据库中三个基本表S、SC、C的查询:
SELECTCOUNT(DISTINCTC#)FROMSC
SELECTAVG(AGE)
WHERES#IN
WHEREC#='
C4'
)
或者,
FROMS,SC
WHERES.S#=SC.S#ANDC#='
004'
SELECTCNAME,AVG(GRADE)
FROMSC,C
WHERESC.C#=C.C#ANDTEACHER='
GROUPBYC#
SELECTDISTINCTC#,COUNT(S#)
FROMSC
GROUPBYC#
HAVINGCOUNT(S#)>
10
ORDERBY2DESC,C#ASC
SELECTX.SNAME
FROMSASX,SASY
WHEREY.SNAME='
ANDX.S#>
Y.S#ANDX.AGE<
Y.AGE
SELECTSNAME,AGE
WHERESNAMELIKE'
WANG%'
SELECTS#,C#
WHEREGRADEISNULL
FROMSASX
WHERE X.SEX='
男'
ANDX.AGE>
(SELECTAVG(AGE)FROMSASYWHEREY.SEX='
女'
WHEREX.SEX='
ALL(SELECTAGEFROMSASYWHEREY.SEX='
3.7 试用SQL更新语句表达对教学数据库中三个基本表S、SC、C的各个更新操作:
INSERTINTOS(S#,SNAME,AGE)VALUES('
59'
'
WU'
18)
INSERTINTOSTUDENT(S#,SNAME,SEX)
SELECTS#,SNAME,SEX
FROMSWHERE NOTEXISTS
(SELECT*FROMSCWHERE
GRADE<
80ANDS.S#=SC.S#)
DELETEFROMSC
WHEREGRADEISNULL
UPDATESC
SETGRADE=NULL
WHEREGRADE<
60ANDC#IN
WHERECNAME='
MATHS'
SETGRADE=GRADE*1.05
(SELECTAVG(GRADE)FROMSC)ANDS#IN(SELECTS#FROMSWHERESEX='
F'
SETGRADE=GRADE*1.05
ANDGRADE<
=75
SETGRADE=GRADE*1.04
ANDGRADE>
75
3.8 在第1章例1.4中提到“仓库管理”关系模型有五个关系模式:
CREATETABLEPART
(P#CHAR(4)NOTNULL,PNAMECHAR(12)NOTNULL,
COLORCHAR(10),WEIGHTREAL,
PRIMARYKEY(P#))
CREATETABLEPROJECT
(J#CHAR(4)NOTNULL,JNAMECHAR(12)NOTNULL,
DATEDATE,
PRIMARYKEY(J#))
CREATETABLESUPLIER
(S#CHAR(4)NOTNULL,SNAMECHAR(12),SADDRVARCHAR(20),
PRIMARYKEY(S#))
CREATETABLEP_P
(J#CHAR(4),P#CHAR(4),TOTALINTEGER,
PRIMARYKEY(J#,P#),
FOREIGNKEY(J#)REFERENCEPROJECT(J#),
FOREIGNKEY(P#)REFERENCEPART(P#))
CREATETABLEP_S
(P#CHAR(4),S#CHAR(4),QUANTITYINTEGER,
PRIMARYKEY(P#,S#),
FOREIGNKEY(P#)REFERENCEPART(P#),
FOREIGNKEY(S#)REFERENCESUPLIER(S#))
CREATEVIEWVIEW1(J#,JNAME,DATE,P#,PNAME,COLOR,WEIGHT,TOTAL)
ASSELECTPROJECT.J#,JNAME,DATE,PART.P#,PNAME,COLOR,WEIGHT,TOTAL
FROMPROJECT,PART,P_P
WHEREPART.P#=P_P.P#ANDP_P.J#=PROJECT.J#
CREATEVIEWVIEW2(P#,PNAME,COLOR,WEIGHT,S#,SNAME,SADDR,QUANTITY)
ASSELECTPART.P#,PNAME,COLOR,WEIGHT,SUPPLIER.S#,SNAME,SADDR,QUANTITY
FROMPART,P_S,SUPPLIER
WHEREPART.P#=P_S.P#ANDP_S.S#=SUPPLIER.S#
1)检索上海的供应商所供应的零件的编号和名字。
SELECTP#,PNAMEFROMVIEW2WHERESADDR='
SHANGHAI'
2)检索项目J4所用零件的供应商编号和名字。
SELECTS#,SNAMEFROMVIEW2WHEREP#IN(SELECTP#FROMVIEW1WHEREJ#='
J4'
3.9 对于教学数据库中基本表SC,已建立下列视图:
允许
SELECTS#,COUNT(C#),AVG(GRADE)FROMSCGROUPBYS#
允许
SELECTS#,COUNT(C#)FROMSCWHEREAVG(GRADE)>
80
SELECTS#,AVG(GRADE)
FROMSCASX
WHERECOUNT(X.C#)>
(SELECTCOUNT(Y.C#)FROMSCASYWHEREY.S#='
S4'
GROUPBYS#
不允许
3.10 预处理方式对于嵌入式SQL的实现有什么重要意义?
预处理方式是先用预处理程序对源程序进行扫描,识别出SQL语句,并处理成宿主语言的函数调用形式;
然后再用宿主语言的编译程序把源程序编译成目标程序。
这样,不用扩充宿主语言的编译程序,就能处理SQL语句。
3.11在宿主语言的程序中使用SQL语句有哪些规定?
在宿主语言的程序中使用SLQ语句有以下规定:
(1)在程序中要区分SQL语句与宿主语言语句
(2)允许嵌入的SQL语句引用宿主语言的程序变量(称为共享变量),但有两条规定:
1)引用时,这些
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 期末 复习资料 sql