SQL语言(综合) 课堂练习和习题_第1页
SQL语言(综合) 课堂练习和习题_第2页
SQL语言(综合) 课堂练习和习题_第3页
SQL语言(综合) 课堂练习和习题_第4页
SQL语言(综合) 课堂练习和习题_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

本文格式为Word版,下载可任意编辑——SQL语言(综合)课堂练习和习题SQL语言课堂练习和习题

一、选择题

1.SQL语言是()的语言,简单学习.

A.过程化B.非过程化C.格式化D.导航式

2.SQL语言的数据操纵语句包括SELECT,INSERT,UPDATE,DELETE等.其中最重要的,也是使用最频繁的语句是().

A.SELECTB.INSERTC.UPDATED.DELETE

3.在视图上不能完成的操作是().

A.更新视图B.查询C.在视图上定义新的表D.在视图上定义新的视图

4.SQL语言集数据查询,数据操纵,数据定义和数据控制功能于一体,其中,CREATE,DROP,ALTER语句是实现哪种功能().

A.数据查询B.数据操纵C.数据定义D.数据控制

5.SQL语言中,删除一个视图的命令是().

A.DELETEB.DROPC.CLEARD.REMOVE6.在SQL语言中的视图VIEW是数据库的().

A.外模式B.模式C.内模式D.存储模式7.以下的SQL语句中,()不是数据定义语句.

A.CREATETABLEB.DROPVIEWC.CREATEVIEWD.GRANT8.若要撤销数据库中已经存在的表S,可用().

A.DELETETABLESB.DELETESC.DROPTABLESD.DROPS9.若要在基本表S中增加一列CN(课程名),可用().

A.ADDTABLES(CNCHAR(8))B.ADDTABLESALTER(CNCHAR(8))

C.ALTERTABLESADD(CNCHAR(8))D.ALTERTABLES(ADDCNCHAR(8))

