《SQL Server2008数据库技术应用》试卷3 单项选择题(每小题1分,共10分) 1.下列四项中说法不正确的是(C) A数据库减少了数据冗余 B.数据库中的数据可以共享 C.数据库避免了一切数据的重复D.数据库具有较高的数据独立性 2 下列哪个不是SQLServer服务 Server B.SQL Server Agent C.MS DTC D.PWS 3.下列哪个不是数据库对象(A)。 A.数据类型 R规 C.默认 D.用户 4.SQLServer对象的完整名称不包括下面哪个 A,及务器名 B.数据库名 C.对象名 D.文件夹名 5.数据定义语言的缩写词为(A)。 A DOI B.DCL D.DBI 6.SL语言中,条件表示年龄在40至50之间的表达式为(B A.IN(40,50) B.BETWEEN 40 AND 50 C.BETWEEN 40 OR 50 D.BETWEEN 40 50 7.表示职称为副教授同时性别为男的表达式为(B A职称副教授'OR性别男B.职称=副教授AND性别'男 C BETWEEN'副教授'AD'男 D.INC副教授','男 8.下面球个不是SQL Server的合法标识符(B)。 A.a12 B.12a C0a12 D.#qq 9.SQL语言中,不是逻辑运算符号的(D A B.NOT C.OR D.XOR 10.下面哪个函数是属于字符串运算的(C): A ARS B.SIN C STR D.ROUND 二、判断题(每空1分,共10分) 1. 视图和表是完全 一样的 2.SQLServer允许用户自定义类型?Y 3.推,建就是主津?、 4.SQLServer不允许字段名为汉字?N 5.¥2005.89是SqL中的货币型常量吗?N 6.语句select 15%2 的执行结果是:7.5吗?N 7.作为字符串型数据李白'是排在牡甫的前面吗?N 8.sal1int是SQL的数据类型吗?Y 9.设置惟一约束的列不允许为空?N
———————————————————————————————————————————— 1 《SQL Server 2008 数据库技术应用》试卷 3 一、单项选择题(每小题 1 分,共 10 分) 1. 下列四项中说法不正确的是(C ) A.数据库减少了数据冗余 B.数据库中的数据可以共享 C.数据库避免了一切数据的重复 D.数据库具有较高的数据独立性 2. 下列哪个不是 SQL Server 服务( D )。 A.SQL Server B.SQL Server Agent C.MS DTC D. PWS 3. 下列哪个不是数据库对象( A )。 A.数据类型 B.规则 C.默认 D.用户 4. SQL Server对象的完整名称不包括下面哪个( D )。 A.服务器名 B.数据库名 C.对象名 D.文件夹名 5. 数据定义语言的缩写词为 ( A )。 A.DDL B.DCL C.DML D.DBL 6. SQL 语言中,条件表示年龄在 40 至 50 之间的表达式为 ( B )。 A. IN (40,50) B. BETWEEN 40 AND 50 C. BETWEEN 40 OR 50 D. BETWEEN 40 ,50 7.表示职称为副教授同时性别为男的表达式为( B ) A. 职称='副教授' OR 性别='男' B. 职称='副教授' AND 性别='男' C. BETWEEN '副教授' AND '男' D. IN ('副教授','男') 8. 下面哪个不是 SQL Server 的合法标识符( B )。 A. a12 B. 12a C. @a12 D. #qq 9. SQL 语言中,不是逻辑运算符号的( D )。 A. AND B. NOT C. OR D. XOR 10.下面哪个函数是属于字符串运算的( C )。 A.ABS B. SIN C. STR D. ROUND 二、判断题(每空 1 分,共 10 分) 1. 视图和表是完全一样的? N 2. SQL Server允许用户自定义类型? Y 3. 惟一键就是主键?N 4. SQL Server不允许字段名为汉字? N 5. ¥2005.89 是SQL中的货币型常量吗? N 6. 语句 select 15%2 的执行结果是: 7.5 吗?N 7. 作为字符串型数据'李白'是排在'杜甫' 的前面吗?N 8. smallint是SQL的数据类型吗?Y 9. 设置惟一约束的列不允许为空?N
10.主健可以是复合键吗?Y 三、填空题(每空1分,共20分) 1. 创建 修改和别除表命令分别是create table、_alter able和 drop table. 2.SQL Server2008以_# 开头的标识符,表示临时表或过程:局部变量名字必 须以©开头,而全局变量名字必须以©@开头。 3.语句select char(65),len我们快放假了.')的执行结果是A 4.语句select lower(beautiful),rtr 心中的太阳 的执行结果是 我心中的太阳 5.1 eft ioin运算是左外连接 6.SELECT DATEADD(day,10,2005-12-22)结果是2006-01-01 7.ROND()函数的是 四舍五入 8.检索姓名字段中含有'娟'的表达式为姓名1ik_’%娟 9. 语句权限是指用户能否当前数据库上执行backup database、backup log、create database create table create view create _procedure create _function._、create rule、create default语句, 10.SQL Server复制把服务器分为发布服务器、 分发服务器和订阅 服条器二种 四、简述题(每小题5分,共10分) 1.视图的好处是什么 (1)为用户集中需要的数据,简化了数据的用户操作: (2)对用户隐藏了数据库设计的复杂性: (3)简化用户权限的管理 2。流程控制语句包括哪些语句,他们各自的作用是什么? 1)IF..ELSE是条件判断语句 2)BEGIN.END能将多个SQL语句组合成一个语句块,并视为一个单元处理 3)CASE多情况语句,将其中一个符合条件的结果表达式返回 4)阳HILE..COUNTINUE.BREAK设置循环语句,COUNTINUE可以终止本次循环, 开始下一次循环,BREAK中断循环,跳出循环外 5)G0T0可以使程序跳到指定的标有标识符的位置处继续执行 6)WAITFOR暂时停止执行SQL语句、语句块或者存储过程 T)RETURN无条件的终止 个查询、存储过程或批处理 五、设计题(共50分) 现有关系数据库如下: 数据库名:医院数据库 医生表(编号,姓名,性别,出生日期,职称 病人表(编号,姓名,性别,民族,身份证号 病历表(ID,病人编号,医生编号,病历描述) 用SQ1,语言实现下列功能的sql语句代码: 1.创建上述三表的建库、建表代码: 2
———————————————————————————————————————————— 2 10.主键可以是复合键吗?Y 三、填空题(每空 1 分,共 20 分) 1. 创建、修改和 删除表命令 分 别 是 create table 、 __alter_______ table 和 ___drop______ table。 2. SQL Server 2008以___ #______开头的标识符,表示临时表或过程;局部变量名字必 须以___@______开头,而全局变量名字必须以___@@_____开头。 3. 语句 select char(65), len('我们快放假了.')的执行结果是___A_____、___7____。 4. 语句 select lower('beautiful'), rtrim (' 我心中的太阳 ') 的执行结果是: ____beautifu________和_____我心中的太阳______。 5. left join 运算是___ 左外连接__________。 6. SELECT DATEADD(day, 10, '2005-12-22')结果是____2006-01-01_________。 7. ROUND( )函数的是_____四舍五入________函数。 8. 检索姓名字段中含有'娟'的表达式为 姓名 like '%娟%' 。 9. 语句权限是指用户能否当前数据库上执行 backup database、backup log、create database 、 create __table_______ 、 create ___view______ 、 create __procedure_____、create _____function__、create rule、create default 语句。 10.SQL Server 复制把服务器分为__发布____服务器、___分发___服务器和__订阅____ 服务器三种。 四、简述题(每小题 5 分,共 10 分) 1. 视图的好处是什么? (1) 为用户集中需要的数据,简化了数据的用户操作; (2) 对用户隐藏了数据库设计的复杂性; (3) 简化用户权限的管理 2. 流程控制语句包括哪些语句,他们各自的作用是什么? 1) IF…ELSE 是条件判断语句 2) BEGIN …END 能将多个 SQL 语句组合成一个语句块,并视为一个单元处理 3) CASE 多情况语句,将其中一个符合条件的结果表达式返回 4) WHILE…COUNTINUE…BREAK 设置循环语句,COUNTINUE 可以终止本次循环, 开始下一次循环,BREAK 中断循环,跳出循环外 5) GOTO 可以使程序跳到指定的标有标识符的位置处继续执行 6) WAITFOR 暂时停止执行 SQL 语句、语句块或者存储过程 7) RETURN 无条件的终止一个查询、存储过程或批处理 五、设计题(共 50 分) 现有关系数据库如下: 数据库名:医院数据库 医生表(编号,姓名,性别,出生日期,职称) 病人表(编号,姓名,性别,民族,身份证号) 病历表(ID,病人编号,医生编号,病历描述) 用 SQL 语言实现下列功能的 sql 语句代码: 1. 创建上述三表的建库、建表代码;
要求使用:主键(师医生表.编号,病人表.课号)、外健(病历表医生编号,病历表.病 人课号)、非空(职称,姓名)、检查(性别),自动编号(ID)(16分) 100001杜医生男1963-5-18副主任医师 100002郭医生女1950-7-26副主任医师 100003刘医生男1973-9-18医师 修改 编号为100002的医生职称为‘主任医师 编号为100003的医生信忘 (8分) 3.写出创建:医疗表视图(医生编号,姓名,病人姓名,病历)的代码:(4分) 4.写出所有病人编号、姓名、病历、以及病人所对应的医生编号的查询语句:(4分) 5.写出创建:输出某医生(根据医生编号即可)看病人数存储过程以及执行过程(要 6 1970 年以前出生的医生4分)。 .检索有病人的医生信息。(4分) 8.创建一个默认,并将其绑定到医生表的成绩职称列上,默认值为“医师”。(4分) 答案: 1、create database「医院数据库T use[医院数据库】 go create table医生表 ([编号】char(6)primary key, r姓名1 nchar(4) not null. t性别1 nchar) check(性别1in(男',女"), 【出生日期]datetime, [职称]char(18)not nul1) create table病人表 (课号】char(6)primary key [姓名】nchar(4 not null. [性别]nchar(1l)check([性别]in('男',女')), 【民族1 nchar(10), [身份证号1char(18)not nul1) create table病历表 (ID IDENTITY(1,1), [病人编号】char(6)references病人表(学号), 【医生编号】char(6)references医生表(编号), [病历描述1 varchar(1000)) 2.insert医生表values(10000',杜医生',’男,1963-5-18,副主任医师) insert医生表va1ues('100002',郭医生',女','1950-7-26',副主任医 师) 3
———————————————————————————————————————————— 3 要求使用:主键(师医生表.编号,病人表.课号)、外键(病历表.医生编号,病历表.病 人课号)、非空(职称,姓名)、检查(性别),自动编号(ID) (16 分) 2. 将下列医生信息添加到医生表的代码 编号 姓名 性别 出生日期 职称 100001 杜医生 男 1963-5-18 副主任医师 100002 郭医生 女 1950-7-26 副主任医师 100003 刘医生 男 1973-9-18 医师 修改 编号为 100002 的医生职称为‘主任医师’ 删除 编号为 100003 的医生信息 (8 分) 3. 写出创建:医疗表视图(医生编号,姓名,病人姓名,病历)的代码;(4 分) 4. 写出所有病人编号、姓名、病历、以及病人所对应的医生编号的查询语句;(4 分) 5. 写出创建: 输出某医生(根据医生编号即可)看病人数存储过程以及执行过程(要 求输入医生姓名的参数,输出病人数)(6 分)。 6. 写出查询 1970 年以前出生的医生(4 分)。 7. 检索有病人的医生信息。(4 分) 8. 创建一个默认,并将其绑定到医生表的成绩职称列上,默认值为“医师”。(4 分) 答案: 1、create database [医院数据库] use [医院数据库] go create table 医生表 ([编号] char(6) primary key, [姓名] nchar(4) not null, [性别] nchar(1) check([性别] in ('男', '女')), [出生日期]datetime , [职称] char(18) not null) create table 病人表 ([课号] char(6) primary key, [姓名] nchar(4) not null, [性别] nchar(1) check([性别] in ('男', '女')), [民族] nchar(10), [身份证号] char(18) not null) create table 病历表 (ID IDENTITY(1, 1), [病人编号] char(6) references 病人表(学号), [医生编号] char(6) references 医生表(编号), [病历描述] varchar(1000)) 2. insert 医生表 values('100001', '杜医生', '男', '1963-5-18', '副主任医师') insert 医生表 values('100002', '郭医生', '女', '1950-7-26', '副主任医 师')
insert医生表va1ues('100003',刘医生',·男',1973-9-18','医师 update医生表set职称='主任医师where编号='100002 delete医生表where编号='100003 3.create view[医疗表视图]as on ct br.姓名,y3.姓名,yl.病历from病人表as br join医疗表a on医生表ay ony1.医生编号=y3.编号 4.Select br..编号,br姓名,br.病历,yl.医生编号 from病人表br1 eft ioin医疗表y onbr.编号=y1.病人编号 5.create procedure某医生看病人数 @医生编号nchar(16),0人数int output as select人数=count(病人编号】 from病人表 where医生编号=e医生编 go declare @TOTAL int execute[某医生看病人数]'100001',@TOTAL 6 select◆fom医生表where出生日期<1970-01-01' 7、select编号,姓名,性别,出生日期,职称from医生表 where编号in(select医生编号from医疗表 &、create default zhicheng as医师 exec sp_bindefault'zhicheng',,医生表.职称
———————————————————————————————————————————— 4 insert 医生表 values('100003', '刘医生', '男', '1973-9-18', '医师 ') update 医生表 set 职称='主任医师' where 编号='100002' delete 医生表 where 编号='100003' 3. create view [医疗表视图] as select br.姓名,ys.姓名,yl.病历 from 病人表 as br join 医疗表 as yl on br.编号 yl.病人编号 join 医生表 as ys on yl.医生编号=ys.编号 4.Select br.编号, br.姓名, br.病历, yl.医生编号 from 病人表 br left join 医疗表 yl on br.编号 = yl.病人编号 5. create procedure [某医生看病人数] @医生编号 nchar(16), @人数 int output as select @人数=count(病人编号) from 病人表 where 医生编号 = @医生编号 go declare @TOTAL int execute [某医生看病人数] '100001', @TOTAL 6 select * from 医生表 where 出生日期<'1970-01-01' 7、select 编号, 姓名, 性别, 出生日期, 职称 from 医生表 where 编号 in (select 医生编号 from 医疗表) 8、create default zhicheng AS '医师' go exec sp_bindefault 'zhicheng', '医生表.职称