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

某国企的sql_server_2000_DBA_考题

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

【网学网提醒】:网学会员为大家收集整理了某国企的sql_server_2000_DBA_考题提供大家参考,希望对大家有所帮助!


    一、选择题:
    1、在MSSQLServer中,用来显示数据库信息的系统存储过程是()C
    Asp_dbhelp
    Bsp_db
    Csp_help
    Dsp_helpdb
    2、SQL语言中,删除一个表的命令是()B
    ADELETE
    BDROP
    CCLEAR
    DREMORE
    3、关系数据库中,主键是(__)A
    A、为标识表中唯一的实体
    B、创建唯一的索引,允许空值
    C、只允许以表中第一字段建立
    D、允许有多个主键的
    4、在Transact-SQL语法中,SELECT语句的完整语法较复杂,但至少包括的部分(1_B__),使用关键字(2_D__)可以把重复行屏蔽,将多个查询结果返回一个结果集合的运算符是(3_C__),如果在SELECT语句中使用聚合函数时,一定在后面使用(4__C_)。
    ⑴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表示的意思是D
    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.Addacolumnnamedvolume
    tothecontainertable.Createatriggerthatcalculatesandstoresvolumeinthiscolumnwhenanewcontainerisinsertedintothetable.
    D.Addacomputedcolumntothecontainertablethatcalculatesthevolumeofthecontainer.
    二、填空题
    1、备份策略的三种类型是__________备份,_______________备份,___________________备份组成。
    2、启动一个显式事务的语句为__________,提交事务的语句为__________,回滚事务的语句为__________
    三、简答题
    1、现有1销售表(表名为SellDetail),它们结构如下:(4分)
    字段名字段类型说明
    idint(标识号)
    codnochar(7)(商品编码)
    codnamevarchar(30)(商品名称)
    specvarchar(20)(商品规格)
    pricenumeric(10,2)(价格)
    sellnumint(销售数量)
    deptnochar(3)(售出分店编码)
    selldatedatetime(销售时间)
    要求:写出查询销售时间段在2002-2-15日到2002-4-29之间,分店编码是01的所有记录。
    2、写一个存储过程,要求传入一个表名,返回该表的记录数(假设传入的表在数据库中都存在)
    上面考题的部分答案
    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
    1、SQL语句面试题,关于groupby
    表内容:
    2005-05-09胜
    2005-05-09胜
    2005-05-09负
    2005-05-09负
    2005-05-10胜
    2005-05-10负
    2005-
    05-10负
    如果要生成下列结果,该如何写sql语句?
    胜负
    2005-05-0922
    2005-05-1012
    ------------------------------------------
    createtable#tmp(rqvarchar(10),shengfunchar(1))
    insertinto#tmpvalues('2005-05-09','胜')
    insertinto#tmpvalues('2005-05-09','胜')
    insertinto#tmpvalues('2005-05-09','负')
    insertinto#tmpvalues('2005-05-09','负')
    insertinto#tmpvalues('2005-05-10','胜')
    insertinto#tmpvalues('2005-05-10','负')
    insertinto#tmpvalues('2005-05-10','负')
    1)selectrq,sum(casewhenshengfu='胜'then1else0end)'胜',sum(casewhenshengfu='负'then1else0end)'负'from#tmpgroupbyrq
    2)selectN.rq,N.勝,M.負from(
    selectrq,勝=count(*)from#tmpwhereshengfu='胜'groupbyrq)Ninnerjoin
    (selectrq,負=count(*)from#tmpwhereshengfu='负'groupbyrq)MonN.rq=M.rq
    3)selecta.col001,a.a1胜,b.b1负from
    (selectcol001,count(col001)a1fromtemp1wherecol002='胜'groupbycol001)a,
    (selectcol001,count(col001)b1fromtemp1wherecol002='负'groupbycol001)b
    wherea.col001=b.col001
    2.请教一个面试中遇到的SQL语句的查询问题
    表中有ABC三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。
    ------------------------------------------
    select(casewhena>bthenaelsebend),
    (casewhenb>cthenbeslecend)
    fromtable_name
    3.面试题:一个日期判断的sql语句?
    请取出tb_send表中日期(SendTime字段)为当天的所有记录?(SendTime字段为datetime型,包含日期与时间)
    ------------------------------------------
    select*fromtbwheredatediff(dd,SendTime,getdate())=0
    4.有一张表,里面有3个字段:语文,数学,英语。其中有3条记录分别表示语文70分,数学80分,英语58分,请用一条sql语句查询出这三条记录并按以下条件显示出来(并写出您的思路):
    大于或等于80表示优秀,大于或等于60表示及格,小于60分表示不及格。
    显示格式:
    语文数学英语
    及格优秀不及格
    ------------------------------------------
    select
    (casewhen语文>=80then'优秀'
    when语文>=60then'及格'
    else'不及格')as语文,
    (casewhen数学>=80then'优秀'
    when数学>=60then'及格'
    else'不及格')as数学,
    (casewhen英语>=80then'优秀'
    when英语>=60then'及格'
    else'不及格')as英语,
    fromtable
    5.在sqlserver2000中请用sql创建一张用户临时表和系统临时表,里面包含两个字段ID和IDValues,类型都是int型,并解释下两者的区别?
    ------------------------------------------
    用户临时表:createtable#xx(IDint,IDValuesint)
    系统临时表:createtable##xx(IDint,IDValuesint)
    区别:
    用户临时表只对创建这个表的用户的Session可见,对其他进程是不可见的.
    当创建它的进程消失时这个临时表就自动删除.
    全局临时表对整个SQL
    Server实例都可见,但是所有访问它的Session都消失的时候,它也自动删除.
    6.sqlserver2000是一种大型数据库,他的存储容量只受存储介质的限制,请问它是通过什么方式实现这种无限容量机制的。
    ------------------------------------------
    它的所有数据都存储在数据文件中(*.dbf),所以只要文件够大,SQLServer的存储容量是可以扩大的.
    SQLServer2000数据库有三种类型的文件:
    主要数据文件
    主要数据文件是数据库的起点,指向数据库中文件的其它部分。每个数据库都有一个主要数据文件。主要数据文件的推荐文件扩展名是.mdf。
    次要数据文件
    次要数据文件包含除主要数据文件外的所有数据文件。有些数据库可能没有次要数据文件,而有些数据库则有多个次要数据文件。次要数据文件的推荐文件扩展名是.ndf。
    日志文件
    日志文件包含恢复数据库所需的所有日志信息。每个数据库必须至少有一个日志文件,但可以不止一个。日志文件的推荐文件扩展名是.ldf。
    7.请用一个sql语句得出结果
    从table1,table2中取出如table3所列格式数据,注意提供的数据及结果不准确,只是作为一个格式向大家请教。
    如使用存储过程也可以。
    table1
    月份mon部门dep业绩yj
    -------------------------------
    一月份0110
    一月份0210
    一月份035
    二月份028
    二月份049
    三月份038
    table2
    部门dep部门名称dname
    --------------------------------
    01国内业务一部
    02国内业务二部
    03国内业务三部
    04国际业务部
    table3(result)
    部门dep一月份二月份三月份
    --------------------------------------
    0110nullnull
    02108null
    03null58
    04nullnull9
    ------------------------------------------
    1)
    selecta.部门名称dname,b.业绩yjas'一月份',c.业绩yjas'二月份',d.业绩yjas'三月份'
    fromtable1a,table2b,table2c,table2d
    wherea.部门dep=b.部门depandb.月份mon='一月份'and
    a.部门dep=c.部门depandc.月份mon='二月份'and
    a.部门dep=d.部门depandd.月份mon='三月份'and
    2)
    selecta.dep,
    sum(casewhenb.mon=1thenb.yjelse0end)as'一月份',
    sum(casewhenb.mon=2thenb.yjelse0end)as'二月份',
    sum(casewhenb.mon=3thenb.yjelse0end)as'三月份',
    sum(casewhenb.mon=4thenb.yjelse0end)as'四月份',
    sum(casewhenb.mon=5thenb.yjelse0end)as'五月份',
    sum(casewhenb.mon=6thenb.yjelse0end)as'六月份',
    sum(casewhenb.mon=7thenb.yjelse0end)as'七月份',
    sum(casewhenb.mon=8thenb.yjelse0end)as'八月份',
    sum(casewhenb.mon=9thenb.yjelse0end)as'九月份',
    sum(casewhenb.mon=10thenb.yjelse0end)as'十月份',
    sum(casewhenb.mon=11thenb.yjelse0end)as'十一月份',
    sum(casewhenb.mon=12thenb.yjelse0end)as'十二月份',
    fromtable2aleftjointable1bona.dep=b.dep
    8.华为一道面试题
    一个表中的Id有多个记录,把所有这个id的记录查出来,并显示共有多少条记录数。
    ------------------------------------------
    selectid,Count(*)fromtbgroupbyidhavingcount(*)>1
    select*from(selectcount(ID)ascountfromtablegroupbyID)TwhereT.count>1
    
  • 上一篇资讯: 标准sql语句总结
  • 下一篇资讯: 服务器脚本-SQL语法
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师