关系数据库语言SQL习题A_第1页
关系数据库语言SQL习题A_第2页
关系数据库语言SQL习题A_第3页
关系数据库语言SQL习题A_第4页
关系数据库语言SQL习题A_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、关系数据库语言SQL习题一,选择题1,下面关于SQL语言的叙述中,哪一条是错误的( .A.SQL既可作为联机交互环境中的查询语言又可嵌入到主语言中B.SQL没有数据控制功能C.使用SQL用户只能定义索引而不能引用索引D.使用SQL用户可以定义和检索视图2,SQL语言是( A.高级语言B.编程语言C.结构化查询语言D.宿主语言3,在学生数据库中,用SQL语句列出的所有女生的姓名,应该对学生关系进行( 操作.A.选择B.连接C.投影D.选择和投影4,NULL是指( A.0B.空格C.无任何值D.空字符串6,用( 命令可建立唯一索引A.CREATE TABLEB.CREATE CLUSTERC.CR

2、EATE INDEXD.CREATE UNIQUE INDEX二,填空题2,在SQL查询中,WHERE子句的功能是 .3,视图是一个虚表,它是从的表.4,SQL语言的数据操纵功能包括, , ,和,6,在SELECT语句中,HA VING子句必须跟在子句后面. 2,对于教学数据库的三个基本表学生S(S#,SNAME,AGE,SEX学习SC(S#,C#,GRADE课程C(C#,CNAME,TEACHER试用SQL的查询语句表达下列查询:(1在SC表中根据成绩建索引.(1检索LIU老师所授课程的课程号和课程名.(2检索年龄大于23岁的男学生的学号和姓名.(3检索选课人数大于20人的课程号.(1统计有

3、学生选修的课程门数.(2求选修C4课程的学生的平均年龄.(3求LIU老师所授课程的每门课程的学生平均成绩.( 4检索女生人数大于50人的系.(5检索至少选修两门课程(不及格的课程不能含在内的学生学号.(6求LIU老师所授课程的每门课程的学生平均成绩,按成绩的降序排序.(7统计每门课程的学生选修人数(超过10人的课程才统计.要求输出课程号和选修人数, 查询结果按人数降序排列,若人数相同,按课程号升序排列.4, 试用SQL查询语句表达下列对教学数据库中三个基本表S,SC,C的查询:(1统计有学生选修的课程门数.(2求选修C4课程的学生的平均年龄.(3求LIU老师所授课程的每门课程的学生平均成绩.(

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

5、另一个已存在的基本表STUDENT(S#,SANME,SEX.(3在基本表SC中删除尚无成绩的选课元组.(4把WANG同学的学习选课和成绩全部删去(5把选修MATHS课不及格的成绩全改为空值.(6把低于总平均成绩的女同学成绩提高5%.(7在基本表SC中修改C4课程的成绩,若成绩小于等于75分时提高5%, 若成绩大于75分时提高4%(用两个UPDATE语句实现.6, 在宿主语言的程序中使用SQL语句有哪些规定7,嵌入式SQL语句何时不必涉及到游标何时必须涉及到游标答案:一,1,B 2,C 3,D 4,C 5,B 6,D二,1,嵌入式交互式2,选择3,基本表导出的表4,数据查询数据更新数据插入数据

6、删除5,视图或部分基本表基本表存储文件6,GROUP BY三,1,名词解释SQL模式:SQL模式是表和授权的静态定义.一个SQL模式定义为基本表的集合. 一个由模式名和模式拥有者的用户名或账号来确定,并包含模式中每一个元素(基本表,视图,索引等的定义.SQL数据库:SQL(Structured Query Language,即'结构式查询语言',采用英语单词表示和结构式的语法规则. 一个SQL数据库是表的汇集,它用一个或多个SQL模式定义.基本表:在SQL中,把传统的关系模型中的关系模式称为基本表(Base Table. 基本表是实际存储在数据库中的表,对应一个关系.视图:在S

7、QL中,把传统的关系模型中的子模式称为视图(View,视图是从若干基本表和(或其他视图构造出来的表. 相关子查询:在嵌套查询中出现的符合以下特征的子查询:子查询中查询条件依赖于外层查询中的某个值, 所以子查询的处理不只一次,要反复求值,以供外层查询使用.联接查询:查询时先对表进行笛卡尔积操作,然后再做等值联接,选择,投影等操作. 联接查询的效率比嵌套查询低.嵌入式SQL:嵌入在高级语言的程序中使用的SQL语言称为嵌入式SQL.游标:游标是与某一查询结果相联系的符号名,用于把集合操作转换成单记录处理方式.2,(1检索LIU老师所授课程的课程号和课程名.SELECT C#,CNAMEFROM CW

8、HERE TEACHER='LIU'(2检索年龄大于23岁的男学生的学号和姓名.SELECT S#,SNAMEFROM SWHERE (AGE>23 AND (SEX='M'(3检索至少选修LIU老师所授课程中一门课程的女学生姓名.SELECT SNAMEFROM SWHERE SEX='F' AND S# IN(SELECT S#FROM SCWHERE C# IN(SELECT C#FROM CWHERE TEACHER='LIU'NOTICE:有多种写法,比如联接查询写法:SELECT SNAMEFROM S,SC,C

9、WHERE SEX='F' AND SC.S#=S.S#AND SC.C#=C.C#AND TEACHER='LIU'但上一种写法更好一些.(4检索WANG同学不学的课程的课程号.SELECT C#FROM CWHERE C# NOT IN(SELECT C#FROM SCWHERE S# IN(SELECT S#FROM SWHERE SNAME='WANG'(5检索至少选修两门课程的学生学号.SELECT DISTINCT X.SNOFROM SC X,SC YWHERE X.SNO=Y.SNO AND X.CNOY.CNO Notice:对

10、表SC进行自连接,X,Y是SC的两个别名.(6检索全部学生都选修的课程的课程号与课程名. SELECT C#,CNAMEFROM CWHERE NOT EXISTS(SELECT *FROM SWHERE S# NOT IN(SELECT *FROM SCWHERE SC.C#=C.C#要从语义上分解:(1选择课程的课程号与课程名,不存在不选这门课的同学.其中,"不选这门课的同学"可以表示为:SELECT *FROM SWHERE S# NOT IN(SELECT *FROM SCWHERE SC.C#=C.C#或者SELECT *FROM SWHERE NOT EXIST

11、S(SELECT *FROM SCWHERE S.S#=C.S# ANDSC.C#=C.C# (7检索选修课程包含LIU老师所授课的学生学号. SELECT DISTINCT S#WHERE C# IN(SELECT C#FROM CWHERE TEACHER='LIU'3,(1SELECT A,B,CFROM RUNIONSELECT A,B,CFROM S(2SELECT A,B,CFROM RINTERSECTSELECT A,B,CFROM S(3SELECT A,B,CFROM RWHERE NOT EXISTS(SELECT A,B,CFROM SWHERE R.A

12、=S.A AND R.B=S.B AND R.C=S.C (4SELECT R.A,R.B,S.CWHERE R.B=S.B4, (1统计有学生选修的课程门数.SELECT COUNT(DISTINCT C# FROM SC(2求选修C4课程的学生的平均年龄.SELECT A VG(AGEFROM SWHERE S# IN(SELECT S#FROM SCWHERE C#='C4'或者,SELECT A VG(AGEFROM S,SCWHERE S.S#=SC.S# AND C#='004'(3求LIU老师所授课程的每门课程的学生平均成绩. SELECT CNA

13、ME,A VG(GRADEFROM SC ,CWHERE SC.C#=C.C# AND TEACHER='LIU'GROUP BY C#(4统计每门课程的学生选修人数(超过10人的课程才统计.要求输出课程号和选修人数, 查询结果按人数降序排列,若人数相同,按课程号升序排列. 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

14、AS Y WHERE Y.SNAME='WANG' AND X.S#>Y.S# AND X.AGE(SELECT AVG(AGE FROM S AS Y WHERE Y.SEX=' 女' 5, (1往基本表 S 中插入一个学生元组('S9','WU',18. INSERT INTO S(S#,SNAME,AGE VALUES('59','WU',18 (2在基本表 S 中检索每一门课程成绩都大于等于 80 分的学 生学号,姓名和性别, 并把检索到的值送往另一个已存在的 基本表 STUDENT(

15、S#,SANME,SEX. INSERT INTO STUDENT(S#,SNAME,SEX SELECT S#,SNAME,SEX FROM S WHERE NOT EXISTS (SELECT * FROM SC WHERE GRADE<80 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

16、把选修 MATHS 课不及格的成绩全改为空值. UPDATE SC SET GRADE=NULL WHERE GRADE<60 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 GRADE=GRADE*1.05 WHERE C#='C4' AND GRADE75 6, 在宿主语言的程序中使用 SLQ 语句有以下规定: (1在程序中要区分 SQL 语句与宿主语言语句 (2允许嵌入的 SQL 语句引用宿主语言的程序变量(称为共享 变量,但有两条规定: 1引用时,这些变量前必须加":"作为前

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论