10.学生关系模式S(S#,Sname,Sex,Age),S的属性分别表示学生的学号,姓名,性别,年龄.要在表S中删除一个属性\年龄\可选用的SQL语句是().

A.DELETEAgefromSB.ALTERTABLESDROPAgeC.UPDATESAgeD.ALTERTABLES'Age'

11.有关系S(S#,SNAME,SAGE),C(C#,CNAME),SC(S#,C#,GRADE).其中S#是学生号,SNAME是学生姓名,SAGE是学生年龄,C#是课程号,CNAME是课程名称.要查询选修\课的年龄不小于20的全体学生姓名的SQL语句是SELECTSNAMEFROMS,C,SCWHERE子句.这里的WHERE子句的内容是().

A.S.S#=SC.S#andC.C#=SC.C#andSAGE>=20andCNAME='ACCESS'B.S.S#=SC.S#andC.C#=SC.C#andSAGEin>=20andCNAMEin'ACCESS'C.SAGEin>=20andCNAMEin'ACCESS'D.SAGE>=20andCNAME='ACCESS'

12.设关系数据库中一个表S的结构为S(SN,CN,grade),其中SN为学生名,CN为课程名,二者均为字符型;grade为成绩,数值型,取值范围0-100.若要把\张二的化学成绩80分\插入S中,则可用().

A.ADDINTOSVALUES('张二','化学','80')B.INSERTNTOSVALUES('张二','化学','80')C.ADDINTOSVALUES('张二','化学',80)D.INSERTINTOSVALUES('张二','化学',80)

13.设关系数据库中一个表S的结构为:S(SN,CN,grade),其中SN为学生名,CN为课程名,二者均为字符型;grade为成绩,数值型,取值范围0-100.若要更正王二的化学成绩为85分,则可用().

A.UPDATESSETgrade=85WHERESN='王二'ANDCN='化学'B.UPDATESSETgrade='85'WHERESN='王二'ANDCN='化学'C.UPDATEgrade=85WHERESN='王二'ANDCN='化学'D.UPDATEgrade='85'WHERESN='王二'ANDCN='化学'14.在SQL语言中,子查询是().

A.返回单表中数据子集的查询语言B.选取多表中字段子集的查询语句

C.选取单表中字段子集的查询语句D.嵌入到另一个查询语句之中的查询语句15.SQL是一种()语言.

A.高级算法B.人工智能C.关系数据库D.函数型

16.有关系S(S#,SNAME,SEX),C(C#,CNAME),SC(S#,C#,GRADE).其中S#是学生号,SNAME是学生姓名,SEX是性别,C#是课程号,CNAME是课程名称.要查询选修\数据库\课的全体男生姓名的SQL语句是SELECTSNAMEFROMS,C,SCWHERE子句.这里的WHERE子句的内容是().

A.S.S#=SC.S#andC.C#=SC.C#andSEX='男'andCNAME='数据库'B.S.S#=SC.S#andC.C#=SC.C#andSEXin'男'andCNAMEin'数据库'C.SEX'男'andCNAME'数据库'D.S.SEX='男'andCNAME='数据库'17.若用如下的SQL语句创立了一个表SC:

CREATETABLESC(S#CHAR(6)NOTNULL,C#CHAR(3)NOTNULL,SCOREINTEGER,NOTECHAR(20));向SC表插入如下行时,()行可以被插入.

A.('202309','111',60,必修)

B.('202323','101',NULL,NULL)C.(NULL,'103',80,'选修')D.('202332',NULL,86,'')

18.假设学生关系S(S#,SNAME,SEX),课程关系C(C#,CNAME),学生选课关系SC(S#,C#,GRADE).要查询选修\课的男生姓名,将涉及到关系().

A.SB.S,SCC.C,SCD.S,C,SC

19.SQLServer2000的字符型系统数据类型主要包括()。

A.int、money、charB.char、varchar、textC.datetime、binary、intD.char、varchar、int

20.假使要在SQLServer2000中存储图形图像、Word文档文件,不可采用的数据类型是()。

A.binaryB.varbinaryC.imageD.text21.不属于SQLServer2000系统全局变量的是()。A.@@ErrorB.@@ConnectionsC.@@Fetch_StatusD.@Records

22.SQLServer2000提供的单行解释语句是使用()开始的一行内容。A.“/*〞B.“--〞C.“{〞D.“/〞

23.以下标识符可以作为局部变量使用()。

A.[@Myvar]B.MyvarC.@MyvarD.@Myvar24.在SQLServer中,WAITFOR语句中的DELAY参数是指()。A.要等待的时间B.指示SQLServer一直等到指定的时间过去C.用于指示时间D.以上都不是

25.下面()组命令,将变量count值赋值为1。

A.DECLARE@countSELECT@count=1B.DIMcount=1C.DECLAREcountSELECTcount=1D.DIM@countSELECT@count=1

26.以下()赋值语句是错误的。

A.SELECT@C=1B.SET@C=1C.SELECT@DJ=单价FROMbook

ORDERBY单价DESCD.SET@DJ=单价FROMbook

ORDERBY单价DESC

27.在SQLServer编程中,可使用()将多个语句捆绑。

A.{}B.BEGIN-ENDC.()D.[]

28.在SQLServer2000中,以下变量名正确的是()。

A.@sumB.jC.sumD.4kk选择题答案:

(1)B(2)A(3)C(4)C(5)B(6)A(7)D(8)C(9)C(10)B

(11)A(12)D(13)A(14)D(15)C(16)A(17)B(18)D(19)B(20)D(21)D(22)B(23)C(24)A(25)A(26)D(27)B(28)A

二、填空题

1.在T-SQL编程语句中,WHILE结构可以根据条件屡屡重复执行一条语句或一个语句块,还可以使用()和CONTINUE关键字在循环内部控制WHILE循环中语句的执行。

2.在T-SQL编程语句中,()用于使语句在某一时刻或在一段时间间隔后继续执行。

1.break2.waitfor

三、简答题

1.试述SQL语言的特点.答:

(1)综合统一.SQL语言集数据定义语言DDL,数据操纵语言DML,数据控制语言DCL的功能于一体.

(2)高度非过程化.用SQL语言进行数据操作,只要提出\做什么\而无须指明\怎么做\因此无需了解存取路径,存取路径的选择以及SQL语句的操作过程由系统自动完成.

(3)面向集合的操作方式.SQL语言采用集合操作方式,不仅操作对象,查找结果可以是元组的集合,而且一次插入,删除,更新操作的对象也可以是元组的集合.

(4)以同一种语法结构提供两种使用方式.SQL语言既是自含式语言,又是嵌入式语言.作为自含式语言,它能够独立地用于联机交互的使用方式,也能够嵌入到高级语言程序中,供程序员设计程序时使用.

(5)语言简捷,易学易用.2.试述SQL的定义功能.

答:SQL的数据定义功能包括定义表,定义视图和定义索引.

SQL语言使用CREATETABLE语句定义建立基本表,;ALTERTABLE语句修改基本表定义,DROPTABLE语句删除基本表;建立索引使用CREATEINDEX语句建立索引,DROPINDEX语句删除索引表;SQL语言使用CREATEVIEW命令建立视图,DROPVIEW语句删除视图.

3.用SQL语句建立“关系数据库和关系代数课堂练习和习题〞中的四个表.答:对于S表:S(SNO,SNAME,STATUS,CITY);建S表:

CREATETABLES(SNOCHAR(3),SNAMECHAR(10),STATUSCHAR(2),CITYCHAR(10));

P(PNO,PNAME,COLOR,WEIGHT);建P表:

CREATETABLEP(PNOCHAR(3),PNAMECHAR(10),COLORCHAR(4),WEIGHTINT);

J(JNO,JNAME,CITY);建J表:

CREATETABLEJ(JNOCHAR(3),JNAMECHAR(10),CITYCHAR(10));

SPJ(SNO,PNO,JNO,QTY);建SPJ表:

CREATETABLESPJ(SNOCHAR(3),PNOCHAR(3),JNOCHAR(3),QTYINT);

4.针对上题中建立的四个表试用SQL语言完成“关系数据库和关系代数课堂练习和习题〞的查询.

答:(1)求供应工程J1零件的供应商号码SNO;SELECTSNOFROMSPJ

WHEREJNO='J1';

(2)求供应工程J1零件P1的供应商号码SNO;SELECTSNOFROMSPJ

WHEREJNO='J1'ANDPNO='P1';

(3)求供应工程J1零件为红色的供应商号码SNO;SELECTSNOFROMSPJ

WHEREJNO='J1'ANDPNOIN(SELECTPNOFROMP

WHERECOLOR='红');或

SELECTSNOFROMSPJ,P

WHEREJNO='J1'ANDSPJ.PNO=P.PNOANDCOLOR='红';*(4)求没有使用天津供应商生产的红色零件的工程号JNO;解析:

用SQL语言表示如下:SELECTJNOFROMJ

WHERENOTEXISTS(SELECT*FROMSPJ

WHERESPJ.JNO=J.JNOANDSNOIN(SELECTSNOFROMS

WHERECITY='天津')ANDPNOIN(SELECTPNOFROMP

WHERECOLOR='红'));或

SELECTJNOFROMJ

WHERENOTEXISTS(SELECT*

=90then'优秀'when@c>=70then'良好'when@c>=60then'及格'else'不及格'end)

fetchfromxxxinto@a,@b,@cendclosexxxdeallocatexxx

18.declare@cnumeric(5,2)

declare@c1int,@c2int,@c3int,@c4intset@c1=0;set@c2=0;set@c3=0;set@c4=0declarexxxcursor

forselect成绩fromscoreopenxxx

fetchxxxinto@c

while@@fetch_status=0begin

if(@c>=90)set@c1=@c1+1;

elseif(@c>=70)set@c2=@c2+1;elseif(@c>=60)set@c3=@c3+1;elseset@c4=@c4+1fetchfromxxxinto@cendclosexxxdeallocatexxx

print'优秀生人数:'+str(@c1,5);print'良好生人数:'+str(@c2,5);print'及格生人数:'+str(@c3,5);print'及格生人数:'+str(@c4,5)

19.declare@achar(8),@bvarchar(10)declare@cnumeric(5,2)declare@dintset@d=80

declarexxxcursor

forselect学号,课程名,成绩fromscoreopenxxx

fetchxxxinto@a,@b,@cwhile@@fetch_status=0begin

if(@c>=@d)print@a+replicate('',3)+@b+str(@c,5)fetchfromxxxinto@a,@b,@cendclosexxxdeallocatexxx

20.declare@achar(8),@bvarchar(10),@cnumeric(5,2)declare@schar(8),@rvarchar(10)set@s='20230001'set@r='数学'set@c=84

declarexxxcursor

forselect学号,课程名fromscoreopenxxx

fetchxxxinto@a,@bwhile@@fetch_status=0begin

if(@a=@sand@b=@r)updatescoreset成绩=@c

wherecurrentofxxx

fetchfromxxxinto@a,@bendclosexxxdeallocatexxx参考答案:

1.从Students表中查询出所有当年(系统时间)入学的学生记录。

2.首先定义一个名为@MyNo的局部变量,并给它赋初值,假使@MyNo属于计算机软件专业,则显示出平均成绩,否则显示“学号为@MyNo的学生不存在或不属于软件专业〞。3.从score表中查询出大于等于平均成绩的所有记录。4.求出score表中最高成绩与最低成绩的分数之差。

5.从students表中查询姓名为@a的值的同学是否存在,根据不可怜况显示出相应信息。6.从students表中统计出专业名开头为@a的值(即“计算机〞)的所有学生人数。7.从students表中分组统计出每个年份入学的学生人数。8.从students表中分组统计出每个月份入学的学生人数。9.从students表中分组统计出每个日号入学的学生人数。10.显示出AAA库中所有学生的记录信息及选课成绩

11.显示出AAA库中每个学生的学号、姓名、专业等信息及选课门数12.显示出AAA库中每个学生的平均成绩

13.修改score表中学号为@a的值、课程名为@b的值的学生的成绩为@c的值。

14.向score表中插入学号为@a的值、课程名为@b的值、成绩为@c的值的学生成绩记

录。

15.从score表中删除学号为@a的值、课程名为@b的值的学生成绩记录。16.从score表中统计并显示出记录总数

17.显示出score表中每个成绩记录,并在每条记录最终给出优秀、良好、及格、不及格等相应等级。

18.从score表中按成绩统计并显示出优秀、良好、及格、不及格各多少人。19.显示出score表中成绩大于等于@d值的所有记录。

20.修改score表中学号为@a的值、课程名为@b的值的学生的成绩为@c的值。

五、问题描述:此题用到下面三个关系表:

CARD(CNO,NAME,CLASS)借书卡。CNO卡号,NAME姓名,CLASS班级BOOKS(BNO,BNAME,AUTHOR,PRICE,QUANTITY)图书。BNO书号,BNAME书名,AUTHOR,PRICE单价,QUANTITY库存册数

BORROW(CNO,BNO,RDATE)借书记录。CNO借书卡号,BNO书号,RDATE还书日期

备注:限定每人每种书只能借一本;库存册数随借书、还书而改变。

要求实现如下15个处理:

1.写出建立BORROW表的SQL语句,要求定义主码完整性约束和引用完整性约束。2.找出借书超过5本的读者,输出借书卡号及所借图书册数。3.查询借阅了\水浒\一书的读者,输出姓名及班级。4.查询过期未还图书,输出借阅者(卡号)、书号及还书日期。5.查询书名包括\网络\关键词的图书,输出书号、书名、。6.查询现有图书中价格最高的图书,输出书名及。

7.查询当前借了\计算方法\但没有借\计算方法习题集\的读者,输出其借书卡号,并按卡号降序排序输出。

8.将\班同学所借图书的还期都延长一周。9.从BOOKS表中删除当前无人借阅的图书记录。10.假使经常按书名查询图书信息,请建立适合的索引。

11.在BORROW表上建立一个触发器,完成如下功能:假使读者借阅的书名是\数据库技术及应用\,就将该读者的借阅记录保存在BORROW_SAVE表中(注ORROW_SAVE表结构同BORROW表)。

12.建立一个视图,显示\力01\班学生的借书信息(只要求显示姓名和书名)。

13.查询当前同时借有\计算方法\和\组合数学\两本书的读者,输出其借书卡号,并按卡号升序排序输出。

14.假定在建BOOKS表时没有定义主码,写出为BOOKS表追加定义主码的语句。15.对CARD表做如下修改:

a.将NAME最大列宽增加到10个字符(假定原为6个字符)。b.为该表增加1列NAME(系名),可变长,最大20个字符。

参考答案:(未上机验证)

1.写出建立BORROW表的SQL语句,要求定义主码完整性约束和引用完整性约束CREATETABLEBORROW(CNOintFOREIGNKEYREFERENCESCARD(CNO),BNOintFOREIGNKEYREFERENCESBOOKS(BNO),RDATEdatetime,PRIMARYKEY(CNO,BNO))2.找出借书超过5本的读者,输出借书卡号及所借图书册数SELECTCNO,借图书册数=COUNT(*)FROMBORROWGROUPBYCNOHAVINGCOUNT(*)>53.查询借阅了\水浒\一书的读者,输出姓名及班级SELECT*FROMCARDcWHEREEXISTS(SELECT*FROMBORROWa,BOOKSbWHEREa.BNO=b.BNOANDb.BNAME=N'水浒'ANDa.CNO=c.CNO)4.查询过期未还图书,输出借阅者(卡号)、书号及还书日期SELECT*FROMBORROWWHERERDATE6.查询现有图书中价格最高的图书,输出书名及SELECTBNO,BNAME,AUTHORFROMBOOKSWHEREPRICE=(SELECTMAX(PRICE)FROMBOOKS)7.查询当前借了\计算方法\但没有借\计算方法习题集\的读者,输出其借书卡号,并按卡号降序排序输出SELECTa.CNOFROMBORROWa,BOOKSbWHEREa.BNO=b.BNOANDb.BNAME=N'计算方法'ANDNOTEXISTS(SELECT*FROMBORROWaa,BOOKSbbWHEREaa.BNO=bb.BNOANDbb.BNAME=N'计算方法习题集'ANDaa.CNO=a.CNO)ORDERBYa.CNODESC8.将\班同学所借图书的还期都延长一周UPDATEbSETRDATE=DATEADD(Day,7,b.RDATE)FROMCARDa,BORROWbWHEREa.CNO=b.CNOANDa.CLASS=N'C01'9.从BOOKS表中删除当前无人借阅的图书记录DELETEAFROMBOOKSaWHERENOTEXISTS(SELECT*FROMBORROWWHEREBNO=a.BNO)10.假使经常按书名查询图书信息,请建立适合的索引CREATECLUSTEREDINDEXIDX_BOOKS_BNAMEONBOOKS(BNAME)11.在BORROW表上建立一个触发器,完成如下功能:假使读者借阅的书名是\数据库技术及应用\,就将该读者的借阅记录保存在BORROW_SAVE表中(注ORROW_SAVE表结构同BORROW表)CREATETRIGGERTR_SAVEONBORROWFORINSERT,UPDATEASIF@@ROWCOUNT>0INSERTBORROW_SAVESELECTi.*FROMINSERTEDi,BOOKSbWHEREi.BNO=b.BNOANDb.BNAME=N'数据库技术及应用'12.建立一个视图,显示\力01\班学生的借书信息(只要求显示姓名和书名)CREA

温馨提示

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

评论

0/150

提交评论