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

SQL历年考试(1)

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务
《大型数据库——SQLServer2000程序设计>
    一、选择题(10分,前三题各2分,4题4分)
    1、下列哪个不属于数据库对象B
    A、默认B、SELECT语句C、存储过程D、视图
    2、下列那一个不属于SQLSERVER工具A
    A、数据库管理器B、事件探查器C、导入和导出数据D、查询分析器
    3、下列那一个不属于企业管理器的功能D
    A、注册服务器B、配置本地和远程服务器
    C、引入和导出数据D、为WINDOWS创建操作系统用户
    4、(多选题)下列那些方面影响SQLSERVER的性能ABCDE
    A、系统资源(硬件)B、WINDOWSNT4.0和WINDOWS2000
    C、网络D、数据库应用程序E、客户端应用程序
    
    二、判断题(20分)
    1、查询分析器是一个真正的分析工具,它不仅能执行T——SQL语句,而且对查询语句的执行进行分析,给出查询计划,为查询优化提供直观的帮助。(√)
    2、在建立用户的登录帐号信息时,SQLSERVER会提示用户选择默认的数据库,以后用户每次连接上服务器之后,都会自动转到默认的数据库。(√)
    3、SQLSERVER在服务器和数据库级的安全级别上都设置了角色,其中角色是用户分配权限的单位。SQLSERVER允许用户在服务器级别上创建角色,但是为数据库安全,不允许在数据库级上建立新的角色。(×)
    4、一般情况下,一个简单的数据库可以只有一个主数据文件和一个事务日志文件。如果数据库很大,则可以设置多个次要数据文件和事务日志文件,并将它们放在不同的磁盘上。(√)
    5、数据库一旦建立,就没有办法重命名了,所以命名数据库要慎重。(×)
    6、与默认对象一样,规则在创建后,并不能直接使用,必须绑定到表中某一列或者用户定义的数据类型上。(√)
    7、SQLSERVER中的索引可分为索引优化与索引组合,其中索引组合不改变表中数据行的物理存储顺序,数据与索引分开存储。(×)
    8、触发器就其本质而言是一种特殊的存储过程。存储过程和触发器在数据库的开发中,在维护数据库实体完整性等方面具有不可替代的作用。(×)
    9、数据库备份的类型只有两种,分别是数据库备份、事务日志备份;恢复模式只有三种:简单恢复、完全恢复、批日志恢复。(×)
    10、数据复制是SQLSERVER的主要功能之一。复制有三种类型,其中对于复制不经常更改的数据,或不要求保持数据最新值(低滞后时间)的情况,合并复制是一种最好的数据复制方法。(×)
    三3.用T---SQL语句插入下列客房信息(3分)
    客房编号客房类型客房位置单价是否被预定备注
    1003310层朝南100否
    3.参考答案:
    insertintorooms
    values('1003','3','10层朝南',100,'否',null)
    用T—SQL语言在上述数据库基础上,完成如下操作:
    4.查询所有客户的身份证号、客房号、入住日期、结算日期等信息。(3分)
    selectguest_id,roomno,statedate,returndatefrombookin
    5.查询被预定的“标准房”(客房类型)的客房的客房编号,按客房号的升序排序。(3分)
    selectroomnofromroomtype,rooms
    whererooms.typeid=roomtype.typeid
    androomtype.typename=’标准房’andputup=’是’
    6.利用computeby子句统计各个客房(编号)的总金额。(3分)
    selectroomno,bookno,guest_id,staydate,returndate,discount,ammount
    frombookinorderbyroomno
    computesum(ammount)byroomno
    7.查询身份证号为“310222196711040064”的客户最近入住酒店的日期以及客房号,住了几天等信息。(7分)(说明:函数datediff(day,参数1,参数2),此函数功能:计算两个日期类型数据间相差的天数,即参数2-参数1的天数。)
    ifexists(select*frombookin
    whereguest_id='310222196711040064'andreturndateisnull)
    selectguest_id,staydate,roomno,datediff(day,staydate,getdate())入住天数frombookin
    whereguest_id='310222196711040064'
    andstaydate=(selectmax(staydate)frombookin
    whereguest_id='310222196711040064')
    else
    
    selectguest_id,staydate,roomno,datediff(day,staydate,returndate)入住天数frombookin
    whereguest_id='310222196711040064'
    andstaydate=(selectmax(staydate)frombookin
    whereguest_id='310222196711040064')
    8.创建存储过程proc_kroom,实现功能:根据客房类型号,查询是否有该类型的未被预定的房间,如果有,则显示提示信息“此类型的房间有未被预定的客房”;如果没有,则显示提示信息“此类型的房间已预定满!”。(8分)
    createprocproc_kroom@typeidchar(2)
    as
    ifexists(select*fromroomswheretypeid=@typeid
    androomnonotin(selectroomnofrombookinwherereturndateisnull))
    print'此类型的房间有未被预定的客房'
    else
    print'此类型的房间已预定满!'
    
    selectguest_id,roomno,statedate,returndatefrombookin
    9.创建触发器,实现如果删除客房标准信息表中某种客房类型记录,相应的客房信息表中所有此类型的客房记录都删除。(7分)
    createtriggertrig_1onroomtype
    fordelete
    as
    deleteroomsfromrooms,deleted
    whererooms.typeid=deleted.typeid
    四、简答题(15分)
    1、简述用户、角色和登陆之间的关系(5分)
    (1)登录帐号:用来和SQLSERVER连接。有了登录号才能连接上SQLSERVER,才有使用SQLSERVER的入门资格,但登录帐号没有使用数据库对象的权力。
    (2)数据库用户:简称用户,作为数据库对象,SQLSERVER用它来设定数据库存取的许可权。所以为了要存取SQLSERVER内的某一数据库的数据库对象,每一登录帐号必须对应一个用户名。
    2.事务是作为单个逻辑工作单元执行的一系列操作。事务具有原子性、一致性、隔离性和持久性。
    原子性指事务必须是原子工作单元,对于其数据修改,要么全部执行,要么全部不执行。一致性是指事务在完成时,必须使所有的数据都保持一致状态。隔离性是指由并发事务所作的修改必须与任何其他并发事务所作的修改隔离。持久性是指事务完成之后,它对于系统的影响是永久性的。
    (3)角色:也称为安全性角色,对数据具有相同的访问权限。包括系统内建角色和自建角色二类角色,其中,系统内建角色又分为服务器角色和数据库角色,数据库角色也是一个数据库对象
    2、简述事务的概念及其特点(5分)
    
    事务是作为单个逻辑工作单元执行的一系列操作。事务具有原子性、一致性、隔离性和持久性。
    原子性指事务必须是原子工作单元,对于其数据修改,要么全部执行,要么全部不执行。一致性是指事务在完成时,必须使所有的数据都保持一致状态。隔离性是指由并发事务所作的修改必须与任何其他并发事务所作的修改隔离。持久性是指事务完成之后,它对于系统的影响是永久性的。
    3、简述数据库备份的类型以及它们之间的区别(5分)
    在SQLServer2000中有四种备份类型分别为:数据库备份、事务日志备份、差异备份、文件和文件组备份。
    数据库备份是指对数据库的完整备份,包括所有的数据以及数据库对象。这种备份类型不仅速度较慢,而且会占用大量磁盘空间。在对数据库进行完全备份时,所有未完成的事务或者发生在备份过程中的事务都不会被备份。
    事务日志备份是指对数据库发生的事务进行备份,包括从上次进行事务日志备份、差异备份和数据库完全备份之后所有已经完成的事务。其需要的磁盘空间和备份时间都比数据库备份少得多。但相对比较复杂。
    差异备份是指将最近一次数据库备份以来发生的数据变化备份起来,因此差异备份实际上是一种增量数据库备份。与完整数据库备份相比,差异备份由于备份的数据量较小,所以备份和恢复所用的时间较短。但无法像事务日志备份那样提供到失败点的无数据损失备份。
    文件和文件组备份是指对数据库文件或文件夹进行备份,但其不像完整数据库备份那样同时也进行事务日志备份。
    
    SQLServer考试题及答案
    选择题:(每空2分共20分)
    1、在MSSQLServer中,用来显示数据库信息的系统存储过程是()
    Asp_dbhelp
    Bsp_db
    Csp_help
    Dsp_helpdb
    2、SQL语言中,删除一个表的命令是()
    ADELETE
    BDROP
    CCLEAR
    DREMORE
    3、关系数据库中,主键是(__)
    A、为标识表中唯一的实体
    B、创建唯一的索引,允许空值
    C、只允许以表中第一字段建立
    D、允许有多个主键的
    4、在Transact-SQL语法中,SELECT语句的完整语法较复杂,但至少包括的部分(1___),使用关键字(2___)可以把重复行屏蔽,将多个查询结果返回一个结果集合的运算符是(3___),如果在SELECT语句中使用聚合函数时,一定在后面使用(4___)。
    ⑴A、SELECT,INTOB、SELECT,FROM
    C、SELECT,GROUPD、仅SELECT
    ⑵A、DISTINCTB、UNION
    C、ALLC、TOP
    ⑶A、JOINB、UNION
    C、INTOC、LIKE
    ⑷A、GROUPBYB、COMPUTEBY
    C、HAVINGD、COMPUTE
    
    5、语句DBCCSHRINKDATABASE(Sample,25)中的25表示的意思是
    A、25M
    B、剩余占整个空间的25%
    C、已用空间占整个空间的25%
    D、以上都不对
    
    6、你是一个保险公司的数据库开发人员,公司的保单信息存储在SQLServer2000数据库中,你使用以下脚本建立了一个名为Policy的表:
    CREATETABLEPolicy
    (
    PolicyNumberintNOTNULLDEFAULT(0),
    InsuredLastNamechar(30)NOTNULL,
    InsuredFirstNamechar(20)NOTNULL,
    InsuredBirthDatedatetimeNOTNULL,
    PolicyDatedatetimeNOTNULL,
    FaceAmountmoneyNOTNULL,
    CONSTRAINTPK_PolicyPRIMARYKEY(PolicyNumber)
    )
    每次公司销售出一份保单,Policy表中就增加一条记录,并赋予其一个新的保单号,你将怎么做?
    
    a.建立一个INSTEADOFINSERT触发器来产生一个新的保单号,并将这个保单号插入数据表中。
    b.建立一个INSTEADOFUPDATE触发器来产生一个新的保单号,并将这个保单号插入数据表中。
    c.建立一个AFTERUPDATE触发器来产生一个新的保单号,并将这个保单号插入数据表中。
    d.用AFTERUPDATE触发器替代DEFAULT约束条件产生一个新的保单号,并将这个保单号插入数据表中。
    
    7、在SQL语言中,如果要建立一个工资表包含职工号,,职称。工资等字段。若要保证工资字段的取值不低于800元,最合适的实现方法是:
    A。在创建工资表时为”工资“字段建立缺省
    B。在创建工资表时为”工资“字段建立检查约束
    C。在工资表建立一个触发器
    D。为工资表数据输入编写一个程序进行控制
    8、Select语句中用来连接字符串的符号是______.
    A.“+”B.“&;”C.“||”D.“|”
    
    9、你是一个出版公司的数据库开发人员,对特定的书名的每天的销售情况建立了如下的存储过程:
    CREATEPROCEDUREget_sales_for_title
    titlevarchar(80),@ytd_salesintOUTPUT
    AS
    SELECT@ytd_sales=ytd_sales
    FROMtitles
    WHEREtitle=@title
    IF@@ROWCOUNT=0
    RETURN(-1)
    ELSE
    RETURN(0)
    另外建立了一个脚本执行这个存储过程,如果执行成功,将返回对应于书名的每天的销售情况的报表,如果执行失败,将返回“NoSalesFound”,怎样建立这个脚本?
    
    A.DECLARE@retvalint
    DECLARE@ytdint
    EXECget_sales_for_title‘NetEtiquette’,@ytd
    IF@retval<0
    PRINT‘Nosalesfound’
    ELSE
    PRINT‘Yeartodatesales:’+STR(@ytd)
    GO
    
    B.DECLARE@retvalint
    DECLARE@ytdint
    EXECget_sales_for_title‘NetEtiquette’,@ytdOUTPUT
    IF@retval<0
    PRINT‘Nosalesfound’
    ELSE
    PRINT‘Yeartodatesales:’+STR(@ytd)
    GO
    
    C.DECLARE@retvalint
    DECLARE@ytdint
    EXECget_sales_for_title‘NetEtiquette’,@retvalOUTPUT
    IF@retval<0
    PRINT‘Nosalesfound’
    ELSE
    PRINT‘Yeartodatesales:’+STR(@ytd)
    GO
    
    D.DECLARE@retvalint
    DECLARE@ytdint
    EXEC@retval=get_sales_for_title‘NetEtiquette’,@ytdOUTPUT
    IF@retval<0
    PRINT‘Nosalesfound’
    ELSE
    PRINT‘Yeartodatesales:’+STR(@ytd)
    GO
    
    10、Youareadatabasedeveloperforacontainermanufacturingcompany.Thecontainersproducedbyyourcompanyareanumberofdifferentsizesandshapes.ThetablesthatstorethecontainerinformationareshownintheSize,Container,andShapeTablesexhibit:
    Size
    SizeID
    SizeName
    Height
    Container
    ContainerID
    ShapeID
    SizeID
    Shape
    ShapeID
    ShapeName
    Measurements
    
    Asampleofthedatastoredinthetablesisshownbelow:
    SizeTable
    SizeIDSizeNameHeight
    1Small40
    2Medium60
    3Large80
    4Jumbo100
    ShapeTable
    ShapeIDShapeNameMeasurement
    1Triangle10
    2Triangle20
    3Triangle30
    4Square20
    5Square30
    6Square40
    7Circle15
    8Circle25
    9Circle35
    Periodically,thedimensionsofthecontainerschange.Frequently,thedatabaseusersrequirethevolumeofacontainer.Thevolumeofacontaineriscalculatedbasedoninformationintheshapeandsizetables.
    YouneedtohidethedetailsofthecalculationsothatthevolumecanbeeasilyaccessedinaSELECTquerywiththerestofthecontainerinformation.Whatshouldyoudo?
    A.Createauser-definedfunctionthatrequiresContainerIDasanargumentandreturnsthevolumeofthecontainer.
    B.CreateastoredprocedurethatrequiresContainerIDasanargumentandreturnsthevolumeofthecontainer.
    C.Addacolumnnamedvolumetothecontainertable.Createatriggerthatcalculatesandstoresvolumeinthiscolumnwhenanewcontainerisinsertedintothetable.
    D.Addacomputedcolumntothecontainertablethatcalculatesthevolumeofthecontainer.
    
    填空题(1空1分共20分)
    1、如果设计的表不符合第二范式,可能会导致_______,________,_______。
    2、SQL是由_______语言,________语言,_______语言组成。
    3、SQLServer在两个安全级上验证用户,分别是______________,_____________________。
    4、自定义函数由___________函数,_______________函数,___________________函数组成。
    5、备份策略的三种类型是__________备份,_______________备份,___________________备份组成。
    6、启动一个显式事务的语句为__________,提交事务的语句为__________,回滚事务的语句为__________
    7、表的每一行在表中是惟一的实体属于__________完整性,使列的输入有效属于__________完整性,两个表的主关键字和外关键字的数据应该对应一致属于__________完整性。
    简答题(共20分)
    1、在帮助中[,...n]意思是什么?(4分)
    2、请简述一下第二范式(4分)
    3、现有1销售表,它们结构如下:(4分)
    idint(标识号)
    codnochar(7)(商品编码)
    codnamevarchar(30)(商品名称)
    specvarchar(20)(商品规格)
    pricenumeric(10,2)(价格)
    sellnumint(销售数量)
    deptnochar(3)(售出分店编码)
    selldatedatetime(销售时间)
    要求:写出查询销售时间段在2002-2-15日到2002-4-29之间,分店编码是01的所有记录。
    4、写一个存储过程,要求传入一个表名,返回该表的记录数(假设传入的表在数据库中都存在)(4分)
    5、请简述UPDATE触发器如何工作原理。(4分)
    
    简答题:(共40分)
    1、(5分)使用一条SQL语句找到重复的值及重复的次数:有一数据表ZD_ks,其中有字段BM,MC,。。。,请查询出在ZD_ks中BM有重复的值及重复的次数,没有的不要列出。如下表:
    BMDUPCOUNT
    0013
    0022
    
    2、描述(5分)
    
    表1student学生信息表
    IDint学生编号
    Namevarchar学生
    Sexbit性别(男0女1)
    Classint班级编号
    
    表2schedule课程信息表
    IDint课程编号
    Namevarchar课程名称
    
    表3Grade成绩信息表
    IDint自动编号
    UIDint学生编号
    SIDint课程编号
    Numint考试成绩
    
    
    (a)求各班的总人数(1分)
    (b)求1班女生和男生的平均成绩(2分)
    (c)各班"数据结构"(课程名称)不及格的人数(2分)
    
    3、问题描述:(30分)
    本题用到下面三个关系表:
    CARD借书卡。CNO卡号,NAME,CLASS班级
    BOOKS图书。BNO书号,BNAME书名,AUTHOR作者,PRICE单价,QUANTITY库存册数
    BORROW借书记录。CNO借书卡号,BNO书号,RDATE还书日期
    备注:限定每人每种书只能借一本;库存册数随借书、还书而改变。
    要求实现如下15个处理:
    1.找出借书超过5本的读者,输出借书卡号及所借图书册数。(2分)
    2.查询借阅了"水浒"一书的读者,输出及班级。(3分)
    3.查询过期未还图书,输出借阅者(卡号)、书号及还书日期。(3分)
    4.查询书名包括"网络"关键词的图书,输出书号、书名、作者。(2分)
    5.查询现有图书中价格最高的图书,输出书名及作者。(2分)
    6.查询当前借了"计算方法"但没有借"计算方法习题集"的读者,输出其借书卡号,并按卡号降序排序输出。(4分)
    7.将"C01"班同学所借图书的还期都延长一周。(2分)
    8.从BOOKS表中删除当前无人借阅的图书记录。(2分)
    9.在BORROW表上建立一个触发器,完成如下功能:如果读者借阅的书名是"数据库技术及应用",就将该读者的借阅记录保存在BORROW_SAVE表中(注ORROW_SAVE表结构同BORROW表)。(4分)
    10.建立一个视图,显示"力01"班学生的借书信息(只要求显示和书名)。(3分)
    11.查询当前同时借有"计算方法"和"组合数学"两本书的读者,输出其借书卡号,并按卡号升序排序输出。(3分)
    
    
    答案
    选择:
    1D2B3A
    4、⑴B,⑵A,⑶B,⑷A
    5、B6、A7、B8、A9、D
    10、分析
    A正确,利用自定义函数可以隐藏计算细节,另外,函数的结果可以作为SELECT查询的列。
    B不正确,存储过程不能作为SELECT查询的列。
    C不正确,触发器不能创建在SELECT查询的列中。
    D不正确,这会造成数据冗余,因为加了一列计算列表就不符合第三范式了。
    正确答案:A
    
    填空
    1、插入异常,更新异常,删除异常
    2、数据定义,数据操纵,数据控制
    3、登陆鉴别,对数据库以及角色的许可验证
    4、标量函数,内嵌表值型函数,多语句表值函数
    5、BEGINTRANSACTION,COMMITTRANSACTION,ROLLBACKTRANSACTION
    6、实体,域完整性,参照完整性
    
    
    
    简答题:
    4、
    createProcgetRowCount
    @tablenamevarchar(100)
    AS
    exec('selectcount(*)from'+@tablename)
    
    答案
    1、
    createtableZD_ks(BMvarchar(10),mcvarchar(10),ageint)
    insertintoZD_ks(bm,mc,age)values('001','张三',1)
    insertintoZD_ks(bm,mc,age)values('001','李四',2)
    insertintoZD_ks(bm,mc,age)values('001','王五',3)
    insertintoZD_ks(bm,mc,age)values('002','赵六',1)
    insertintoZD_ks(bm,mc,age)values('002','钱七',2)
    insertintoZD_ks(bm,mc,age)values('003','孙八',1)
    go
    selectBM,count(*)asDUPCOUNTfromzd_ksgroupbybmhavingcount(*)>1
    droptablezd_ks
    
    
    2、
    (1)
    selectClass,count(1)asnumfromstudentgroupbyClass
    
    (2)
    selectS.Sex,avg(G.Num)asNum
    fromstudentS,GradeG
    whereS.ID=G.IDandS.Class=1
    groupbyS.Sex
    
    (3)
    selectS.Class,count(1)asnum
    fromstudentS,GradeG,scheduleSC
    whereS.ID=G.IDandG.SID=Sc.IDandSC.Name='数据结构'andSc.Num<60
    groupbyS.Class
    
    
    3、
    1.找出借书超过5本的读者,输出借书卡号及所借图书册数
    --实现代码:
    SELECTCNO,借图书册数=COUNT(*)
    FROMBORROW
    GROUPBYCNO
    HAVINGCOUNT(*)>5
    
    2.查询借阅了"水浒"一书的读者,输出及班级
    --实现代码:
    SELECT*FROMCARDc
    WHEREEXISTS(
    SELECT*FROMBORROWa,BOOKSb
    WHEREa.BNO=b.BNO
    ANDb.BNAME=N'水浒'
    ANDa.CNO=c.CNO)
    
    3.查询过期未还图书,输出借阅者(卡号)、书号及还书日期
    --实现代码:
    SELECT*FROMBORROW
    WHERERDATE    
    4.查询书名包括"网络"关键词的图书,输出书号、书名、作者
    --实现代码:
    SELECTBNO,BNAME,AUTHORFROMBOOKS
    WHEREBNAMELIKEN'%网络%'
    
    5.查询现有图书中价格最高的图书,输出书名及作者
    --实现代码:
    SELECTBNO,BNAME,AUTHORFROMBOOKS
    WHEREPRICE=(
    SELECTMAX(PRICE)FROMBOOKS)
    
    6.查询当前借了"计算方法"但没有借"计算方法习题集"的读者,输出其借书卡号,并按卡号降序排序输出
    --实现代码:
    SELECTa.CNO
    FROMBORROWa,BOOKSb
    WHEREa.BNO=b.BNOANDb.BNAME=N'计算方法'
    ANDNOTEXISTS(
    SELECT*FROMBORROWaa,BOOKSbb
    WHEREaa.BNO=bb.BNO
    ANDbb.BNAME=N'计算方法习题集'
    ANDaa.CNO=a.CNO)
    ORDERBYa.CNODESC
    
    7.将"C01"班同学所借图书的还期都延长一周
    --实现代码:
    UPDATEbSETRDATE=DATEADD(Day,7,b.RDATE)
    FROMCARDa,BORROWb
    WHEREa.CNO=b.CNO
    ANDa.CLASS=N'C01'
    
    8.从BOOKS表中删除当前无人借阅的图书记录
    --实现代码:
    DELETEAFROMBOOKSa
    WHERENOTEXISTS(
    SELECT*FROMBORROW
    WHEREBNO=a.BNO)
    
    
    9.在BORROW表上建立一个触发器,完成如下功能:如果读者借阅的书名是"数据库技术及应用",就将该读者的借阅记录保存在BORROW_SAVE表中(注ORROW_SAVE表结构同BORROW表)
    --实现代码:
    CREATETRIGGERTR_SAVEONBORROW
    FORINSERT,UPDATE
    AS
    IF@@ROWCOUNT>0
    INSERTBORROW_SAVESELECTi.*
    FROMINSERTEDi,BOOKSb
    WHEREi.BNO=b.BNO
    ANDb.BNAME=N'数据库技术及应用'
    
    10.建立一个视图,显示"力01"班学生的借书信息(只要求显示和书名)
    --实现代码:
    CREATEVIEWV_VIEW
    AS
    SELECTa.NAME,b.BNAME
    FROMBORROWab,CARDa,BOOKSb
    WHEREab.CNO=a.CNO
    ANDab.BNO=b.BNO
    ANDa.CLASS=N'力01'
    
    11.查询当前同时借有"计算方法"和"组合数学"两本书的读者,输出其借书卡号,并按卡号升序排序输出
    --实现代码:
    SELECTa.CNO
    FROMBORROWa,BOOKSb
    WHEREa.BNO=b.BNO
    ANDb.BNAMEIN(N'计算方法',N'组合数学')
    GROUPBYa.CNO
    HAVINGCOUNT(*)=2
    ORDERBYa.CNODESC
    SQLServer考试题及答案2
    一、选择题(1-25没题1分26-30每题2分共35分)
    1)假定有一个用户表,表中包含字段:userid(int)、username(varchar)、password(varchar)、等,该表需要设置主键,以下说法正确的是()。(选择两项)
    a)如果不能有同时重复的username和password,那么username和password可以组合在一起作为主键。
    b)此表设计主键时,根据选择主键的最小性原则,最好采用userid作为主键。
    c)此表设计主键时,根据选择主键的最小性原则,最好采用username和password作为组合键。
    d)如果采用userid作为主键,那么在userid列输入的数值,允许为空。
    2)MicrosoftSQLServer2000在安装的时候就创建的示例用户数据库包括()。(选择两项)
    a)Pubs
    b)Master
    c)Northwind
    d)Msdb
    3)以下()语句从表TABLE_NAME中提取前10条记录。(选择一项)
    a)select*fromTABLE_NAMEwhererowcount=10
    b)selectTOP10*fromTABLE_NAME
    c)selectTOPof10*fromTABLE_NAME
    d)select*fromTABLE_NAMEwhererowcount<=10
    4)从“产品”表里查询出价格高于产品名称为“一次性纸杯”的产品的记录,此SQL语句为()。(选择一项)
    a)SELECT*FROM产品WHERE价格>‘一次性纸杯’
    b)SELECT*FROM产品WHERE价格>(SELECT*FROM产品WHERE产品名称>’一次性纸杯’
    c)SELECT*FROM产品WHEREEXISTS产品名称=’一次性纸杯’
    d)SELECT*FROM产品WHERE价格>(SELECT价格FROM产品WHERE产品名称=’一次性纸杯’
    5)查找student表中所有电话号码(列名:telephone)的第一位为8或6,第三位为0的电话号码()。(选择一项)
    a)SELECTtelephoneFROMstudentWHEREtelephoneLIKE'[8,6]%0*'
    b)SELECTtelephoneFROMstudentWHEREtelephoneLIKE'(8,6)*0%'
    c)SELECTtelephoneFROMstudentWHEREtelephoneLIKE'[8,6]_0%'
    d)SELECTtelephoneFROMstudentWHEREtelephoneLIKE'[8,6]_0*'
    6)现有表book,字段:id(int),title(varchar),price(float);其中id字段设为标识,使用insert语句向book表中插入数据,以下语句错误的是()。(选择一项)
    a)insertintobook(id,title,price)values(1,'java',100)
    b)insertintobook(title,price)values('java',100)
    c)insertintobookvalues('java',100)
    d)insertbookvalues('java',100)
    7)现有表Employee,字段:id(int),firstname(varchar),lastname(varchar);以下sql语句错误的是()。(选择一项)
    a)selectfirstname+'.'+lastnameas'name'fromemployee)
    b)selectfirstname+'.'+lastname='name'fromemployee
    c)select'name'=firstname+'.'+lastnamefromemployee
    d)selectfirstname,lastnamefromemployee
    8)在sqlserver2000中,关于数据库说法错误的是()。(选择一项)
    a)数据库在磁盘上默认的存储位置是:SQLServer安装路径\MicrosoftSQLServer\MSSQL\Data
    b)一个数据库至少应包含一个数据库文件(*.mdf)和一个事务日志文件(*.ldf)
    c)只有当数据库中不存在数据的情况下,才可以进行数据库的收缩操作。
    d)可以通过从A机器拷贝数据库文件和事务日志文件至B机器,然后通过在B机器上执行相应的附加数据库操作,实现数据库从A机器到B机器的复制。
    9)若要删除book表中所有数据,以下语句错误的是()。(选择两项)
    a)truncatetablebook
    b)delete*frombook
    c)droptablebook
    d)deletefrombook
    10)学生成绩表grade中有字段score(float),现在要把所有在55分至60之间的分数提高5分,以下sql语句正确的是()。(选择两项)
    a)Updategradesetscore=score+5
    b)Updategradesetscore=score+5wherescore>=55orscore<=60
    c)Updategradesetscore=score+5wherescorebetween55and60
    d)Updategradesetscore=score+5wherescore>=55andscore<=60
    11)现有书目表book,包含字段:price(float);现在查询一条书价最高的书目的详细信息,以下语句正确的是()。(选择两项)
    a)selecttop1*frombookorderbypriceasc
    b)selecttop1*frombookorderbypricedesc
    c)selecttop1*frombookwhereprice=(selectmax(price)frombook)
    d)selecttop1*frombookwhereprice=max(price)
    12)现有书目表book,包含字段:价格price(float),类别type(char);现在查询各个类别的平均价格、类别名称,以下语句正确的是()。(选择一项)
    a)selectavg(price),typefrombookgroupbytype
    b)selectcount(price),typefrombookgroupbyprice
    c)selectavg(price),typefrombookgroupbyprice
    d)selectcount(price),typefrombookgroupbytype
    13)查询student表中的所有非空email信息,以下语句正确的是()。(选择一项)
    a)Selectemailfromstudentwhereemail!=null
    b)Selectemailfromstudentwhereemailnotisnull
    c)Selectemailfromstudentwhereemail<>null
    d)Selectemailfromstudentwhereemailisnotnull
    14)成绩表grade中字段score代表分数,以下()语句返回成绩表中的最低分。(选择两项)
    a)selectmax(score)fromgrade
    b)selecttop1scorefromgradeorderbyscoreasc
    c)Selectmin(score)fromgrade
    d)selecttop1scorefromgradeorderbyscoredesc
    15)现有订单表orders,包含用户信息userid,产品信息productid,以下()语句能够返回至少被订购过两回的productid?(选择一项)
    a)selectproductidfromorderswherecount(productid)>1
    b)selectproductidfromorderswheremax(productid)>1
    c)selectproductidfromorderswherehavingcount(productid)>1groupbyproductid_
    d)selectproductidfromordersgroupbyproductidhavingcount(productid)>1
    16)关于聚合函数,以下说法错误的是()。(选择一项)
    a)Sum返回表达式中所有数的总合,因此只能用于数字类型的列。
    b)Avg返回表达式中所有数的平均值,可以用于数字型和日期型的列。
    c)Max和Min可以用于字符型的列。
    d)Count可以用于字符型的列。
    17)使用以下()不可以进行模糊查询。(选择一项)
    a)OR
    b)Notbetween
    c)NotIN
    d)Like
    18)关于多表联接查询,以下()描述是错误的。(选择一项)
    a)外联接查询返回的结果集行数可能大于所有符合联接条件的结果集行数。
    b)多表联接查询必须使用到JOIN关键字
    c)内联接查询返回的结果是:所有符合联接条件的数据。
    d)在where子句中指定联接条件可以实现内联接查询。
    19)Sql语句:select*fromstudentswhereSNOlike‘010[^0]%[A,B,C]%’,可能会查询出的SNO是()。(选择两项)
    a)01053090A#Hm3?
    b)01003090A01
    c)01053090D09
    d)0101A01
    20)关于Truncatetable,以下()描述是错误的。(选择两项)
    a)Truncatetable可跟Where从句,根据条件进行删除。
    b)Truncatetable用来删除表中所有数据。
    c)触发器对Truncatetable无效。
    d)delete比Truncatetable速度快。
    21)创建一个名为‘Customers’的新表,同时要求新表中包含表‘clients’的所有记录,sql语句是()。(选择一项)
    a)Select*intocustomersfromclients
    b)Selectintocustomersfromclients
    c)Insertintocustomersselect*fromclients
    d)Insertcustomersselect*fromclients
    22)关于主键,以下()说法是错误的。(选择两项)
    a)主键可以用来确保表中不存在重复的数据行。
    b)一个表必须有一个主键。
    c)一个表只能有一个主键。
    d)只能对整数型列设置主键。
    23)假设订单表orders用来存储订单信息,cid代表客户编号,money代表单次订购额,现要查询每个客户的订购次数和每个客户的订购总金额,下面()sql语句可以返回正确结果。(选择一项)
    a)selectcid,count(distinct(cid)),sum(money)fromordersgroupbycid
    b)selectcid,count(distinct(cid)),sum(money)fromordersorderbycid
    c)selectcid,count(cid),sum(money)fromordersorderbycid
    d)selectcid,count(cid),sum(money)fromordersgroupbycid
    24)现有客户表customers(主键:客户编号cid),包含10行数据,订单表orders(外键:客户编号cid),包含6条数据。执行sql语句:select*fromcustomersrightouterjoinordersoncustomers.cid=orders.cid。最多返回()条记录。(选择一项)
    a)10
    b)6
    c)4
    d)0
    25)以下描述不正确的是
    a)存储过程能够实现较快的执行速度。
    b)内嵌表值型函数相当于一个带参数的视图。
    c)不指定所有者时,调用标量函数会出错。
    d)可以通过视图更改任意基表
    26)Yourdatabasestorestelephonenumbers.Eachtelephonenumberisstoredasaninteger.Youmustformatthetelephonenumbertoprintonareportinthefollowingformat:
    (999)999-9999
    Youhaveselectedthephonenumberintoalocalvariableasfollows:
    DECLARE@PhoneNumberintWhichstatementwillcorrectlyformatthenumber?
    a)SELECT'PhoneNumber'=‘(‘+SUBSTRING(CONVERT(varchar(10),@PhoneNumber),3,0)+‘)‘+SUBSTRING(CONVERT(varchar(10),@PhoneNurnber),3,3)+‘-‘+SUBSTRING(CONVERT(varchar(10),@PhoneNumber),4,6)
    b)SELECT'PhoneNumber'=‘(‘+SUBSTRING(CONVERT(varchar(10),@PhoneNuwber),3,1)+‘)‘+SUBSTRING(CONVERT(varcher(10),@PhoneNumber),3,4)+‘-‘+SUBSTRING(CONVERT(varchar(10),@PhoneMumber),4,7)
    c)SELECT'PhoneNumber'=‘(‘+SUBSTRING(CONVERT(varchar(10),@PhoneNumber),0,3)+‘)‘+SUBSTRING(CONVERT(varchar(10),@PhoneNumber),3,3)+‘-‘+SUBSTRING(CONVERT(varchar(10),@PhoneNurtiber),6,4)
    d)SELECT'PhoneNumber'=‘(‘+SUBSTRING(CONVERT(varchar(10),@PhoneNumber),1,3)+‘)‘+SUBSTRING(CONVERT(varchar(10),@PhoneNumber),4,3)+'-'+SUBSTRING(CONVERT(varchar(10),@PhoneNumber),7,4)
    27)YouareadatabasedeveloperforWideWorldImporters.Youarecreatingadatabasethatwillstoreorderinformation.Orderswillbeenteredinaclient/serverapplication.Eachtimeaneworderisentered,auniqueordernumbermustbeassigned.Ordernumbersmustbeassignedinascendingorder.Anaverageof10,000orderswillbeenteredeachday.YoucreateanewtablenamedOrdersandaddanOrderNumbercolumntothistable.Whatshouldyoudonext?
    a)SetthedatatypeofthecolumntoUniqueIdentifier.
    b)Setthedatatypeofthecolumntoint,andsettheIDENTITYpropertyforthecolumn.
    c)Setthedatatypeofthecolumntoint.Createauser-definedfunctionthatselectsthemaximumordernumberinthetable.
    d)Setthedatatypeofthecolumntoint.CreateaNextKeytable,andaddaNextOrdercolumntothetable.SetthedatatypeoftheNextOrdercolumntoint.CreateastoredproceduretoretrieveandupdatethevalueheldintheNextKey.
    28)Youarecreatingascriptthatwillexecutethisstoredprocedure.Ifthestoredprocedureexecutessuccessfully,itshouldreporttheyear-to-datesalesforthebooktitle.Ifthestoredprocedurefailstoexecute,itshouldreportthefollowingmessage:
    “NoSalesFound”
    Howshouldyoucreatethescript?
    a)DECLARE@retvalint
    DECLARE@ytdint
    EXECget_sales_for_title‘NetEtiquette’,@ytd
    IF@retval<0
    PRINT‘Nosalesfound’
    ELSE
    PRINT‘Yeartodatesales:’+STR(@ytd)
    GO
    b)DECLARE@retvalint
    DECLARE@ytdint
    EXECget_sales_for_title‘NetEtiquette’,@ytdOUTPUT
    IF@retval<0
    PRINT‘Nosalesfound’
    ELSE
    PRINT‘Yeartodatesales:’+STR(@ytd)
    GO
    c)DECLARE@retvalint
    DECLARE@ytdint
    EXECget_sales_for_title‘NetEtiquette’,@retvalOUTPUT
    IF@retval<0
    PRINT‘Nosalesfound’
    ELSE
    PRINT‘Yeartodatesales:’+STR(@ytd)
    GO
    d)DECLARE@retvalint
    DECLARE@ytdint
    EXEC@retval=get_sales_for_title‘NetEtiquette’,@ytd
    OUTPUT
    IF@retval<0
    PRINT‘Nosalesfound’
    ELSE
    PRINT‘Yeartodatesales:’+STR(@ytd)
    GO
    29)Youareadatabasedeveloperforaninsurancecompany.Informationaboutthecompany'sinsurancepoliciesisstoredinaSQLServer2000database.Youcreateatablenamedpolicyforthisdatabasebyusingthescriptshownbelow:
    CREATETABLEPolicy
    (
    PolicyNumberintNOTNULLDEFAULT(0),
    InsuredLastNameCHAR(30)NOTNULL,
    InsuredFirstNameCHAR(20)NOTNULL,
    InsuredBirthDatedattimeNOTNULL,
    PolicyDatedatetimeNOTNULL,
    FaceAmountmoneyNOTNULL,
    CONSTRAINTPK_PolicyPRIMARYKEY(PolicyNumber)
    )
    Eachtimethecompanysellsanewpolicy,thepolicymustbeassignedauniquepolicynumber.Thedatabasemustassignanewpolicynumberwhenanewpolicyisentered.Whatshouldyoudo?
    a)CreateanINSTEADOFINSERTtriggertogenerateanewpolicynumber,andincludethepolicynumberinthedatainsteadintothetable.
    b)CreateanINSTEADOFUPDATEtriggertogenerateanewpolicynumber,andincludethepolicynumberinthedatainsertedintothetable.
    c)CreateanAFTERUPDATEtriggertogenerateanewpolicynumber,andincludethepolicynumberinthedatainsertedintothetable.
    d)ReplacetheDEFAULTconstraintwithaAFTERINSERTtriggerthatgeneratesanewpolicynumberandincludesthepolicynumberinthedatainsertedintothetable.
    30)Youareadatabasedeveloperforamarketingfirm.Youhavedesignedaquarterlysalesview.Thisviewjoinsseveraltablesandcalculatesaggregateinformation.Youcreateaview.Youwanttoprovideaparameterisedquerytoaccessthedatacontainedinyourview.TheoutputwillbeusedinotherSELECTlists.Howshouldyouaccomplishthisgoal?
    a)UseanALTERVIEWstatementtoaddtheparametervaluetotheviewdefinition.
    b)Createastoredprocedurethatacceptstheparameterasinputandreturnsarowsetwiththeresultset.
    c)Createascalaruser-definedfunctionthatacceptstheparameterasinput.
    d)Createaninlineuser-definedfunctionthatacceptstheparameterasinput.
    二、填空题(每空一分共25分)
    1、关系R是1NF,当且仅当所有的基础域仅包含________。
    2、主关键字应该具有________性,__________性,__________性。
    3、关系R是3NF,当且仅当R是2NF,并且所有非PK属性都是__________于PK。
    4、Transact-SQL语言包含_________语言,_________语言,_________语言。
    5、消除列重复的关键字是_________,使用_________操作符从多个查询中创建单结果集,提交一个事务的语句为________。
    6、SQLServer的两种授权模式分别为___________和_____________。
    7、有一个数据表其一行有5KB,有10000行数据,那么我们至少需要______M的数据库空间。
    8、数据完整性分为__________,__________,__________.
    9、每个允许有_______个簇索引,___________索引是SQLServer默认选择。
    10、可以使用________关键字显示未加密存储过程信息,执行存储过程的关键字是_________,统计列平均值的聚合函数为________,修改对象的关键字为_______,删除对象的关键字为_________。
    11、________数据库保存所有的临时表和临时存储过程。
    三、简答题(15分)
    1、请简述一下第二范式(3分)
    2、请简述UPDATE触发器工作原理(3分)
    3、强制引用完整性时,简述SQLServer禁止用户进行的操作(3分)
    4、简述相关子查询的步骤(3分)
    5、简述使用索引和不使用索引的理由(3分)
    上机题(25分)
    一、(12分)问题描述:
    已知关系模式:
    S(SNO,SNAME)学生关系。SNO为,SNAME为
    C(CNO,CNAME,CTEACHER)课程关系。CNO为课程号,CNAME为课程名,CTEACHER为任课教师
    SC(SNO,CNO,SCGRADE)选课关系。SCGRADE为成绩
    1.找出没有选修过“李明”老师讲授课程的所有学生(4分)
    2.列出有二门以上(含两门)不及格课程的学生及其平均成绩(4分)
    3.列出既学过“1”号课程,又学过“2”号课程的所有学生(4分)
    二、定义一个十进制转换成2进制的标量函数。(4分)
    三、活期存款中,“储户”通过“存取款单”和“储蓄所”发生联系。假定储户包括:账号,,电话,地址,存款额;“储蓄所”包括:储蓄所编号,名称,电话,地址(假定一个储户可以在不同得储蓄所存取款)
    1、写出设计以上表格的语句(4分)
    2、创建一个触发器TR1完成下面内容:
    当向“存取款单”表中插入数据时,如果存取标志=1则应该更改储户表让存款额加上存取金额,如果存取标志=0则应该更改储户表让存款额减去存取金额,如果余额不足显示余额不足错误。(5分)
    
    答案:
    上
    一、填空题
    1)a,b2)a,c3)b4)d5)c6)a7)b8)c9)b,c10)c,d11)b,c12)a13)d14)c,d15)d16)b17)d18)b19)a,d20)a,d21)a22)a,c23)d24)b25)d26)d27)b28)d29)a30)d
    二、填空题
    1、原子值
    2、稳定性,最简性,熟悉性
    3、非传递地依赖
    4、数据定义,数据控制,数据操纵
    5、distinct,UNION,COMMITTRANSACTION
    6、NTonly验证模式,混合模式
    7、80
    8、域完整性,实体完整性,参考完整性
    9、一,非簇
    10、sp_help,EXEC,AVG,ALTER,DROP
    11、tempdb
    下
    一、
    准备数据
    createtables(snoint,sNamevarchar(100))
    createtablec(cnoint,cNamevarchar(100),CTEACHERvarchar(100))
    createtablesc(snoint,cnoint,scGradeint)
    insertintos
    values(1,'lfm1')
    insertintos
    values(2,'lfm2')
    insertintos
    values(3,'lfm3')
    insertintos
    values(4,'lfm4')
    insertintos
    values(5,'lfm5')
    insertintos
    values(6,'lfm6')
    
    insertintoc
    values(1,'ch1','李明')
    insertintoc
    values(2,'ch2','王刚')
    insertintoc
    values(3,'ch3','ll')
    insertintoc
    values(4,'ch4','ff')
    insertintoc
    values(5,'ch5','ffd')
    insertintoc
    values(6,'ch6','se')
    insertintoc
    values(7,'ch7','s')
    insertintosc
    values(1,2,80)
    insertintosc
    values(2,2,50)
    insertintosc
    values(1,1,60)
    insertintosc
    values(1,3,90)
    insertintosc
    values(3,2,55)
    insertintosc
    values(1,6,77)
    insertintosc
    values(3,4,80)
    insertintosc
    values(4,2,70)
    1.找出没有选修过“李明”老师讲授课程的所有学生
    --实现代码:
    SELECTSNAMEFROMS
    WHERENOTEXISTS(
    SELECT*FROMSC,C
    WHERESC.CNO=C.CNO
    ANDCNAME='李明'
    ANDSC.SNO=S.SNO)
    selectsnamefroms
    wheresnonotin
    (selects.snofroms
    innerjoinsc
    onsc.sno=s.sno
    innerjoinc
    onco=sco
    wherecteacher='李明')
    2.列出有二门以上(含两门)不及格课程的学生及其平均成绩
    --实现代码:
    SELECTS.SNO,S.SNAME,AVG_SCGRADE=AVG(SC.SCGRADE)
    FROMS,SC,(
    SELECTSNO
    FROMSC
    WHERESCGRADE<60
    GROUPBYSNO
    HAVINGCOUNT(DISTINCTCNO)>=2
    )AWHERES.SNO=A.SNOANDSC.SNO=A.SNO
    GROUPBYS.SNO,S.SNAME
    selects.sno,avg(scGrade)froms,sc
    wheres.snoin(
    selectsc.snofromsc
    innerjoinc
    onco=sco
    wheresc.scGrade<60
    groupbysno
    havingcount(*)>=2)
    ands.sno=sc.sno
    groupbys.sno
    3.列出既学过“1”号课程,又学过“2”号课程的所有学生
    --实现代码:
    SELECTS.SNO,S.SNAME
    FROMS,(
    SELECTSC.SNO
    FROMSC,C
    WHERESC.CNO=C.CNO
    ANDC.CNOIN('1','2')
    GROUPBYSNO
    HAVINGCOUNT(DISTINCTc.CNO)=2
    )SCWHERES.SNO=SC.SNO
    
    ------------------------------------------------------------------------------------------------------------------------------------------
    
    selectS.SNO,S.SNAMEfromsc,s
    wherecno=1andsc.snoin(selectsnofromscwherecno=2)ands.sno=sc.sno
    二、
    createfunctionconvert2(@numint)
    returnsvarchar(100)
    as
    begin
    declare@revarchar(100)
    set@re=''
    while@num>0
    select@re=substring('01',@num%2+1,1)+@re
    ,@num=@num/2
    return@re
    end
    selectdbo.convert2(8)
    三、
    1、
    CREATETABLE储户
    (
    账号INTPRIMARYKEY,CHAR(10),电话INT,地址CHAR(10),存款额MONEY
    )
    GO
    CREATETABLE储蓄所
    (
    储蓄所编号INTPRIMARYKEY,名称CHAR(10),电话INT,地址CHAR(10)
    )
    GO
    CREATETABLE存取款单
    (
    账号INTNOTNULL,储蓄所编号INTNOTNULL,存取日期DATETIMENOTNULL,
    存取标志INTNOTNULL,存取金额MONEY
    )
    GO
    2、CREATETRIGGERTR1
    ON存取款单
    FORINSERT
    AS
    DECLARE@BZINT,@MONEYMONEY,@ZHINT
    SELECT@BZ=存取标志,@MONEY=存取金额,@ZH=账号
    FROMINSERTED
    IF@BZ=0
    BEGIN
    UPDATE储户
    SET存款额=存款额-@MONEY
    WHERE账号=@ZH
    declare@symoney
    select@sy=存款额from储户
    WHERE账号=@ZH
    if@sy<0
    begin
    raiserror('余额不足',16,1)
    rollback
    end
    END
    IF@BZ=1
    BEGIN
    UPDATE储户
    SET存款额=存款额+@MONEY
    WHERE账号=@ZH
    END
    
  • 上一篇资讯: SQL历年考试
  • 下一篇资讯: SQL分类
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师