1、SQL1. IBM 公司圣何赛研究实验室的一位研究人员Codd,在1970年6月发表的一篇论文中提出了一个模型,它允许设计者把他们的数据库分解成几个独立但是相关的表,这对提高数据库的性能很有意义,同时也向最终用户保留原来数据库的外观。从此,Codd就被公认为( )数据库之父。(选择一项)a) 网状模型b) 层次模型c) 关系模型d) 平面模型2. 下面对于域完整性理解正确的是( )。(选择两项)a) 域的完整性和实体完整性都强调了数据的唯一性b) 可以指定列值的有效数据c) 列的数据类型增强了域的完整性d) 存储过程可用来定义域的完整性3. 在一个表中,通常使用( )约束来保证列中的值都是唯一
2、的,用来唯一的表示每行。(选择一项)a) 主键b) 约束c) 索引d) 关系4. 下面关于唯一约束描述不正确的是( )(选择一项)a) 唯一约束是数据完整性的实现方法之一b) 唯一约束使用关键字UNIQUEc) 唯一约束是指某列的值中不能出现NULLd) 唯一约束是指某列的值不能有任意两个重复5. 假设两张表建立了“主键外键”的引用关系,则主表(主键)中对应(外键)的数据( )。(选择一项)a) 必须在子表中有对应b) 可以比主表的数据多c) 主表的数据行可以比子表的数据行少d) 必须为数字数据类型6. 在SQL Server中,以下都属于二进制数据类型,除了( )。(选择一项)a) Bina
3、ryb) Imagec) Bitd) VarBinary7. 关于IDENTITY属性,下列说法错误的是( )。 (选择一项)a) 一个表只能有一个列具有IDENTITY属性b) 你不能对定义了IDENTITY属性的列加上defalue属性c) 附加了IDENTITY 属性的列不可以是任意数据类型d) 你不能更新一个定义了IDENTITY属性的列8. 10.某数据库表里的studentID列被定义为studentID int identity(50,2),首先你添加了3条记录,然后你把第二条记录删除掉,此时,若增加另外一条记录,studentID的值将是( )。(选择一项)a) 52b) 54
4、c) 56d) 589. 在SQL Server 2000中,附加数据库操作是指( )(选择一项)a) 把SQL Server数据库文件保存为其他数据库文件b) 根据数据库物理文件的信息,把数据库在SQL Server2000中恢复c) 把所有该数据库表的数据清空d) 把数据库删除10. 下面关于引用完整性约束的说法正确的是( )。(选择二项)a) 违反引用完整性约束时,不能对引用表进行插入操作b) 当建立引用表时被引用的表必须已经存在c) 当建立引用表时被引用的列不用已经存在d) 被引用的列不必是主键或者唯一约束11. 有一张销售表(orders),包含销售员编号(salepersonID)
5、、地区编号(regionID)、销售额(orderamount)三列,其中销售员编号为主键,现希望统计各地区销售总额以及所有销售之和,下面( )语句可以实现这一愿望。(选择一项)a) SELECT salepersonID,regionID,SUM(orderamount) From ordersb) SELECT salepersonID,regionID,SUM(orderamount) From orders GROUP BY regionIDc) SELECT salepersonID,regionID,orderamount From ordersd) SELECT * FROM o
6、rders12. 假设“产品”表中有“产品ID”,“产品名称”,“价格”此三个字段,要在此表里添加一条新记录,下列SQL语句能实现添加功能的是( )。(选择一项)a) UPDATE INSERT 产品 VALUES(01008,花生,20);b) INSERT 产品 VALUES(01008,花生,20);c) INSERT INTO 产品 VALUES(01008,花生,20);d) INSERT * FROM 产品 VALUES(01008,花生,20);13. 行有多个相等的名称,行又称为( )。(选择两项)a) 实体b) 元组c) 属性d) 关系14. 在查询分析器中你运行下面的语句,
7、得到的结果是( )。(选择一项)CREATE TABLEnumbers(N1 INT,N2 NUMERIC(5,0),N3 NUMERIC(4,2)GOINSERT numbers(1.5,1.5,1.5)SELECT*FORM numbersa) 返回2,2和1.50的结果集合b) 返回1.5,1.5,和1.5的结果集合c) CREATE TABLE命令不会执行,因为你无法为列N2设置精度为0d) 返回1,2,和1.50的结果集合15. 在表student中,包含主键列StuID,则执行Update student set StuID=80,执行的结果可能是( )。(选择一项)a) 更新了多
8、行数据b) 没有数据更新c) 删除了一行不符合要求的数据d) T_SQL语法错误,不能执行16. 查找authors表中的所有电话号码的首位为4,第二位为0或1的电话号码( )。(选择一项)a) SELECT phone FROM authors WHERE phone LIKE 41,0%b) SELECT phone FROM authors WHERE phone in 410%c) SELECT phone FROM authors WHERE phone LIKE 4_1,0%d) SELECT phone FROM authors WHERE phone between 41% a
9、nd 40%17. 用于删除表中所有数据行的命令是( )。 (选择一项)a) DELETE TABLE 表名b) TRUNCATE TABLE 表名c) DROP TABLE 表名d) ALTER TABLE 表名18. 下列函数能用于日期/时间类型的是( )。 (选择一项)a) MAXb) SUMc) COUNTd) AVG19. 关于数据库设计三范式,下列说法正确的是( )。 (选择一项)a) 建立数据库不一定要遵循三范式,但至少要达到一范式b) 三范式的作用对象不是表,而是某个数据库c) 要想数据库的性能好,就必须严格遵守三范式d) 三范式和数据完整性有时是矛盾的20. 一名学生可以选修
10、多个科目,一个科目可以被多名学生选修,这种关系是( )。 (选择一项)a) 一对一b) 一对多c) 多对一d) 多对多21. 关于SQL的变量,下列说法正确的是( )。 (选择一项)a) 定义局部变量的语法为:declare 数据类型 标识符b) 给局部变量赋值可以用set,得到其值可以用getc) error是一个系统变量,他记录执行最近一次SQL语句的错误号码,如果没错则为-1d) SQL可以自定义两个开头的变量22. T-SQL给变量赋值的方式有( )。 (选择两项)a) SELECT 局部变量 = 变量值b) PRINT 局部变量c) SET 局部变量 = 变量值d) SET 局部变量
11、 变量值23. T-SQL批处理语句块的结束标志为( )。 (选择一项)a) GOb) SUBMITc) ENDd) RETURN24. 下列语句中书写正确的是( )。 (选择一项)a) select * from student where jiguan exists(湖北,上海,江苏)b) select * from student where name in 邓巧 or 姚明 or 杜祥c) select * from student where sex = 女 and age any(select age from student where name in(高强,草蜢,东方+神起)d
12、) select * from student where sex = 男 and age all(17,18,19)25. 关于子查询下列说法中正确的是( )(选择一项)a) 子查询中的条件可以有变量b) 子查询可以放在父查询的where后,from和where中间,但无法放在select和from中间c) 如果子查询放在父查询中对父查询的语法结构不产生影响,那么子查询可以省略外面的小括号d) 子查询可以嵌套,但最多不能超过3层26. 在SQL Server数据库中,你想得到在products表中最贵的产品名称和价格应该使用的正确查询是( )。 (选择一项)a) SELECT Product
13、name, MAX(Price)FROM Productsb) SELECT TOP 1 Productname, Price FROM Products ORDER BY Price DESCc) SELECT Productname, MAX(Price)FROM Products GROUP BY Productnamed) SELECT TOP 1 Productname Price FROM Products ORDER BY Price27. 当你执行下面的SQL语句时,会发生( )。(选择一项)SELECT au_id, title_id,sum(royaltyper) FROM
14、 titleauthor GROUP BY, title_id, au_id ORDER BY, title_id, au_ida) 在结果集中,对每一个不同的au_id的值和title_id的值的组合都会有一行b) 该语句会失败c) 在结果集中,每一行中au_id的值都不会相同d) 在结果集中,每一行中title_id的值都不会相同28. 现有student表中存储的clsid是班级编号,要想在显示学生信息时将班级编号换成班级名称,可以实现的语句有( )。 (选择两项)a) select distinct s.id 学号, s.name 姓名, c.name 班级名称 from studen
15、t s, class cb) select s.id 学号, s.name 姓名from student s right join c.name 班级名称 from class c on s.clsid = c.idc) select s.id 学号, s.name 姓名, c.name 班级名称from student s left outer join class c on s.clsid = c.idd) select s.id 学号, s.name 姓名, c.name 班级名称from student s, class c where s.clsid = c.id29. 在数据表中,
16、创建索引可以得到以下的好处,除了( )。 (选择一项)a) 提高数据检索的速度b) 加快排序的速度c) 使数据更新、数据删除操作变快d) 通过浏览索引文件来定位纪录比通过浏览实际表的纪录显得更简单、更快捷30. 在employee表的firstname字段上建立的非聚集索引的物理效果是( )。 (选择一项)a) 所有的行按照firstname字段值升序排列并物理地存储在数据页中b) 在行存储上是没有影响的c) 所有的行按照firstname字段值降序排列并物理地存储在数据页中d) 所有的行被物理地存储在数据页上,并且根据firstname字段值按照索引建立时指定的顺序排列31. 在SQL Se
17、ver 2005中,以下关于视图数据的操作,正确的描述是( )。 (选择一项)a) 视图数据只能用来查询和浏览,不能进行修改、插入和删除b) 可以修改和删除视图的数据,但是这些数据不更新到数据库表中c) 可以在查询分析器中使用INSERT/UPDATE/DELETE 等SQL语句对视图进行操作d) 由于视图是数据库基表数据的复制,因此删除视图中的数据行,不会影响到基表的数据32. 现有创建视图语句create view view_stuinfo(姓名, 学号, 成绩)asselect stuname, stuinfo.stuid, scorefrom stuinfo left join stu
18、markson stuinfo.stuid=stumarks.stuidgo下列评述正确的是( )a) 成功创建了一个名为view_stuinfo的视图b) 语法错误:第一行的列名不能这样指定c) 语法错误:as应改为begind) 语法错误:视图中不能出现左连接关键字left join33. 关于结构控制,下列说法错误的是( ) a) if 判断后面的语句,如果只有1句可以不要begin和end b) while括号中的判断,可以只写一个数字,0代表假,非0代表真 c) case块后面必须带when和end,但可以没有else d) 下列SQL语句中没有任何语法错误DECLARE COUNT
19、 INTWHILE(1=1)SET COUNT = 1; BEGIN IF COUNT 5 PRINT COUNT - 1 END34. 在SQLSever中,执行存储过程MY_PROC的正确的T_SQL为( )。(选择一项)a) RUN MY_PROCb) EXECUTE MY_PROCc) START MY_PROCd) SHELL MY_PROC35. 创建一个数据库可以包含多种文件,除了以下( )。(选择一项)a) 主要数据文件b) 次要数据文件c) 表文件d) 日志文件36. 对于下面的存储过程:CREATE PROCEDURE Myp1 p Int AsSelect Student
20、name,Age from Students where Age=p假如你要在Students表中查找年龄是18岁的学生,( )可以正确的调用这个存储过。(选择一项)a) EXEC Myp1 p=18b) EXEC Myp1 p=18c) EXEC Myp1 p=18d) EXEC Myp1 p=1837. 用sp_recompile系统存储过程可以强制存储过程在下一次启动时进行重新编译,其语法为:sp_recompile objectname=object,其中的object可以是以下的某个对象名称,除了( )。(选择一项)a) 存储过程名称b) 触发器名称c) 约束对象名称d) 视图名称3
21、8. 下面( )不是数据库规范化要达到的效果。(选择一项)a) 改善数据库的设计b) 实现最小的数据冗余c) 可以用一个表来存储所有数据,使设计及存贮更加简化d) 防止更新、插入及删除的时候,产生数据丢失39. 在SQL Server2005中,以下都是触发器的特性,除了( )。(选择一项)a) 强化约束b) 可级联运行c) 跟踪变化d) 查询优化40. 在SQL Server2005中,为数据库表建立索引能够( )。a) 防止非法的删除操作b) 防止非法的插入操作c) 提高查询性能d) 节约数据库的磁盘空间41. 在SQLServer2005中,假设orders表中存在自动编号字段oid等于
22、1的记录,执行下面T-SQL,以下说法正确的是( )。 (选择一项)BEGIN TRANSACTIONDelete from Orders where oid =1IF(Error0)ROLLBACK TRANSACTIONElseCOMMIT TRANSACTIONa) 执行成功,oid 为1的记录被永久删除 b) 执行成功,order表没有任何变化c) 执行时出现错误 d) 执行成功,但事务处理并没有结束42. 事务具有三种模式,除了( )。 (选择一项)a) 显式事务b) 隐式事务c) 自动提交事务d) 系统事务43. 关于自定义存储过程,下列说法错误的是( )。 (选择一项)a) 无论
23、是定义还是调用,每个存储过程的输出参数都必须加上output关键字b) 存储过程中可以定义变量,还可以定义事务c) raiserror用来在自定义存储过程中自定义并抛出异常d) 存储过程可以有输入参数,也可以有输出参数,但是不允许同时有44. 关于存储过程,下列说法错误的是( )。 (选择一项)a) 存储过程中可以包含逻辑控制语句和数据操纵语句b) 系统存储过程主要存储在master数据库中c) 系统存储过程以 sp_ 为前缀d) 自定义存储过程存储在sysobjects表中45. 关于自定义存储过程create procedure proc_stunum int inputas create
24、 table tab ( num int )go下列说法正确的是( )a) 没什么问题,其中第2行的input可以要也可以不要b) 不行,存储过程中必须包含至少1个查询语句,另外第1行的procedure可以简写成proc c) 语法错误,应该将第2行的input改为output,或者干脆去掉就好了d) 无法正确执行,存储过程中不能包含表定义46. 考虑下面的存储过程 create procedure Lookup a intas if a is null begin print 你好2008 return end下列说法错误的是( )a) 不带参数去执行,服务器会打印一条消息,提示该存储过程
25、需要提供一个参数b) 不带参数去执行,会直接打印你好2008c) 带一个参数null,会打印你好2008d) Return在这里表示直接退出整个存储过程的执行,相当于C#函数中的return47. 关于触发器,下列说法错误的是( )。 (选择一项)a) 触发器是被动调用的,不是主动调用的,也不能够主动调用b) SQL2005的触发器分为insert触发器、delete触发器、update触发器三种c) 触发器可以用来实现多表间的高级检查约束d) 触发器是事务,因此可以和批处理一样进行回滚操作,且该回滚包括触发器定义以外的insert、delete或update操作48. 关于触发器定义crea
26、te trigger tgr_changeClass -调换班级触发器on studentfor updateas declare oldClsId int -旧班级号 declare newClsId int -新班级号 declare newClsAmount int -新班级人数 set oldClsId = (select clsid from deleted) set newClsId = (select clsId from inserted) set newClsAmount = (select stuAmount from class where id = newClsId)
27、if newClsAmount = 50 begin print 新班人数已满,请调整更新数据 rollback transaction return end update class set stuAmount = stuAmount - 1 where id = oldClsId update class set stuAmount = stuAmount + 1 where id = newClsId print 调换班级成功go下列说法正确的是( )a) 该定义无任何错误b) 触发器定义的语法是先for后on,而这个定义恰恰写反了c) 倒数3、4行的更新语句执行后,inserted表和
28、deleted表中的数据就清空了d) if结构中的return可以省略,因为前面已经回滚了49. 关于SQL2005的安全,以下说法正确的是( )。 (选择一项)a) 安全层次由外到内依次为:操作系统账户-服务器账户-数据库账户-表账户b) 如果设定登陆服务器的方式为windows账户登陆,那么所有可以登陆windows的账户就可以直接登陆sql服务器了c) sql服务器可以远程登录,但是不能是windows账户而必须是准sql账户类型d) 要想用windows账户登陆sql服务器,必须映射一个对应的sql账户50. 关于数据库账户与架构,以下说法错误的是( )。 (选择一项)a) 数据库架构
29、是MS-SQL Server 2005的新内容b) 一个数据库账户不一定要拥有某个数据库的登陆权,他可能拥有多个,也可能实际上一个也没有c) 一个数据库不见得一定要属于某个数据库账户支配,可以有多个数据库账户登陆它,也可能一个也没有d) 架构实现了数据库用户与数据库的合理分离Question 1:Can you use a batch SQL or store procedure to calculating the Number of Days in a MonthAnswer 1:找出当月的天数selectdatepart(dd,dateadd(dd,-1,dateadd(mm,1,cas
30、t(cast(year(getdate() asvarchar)+-+cast(month(getdate() as varchar)+-01 as datetime)Question2:Can you use a SQL statement to calculating it!Howcan I print 10 to 20 for books that sell for between $10 and$20,unknown for books whose price is null, and other for all otherprices?Answer 2:select bookid,bookname,price=case when price is null then unknown when price between 10 and 20 then 10 to 20 else price endfrom booksQuestion3:Can you use a SQL statement to finding
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1