网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > SQL语法 > 正文

数据库期末复习资料-sql

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

【网学网提醒】:以下是网学会员为您推荐的数据库期末复习资料-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),试用SQL查询语句表达下列关系代数表达式:
    (1)πA(R)(2)σB='17'(R)(3)R×S(4))πA,F(σC=D(R×S))
    设有两个基本表R(A,B,C)和S(A,B,C)试用SQL查询语句表达下列关系代数表达式:
    (1)R∪S(2)R∩S(3)R-S(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老师所授课程的每门课程的学生平均成绩。
    (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)试用SQLDDL语句定义上述五个基本表,并说明主键和外键。(2)试将PROGECT、P_P、PART三个基本表的自然联接定义为一个视图VIEW1,PART、P_S、SUPPLIER三个基本表的自然联接定义为一个视图VIEW2。(3)试在上述两个视图的基础上进行数据查询:1)检索上海的供应商所供应的零件的编号和名字。2)检索项目J4所用零件的供应商编号和名字。对于教学数据库中基本表SC,已建立下列视图:
    CREATEVIEWS_GRADE(S#,C_NUM,AVG_GRADE)
    ASSELECTS#,COUNT(C#),AVG(GRADE)
    FROMSC
    GROUPBYS#
    试判断下列查询和更新是否允许执行。若允许,写出转换到基本表SC上的相应操作。
    (1)SELECT*
    FROMS_GRADE
    (2)SELECTS#,C_NUM
    FROMS_GRADE
    WHEREAVG_GRADE>80
    (3)SELECTS#,AVG_GRADE
    FROMS_GRADE
    WHEREC_NUM>(SELECTC_NUM
    FROMS_GRADE
    WHERES#=‘S4’)
    (4)UPDATES_GRADE
    SETC_NUM=C_NUM+1
    WHERES#=‘S4’
    (5)DELETEFROMS_GRADE
    WHEREC_NUM>4
    对于教学数据库的三个基本表学生S(S#,SNAME,AGE,SEX)学习SC(S#,C#,GRADE)课程C(C#,CNAME,TEACHER)
    试用SQL的查询语句表达下列查询:
    (1)检索LIU老师所授课程的课程号和课程名。SELECTC#,CNAMEFROMCWHERETEACHER=?LIU?
    (2)检索年龄大于23岁的男学生的和。SELECTS#,SNAMEFROMSWHERE(AGE>23)AND(SEX=?M?)
    (3)检索至少选修LIU老师所授课程中一门课程的女学生。SELECTSNAMEFROMSWHERESEX=?F?ANDS#IN(SELECTS#FROMSCWHEREC#IN(SELECTC#FROMCWHERETEACHER=?LIU?)NOTICE:有多种写法,比如联接查询写法:
    SELECTSNAMEFROMS,SC,CWHERESEX=?F?ANDSC.S#=S.S#ANDSC.C#=C.C#ANDTEACHER='LIU'但上一种写法更好一些。(4)检索WANG同学不学的课程的课程号。SELECTC#FROMCWHEREC#NOTIN(SELECTC#FROMSCWHERES#IN(SELECTS#FROMSWHERESNAME='WANG'))
    (5)检索至少选修两门课程的学生。SELECTDISTINCTX.SNOFROMSCX,SCYWHEREX.SNO=Y.SNOANDX.CNO<>Y.CNONotice:对表SC进行自连接,X,Y是SC的两个别名。
    (6)检索全部学生都选修的课程的课程号与课程名。SELECTC#,CNAMEFROMCWHERENOTEXISTS(SELECT*FROMSWHERES#NOTIN(SELECT*FROMSCWHERESC.C#=C.C#))要从语义上分解:(1)选择课程的课程号与课程名,不存在不选这门课的同学。其中,“不选这门课的同学”可以表示为:SELECT*FROMSWHERES#NOTIN
    者或
    SELECT*FROMSWHERENOT
    (SELECT*FROMSCWHERESC.C#=C.C#)
    EXISTS(SELECT*FROMSCWHERES.S#=C.S#ANDSC.C#=C.C#)
    (7)检索选修课程包含LIU老师所授课的学生。SELECTDISTINCTS#FROMSCWHEREC#IN(SELECTC#FROMCWHERETEACHER='LIU'))
    3.3设有两个基本表R(A,B,C)和S(D,E,F),试用SQL查询语句表达下列关系代数表达式:(1)πA(R)
    (1)SELECTAFROMR(2)SELECT*FROMRWHEREB='17'(3)SELECTA,B,C,D,E,FFROMR,S(4)SELECTA,FFROMR,SWHERER.C=S.D
    (2)σB='17'(R)(3)R×S(4))πA,F(σC=D(R×S))
    3.43.4设有两个基本表R(A,B,C)和S(A,B,C)试用SQL查询语句表达下列关系代数表达式:(1)R∪S(2)R∩S(3)R-S(4)πA,B(R)πB,C(S)
    (1)SELECTA,B,CFROMRUNIONSELECTA,B,CFROMS
    (2)SELECTA,B,CFROMR
    INTERSECTSELECTA,B,CFROMS
    (3)SELECTA,B,CFROMRWHERENOTEXISTS(SELECTA,B,CFROMSWHERER.A=S.AANDR.B=S.BANDR.C=S.C)
    (4)SELECTR.A,R.B,S.CFROMR,SWHERER.B=S.B
    3.5试叙述SQL语言的关系代数特点和元组演算特点。
    (P61-62)
    3.6试用SQL查询语句表达下列对教学数据库中三个基本表S、SC、C的查询:
    (1)统计有学生选修的课程门数。SELECTCOUNT(DISTINCTC#)FROMSC
    (2)求选修C4课程的学生的平均年龄。SELECTAVG(AGE)FROMSWHERES#IN(SELECTS#FROMSCWHEREC#='C4')或者,SELECTAVG(AGE)FROMS,SCWHERES.S#=SC.S#ANDC#='004'
    (3)求LIU老师所授课程的每门课程的学生平均成绩。SELECTCNAME,AVG(GRADE)
    FROMSC,CWHERESC.C#=C.C#ANDTEACHER='LIU'GROUPBYC#
    (4)统计每门课程的学生选修人数(超过10人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。SELECTDISTINCTC#,COUNT(S#)FROMSCGROUPBYC#HAVINGCOUNT(S#)>10ORDERBY2DESC,C#ASC
    (5)检索比WANG同学大,而年龄比他小的学生。SELECTX.SNAMEFROMSASX,SASYWHEREY.SNAME='WANG'ANDX.S#>Y.S#ANDX.AGE    (6)检索以WANG打头的所有学生的和年龄。SELECTSNAME,AGEFROMSWHERESNAMELIKE'WANG%'
    (7)在SC中检索成绩为空值的学生和课程号。SELECTS#,C#FROMSCWHEREGRADEISNULL
    (8)求年龄大于女同学平均年龄的男学生和年龄。SELECTSNAME,AGEFROMSASXWHEREX.SEX='男'ANDX.AGE>(SELECTAVG(AGE)FROMSASYWHEREY.SEX='女')
    (9)求年龄大于所有女同学年龄的男学生和年龄。SELECTSNAME,AGEFROMSASX
    WHEREX.SEX='男'ANDX.AGE>ALL(SELECTAGEFROMSASYWHEREY.SEX='女')
    3.7试用SQL更新语句表达对教学数据库中三个基本表S、SC、C的各个更新操作:
    (1)往基本表S中插入一个学生元组(?S9?,?WU?,18)。INSERTINTOS(S#,SNAME,AGE)VALUES('59','WU',18)(2)在基本表S中检索每一门课程成绩都大于等于80分的学生、和性别,并把检索到的值送往另一个已存在的基本表STUDENT(S#,SANME,SEX)。INSERTINTOSTUDENT(S#,SNAME,SEX)SELECTS#,SNAME,SEXFROMSWHERENOTEXISTS
    (SELECT*FROMSCWHEREGRADE<80ANDS.S#=SC.S#)
    (3)在基本表SC中删除尚无成绩的选课元组。DELETEFROMSCWHEREGRADEISNULL
    (4)把WANG同学的学习选课和成绩全部删去。DELETEFROMSCWHERES#IN(SELECTS#FROMSWHERESNAME='WANG')
    (5)把选修MATHS课不及格的成绩全改为空值。UPDATESCSETGRADE=NULLWHEREGRADE<60ANDC#IN(SELECTC#FROMCWHERECNAME='MATHS')
    (6)把低于总平均成绩的女同学成绩提高5%。UPDATESCSETGRADE=GRADE*1.05
    WHEREGRADE<(SELECTAVG(GRADE)FROMSC)ANDS#IN(SELECTS#FROMSWHERESEX='F')
    (7)在基本表SC中修改C4课程的成绩,若成绩小于等于75分时提高5%,若成绩大于75分时提高4%(用两个UPDATE语句实现)。UPDATESCSETGRADE=GRADE*1.05WHEREC#='C4'ANDGRADE<=75UPDATESCSETGRADE=GRADE*1.04WHEREC#='C4'ANDGRADE>75
    3.8在第1章例1.4中提到“仓库管理”关系模型有五个关系模式:零件项目供应商供应采购PART(P#,PNAME,COLOR,WEIGHT)PROJECT(J#,JNAME,DATE)SUPPLIER(S#,SNAME,SADDR)P_P(J#,P#,TOTOAL)P_S(P#,S#,QUANTITY)
    (1)试用SQLDDL语句定义上述五个基本表,并说明主键和外键。
    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#))
    (2)试将PROGECT、P_P、PART三个基本表的自然联接定义为一个视图VIEW1,PART、P_S、SUPPLIER三个基本表的自然联接定义为一个视图VIEW2。CREATEVIEWVIEW1(J#,JNAME,DATE,P#,PNAME,COLOR,WEIGHT,TOTAL)ASSELECTPROJECT.J#,JNAME,DATE,PART.P#,PNAME,COLOR,WEIGHT,TOTALFROMPROJECT,PART,P_PWHEREPART.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,QUANTITYFROMPART,P_S,SUPPLIERWHEREPART.P#=P_S.P#ANDP_S.S#=SUPPLIER.S#
    (3)试在上述两个视图的基础上进行数据查询:
    1)检索上海的供应商所供应的零件的编号和名字。SELECTP#,PNAMEFROMVIEW2WHERESADDR='SHANGHAI'
    2)检索项目J4所用零件的供应商编号和名字。SELECTS#,SNAMEFROMVIEW2WHEREP#IN(SELECTP#FROMVIEW1WHEREJ#='J4')
    3.9对于教学数据库中基本表SC,已建立下列视图:CREATEVIEWS_GRADE(S#,C_NUM,AVG_GRADE)
    ASSELECTS#,COUNT(C#),AVG(GRADE)FROMSCGROUPBYS#
    试判断下列查询和更新是否允许执行。若允许,写出转换到基本表SC上的相应操作。(1)SELECT*
    FROMS_GRADE允许SELECTS#,COUNT(C#),AVG(GRADE)FROMSCGROUPBYS#
    (2)SELECTS#,C_NUM
    FROMS_GRADEWHEREAVG_GRADE>80允许SELECTS#,COUNT(C#)FROMSCWHEREAVG(GRADE)>80
    (3)SELECTS#,AVG_GRADE
    FROMS_GRADEWHEREC_NUM>(SELECTC_NUM
    FROMS_GRADEWHERES#=?S4?)允许SELECTS#,AVG(GRADE)FROMSCASXWHERECOUNT(X.C#)>(SELECTCOUNT(Y.C#)FROMSCASYWHEREY.S#='S4')GROUPBYS#
    (4)UPDATES_GRADESETC_NUM=C_NUM+1
    WHERES#=?S4?不允许
    (5)DELETEFROMS_GRADE
    WHEREC_NUM>4不允许
    3.10预处理方式对于嵌入式SQL的实现有什么重要意义?
    预处理方式是先用预处理程序对源程序进行扫描,识别出SQL语句,并处理成宿主语言的函数调用形式;然后再用宿主语言的编译程序把源程序编译成目标程序。这样,不用扩充宿主语言的编译程序,就能处理SQL语句。
    3.11在宿主语言的程序中使用SQL语句有哪些规定?
    在宿主语言的程序中使用SLQ语句有以下规定:(1)在程序中要区分SQL语句与宿主语言语句(2)允许嵌入的SQL语句引用宿主语言的程序变量(称为共享变量),但有两条规定:1)引用时,这些变量前必须加“:”作为前缀标识,以示与数据库中变量有区别。2)这些变量由宿主语言的程序定义,并用SQL的DECLARE语句说明。(3)SQL的集合处理方式与宿主语言单记录处理方式之间要协调。需要采用游标机制,把集合操作转换成单记录处理方式。
    3.12SQL的集合处理方式与宿主语言单记录处理方式之间如何协调?
    由于SQL语句处理的是记录集合,而宿主语言语句一次只能处理一个记录,因此需要用游标(cousor)机制,把集合操作转换成单记录处理方式。
    2.13嵌入式SQL语句何时不必涉及到游标?何时必须涉及到游标?
    (1)INSERT、DELETE、UPDATE语句,查询结果肯定是单元组时的SELECT语句,都可直接嵌入在主程序中使用,不必涉及到游标。(2)当SELECT语句查询结果是多个元组时,此时宿主语言程序无法使用,一定要用游标机制把多个元组一次一个地传送给宿主语言处理。
    这个跟文章无关呵呵
    电动葫芦:
    
  • 上一篇资讯: 斯维尔技巧班讲义
  • 下一篇资讯: 数据库常用SQL语法
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师