当前位置: 首页 > >

SQL数据库管理与开发》试题及*题参考答案I

发布时间:

《SQL 数据库管理与开发教程与实训》试题(I 卷) 数据库管理与开发教程与实训》试题(I
一、单项选择题(每小题 1 分,共 10 分) 单项选择题(
1. 下列四项中说法不正确的是( ) A.数据库减少了数据冗余 B.数据库中的数据可以共享 C.数据库避免了一切数据的重复 D.数据库具有较高的数据独立性 2. 下列哪个不是 SQL Server 服务( )。 A.SQL Server B.SQL Server AgentC.MS DTC D. PWS 3. 下列哪个不是数据库对象( )。 A.数据类型 B.规则 C.默认 D.用户 4. SQL Server 对象的完整名称不包括下面哪个( )。 A.服务器名 B.数据库名 C.对象名 D.文件夹名 5. 数据定义语言的缩写词为 ( )。 A.DDL B.DCL C.DML D.DBL 6. SQL 语言中,条件表示年龄在 40 至 50 之间的表达式为 ( )。 A. IN (40,50) B. BETWEEN 40 AND 50 C. BETWEEN 40 OR 50 D. BETWEEN 40 ,50 7.表示职称为副教授同时性别为男的表达式为( ) A. 职称='副教授' OR 性别='男' B. 职称='副教授' AND 性别='男' C. BETWEEN '副教授' AND '男' D. IN ('副教授','男') 8. 下面哪个不是 SQL Server 的合法标识符( )。 A. a12 B. 12a C. @a12 D. #qq 9. SQL 语言中,不是逻辑运算符号的( )。 A. AND B. NOT C. OR D. XOR 10.下面哪个函数是属于字符串运算的( )。 A.ABS B. SIN C. STR D. ROUND

二、判断题(每空 1 分,共 10 分) 判断题(
1. 视图和表是完全一样的? 2. SQL Server 允许用户自定义类型? 3. 惟一键就是主键?4. SQL Server 不允许字段名为汉字? 5. ¥2005.89 是 SQL 中的货 币型常量吗? 6. 语句 select 15%2 的执行结果是: 7.5 吗? 7. 作为字符串型数据'李白'是排在'杜甫' 的前面吗?8. smallint 是 SQL 的数据类型吗? 9. 设置惟一约束的列不允许为空?10.主键可以是复合键吗?

三、填空题(每空 1 分,共 20 分) 填空题(
1. 创建、修改和删除表命令分别是 create table、_________ table 和_________ table。 2. SQL Server 2000 以_________开头的标识符,表示临时表或过程;局部变量名字必须以 _________开头,而全局变量名字必须以_________开头。 3. 语句 select char(65), len('我们快放假了.')的执行结果是________、_______。 4. 语句 select lower('beautiful'), rtrim (' 我心中的太阳 ') 的执行结果是: ____________和___________。 5. left join 运算是_____________。 6. SELECT DATEADD(day, 10, '2005-12-22')结果是_____________。 7. ROUND( )函数的是_____________函数。 8. 检索姓名字段中含有'娟'的表达式为 姓名 like 。 9. 语句 权限是 指用 户能否 当前 数据 库上 执行 backup database、 backup log 、create database、 create _________、 create _________、 create _________、 create _________、 create rule、create default 语句。 10.SQL Server 复制把服务器分为______服务器、______服务器和______服务器三种。

四、简述题(每小题 5 分,共 10 分) 简述题(
1. 视图的好处是什么?2. 流程控制语句包括哪些语句,他们各自的作用是什么?

五、设计题(共 50 分) 设计题(

现有关系数据库如下: 数据库名:医院数据库 医生表(编号,姓名,性别,出生日期,职称) 病人表(编号,姓名,性别,民族,身份证号) 病历表(ID,病人编号,医生编号,病历描述) 用 SQL 语言实现下列功能的 sql 语句代码: 1. 创建上述三表的建库、建表代码; 要求使用:主键(师医生表.编号,病人表.课号)、外键(病历表.医生编号,病历表.病人 课号)、非空(职称,姓名)、检查(性别),自动编号(ID) (16 分) 2. 将下列医生信息添加到医生表的代码
编号 姓名 性别 出生日期 100001 杜医生 男 1963-5-18 100002 郭医生 女 1950-7-26 100003 刘医生 男 1973-9-18 职称 副主任医师 副主任医师 医师

3. 4.

7. 8.

修改 编号为 100002 的医生职称为‘主任医师’ 删除 编号为 100003 的医生信息 (8 分) 写出创建:医疗表视图(医生编号,姓名,病人姓名,病历)的代码;(4 分) 写出所有病人编号、姓名、病历、以及病人所对应的医生编号的查询语句;(4 分) 5. 写出创建: 输出某医生(根据医生编号即可)看病人数存储过程以及执行过程(要 求输入医生姓名的参数,输出病人数)(6 分)。 6. 写出查询 1970 年以前出生的医生(4 分)。 检索有病人的医生信息。(4 分) 创建一个默认,并将其绑定到医生表的成绩职称列上,默认值为“医师”。(4 分)

《SQL 数据库管理与开发教程与实训》试题(I 卷)参考答案 数据库管理与开发教程与实训》试题(I
一、1.C 2.D 3. A 4.D 5.A 6.B 7.B 8.B 9.D 10.C 二、1. N 2.Y 3.N 4.N 5.N 6.N 7. N 8.Y 9.N 10.Y 三、1. alter、drop 2. #、@、@@ 3. A、7 4. beautiful、
5. 左外连接 6. 2006-01-01 7. 四舍五入 8. '%娟%' 9. table、view、procedure、function 10.发布、分发、订阅 我心中的太阳

四、简述题
(1) 为用户集中需要的数据,简化了数据的用户操作; (2) 对用户隐藏了数据库设计的复杂性; (3) 简化用户权限的管理 2. 要点: IF… 1. IF…ELSE 是条件判断语句 2. BEGIN …END 能将多个 SQL 语句组合成一个语句块,并视为一个单元处理 语句组合成一个语句块, 多情况语句, 3. CASE 多情况语句,将其中一个符合条件的结果表达式返回 4. WHILE…COUNTINUE…BREAK 设置循环语句,COUNTINUE 可以终止本次循环,开始 WHILE…COUNTINUE… 设置循环语句, 可以终止本次循环, 下一次循环, 中断循环, 下一次循环,BREAK 中断循环,跳出循环外 5. GOTO 可以使程序跳到指定的标有标识符的位置处继续执行 语句、 6. WAITFOR 暂时停止执行 SQL 语句、语句块或者存储过程 7. RETURN 无条件的终止一个查询、存储过程或批处理 无条件的终止一个查询、 1.

五、设计题 设计题
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 医生表 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', '医生表.职称'




友情链接: