当前位置:文档之家› SQL数据库管理与开发》试题及习题参考答案I

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

《SQL数据库管理与开发教程与实训》试题(I卷)一、单项选择题(每小题1分,共10分)1. 下列四项中说法不正确的是( )A.数据库减少了数据冗余B.数据库中的数据可以共享C.数据库避免了一切数据的重复D.数据库具有较高的数据独立性2. 下列哪个不是SQL Server服务()。

A.SQL Server B.SQL Server AgentC.MS DTC D. PWS3. 下列哪个不是数据库对象()。

A.数据类型 B.规则 C.默认 D.用户4. SQL Server对象的完整名称不包括下面哪个()。

A.服务器名 B.数据库名C.对象名 D.文件夹名5. 数据定义语言的缩写词为 ( )。

A.DDLB.DCLC.DMLD.DBL6. SQL语言中,条件表示年龄在40至50之间的表达式为 ( )。

A. IN (40,50)B. BETWEEN 40 AND 50C. BETWEEN 40 OR 50D. BETWEEN 40 ,507.表示职称为副教授同时性别为男的表达式为( )A. 职称='副教授' OR 性别='男'B. 职称='副教授' AND 性别='男'C. BETWEEN '副教授' AND '男'D. IN ('副教授','男')8. 下面哪个不是SQL Server 的合法标识符( )。

A. a12B. 12aC. @a12D. #qq9. SQL语言中,不是逻辑运算符号的( )。

A. ANDB. NOTC. ORD. XOR10.下面哪个函数是属于字符串运算的()。

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、createdatabase、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 医师修改编号为100002的医生职称为‘主任医师’删除编号为100003的医生信息 (8分)3. 写出创建:医疗表视图(医生编号,姓名,病人姓名,病历)的代码;(4分)4. 写出所有病人编号、姓名、病历、以及病人所对应的医生编号的查询语句;(4分)5. 写出创建:输出某医生(根据医生编号即可)看病人数存储过程以及执行过程(要求输入医生姓名的参数,输出病人数)(6分)。

6. 写出查询1970年以前出生的医生(4分)。

7. 检索有病人的医生信息。

(4分)8. 创建一个默认,并将其绑定到医生表的成绩职称列上,默认值为“医师”。

(4分)《SQL数据库管理与开发教程与实训》试题(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-017. 四舍五入8. '%娟%'9. table、view、procedure、function 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无条件的终止一个查询、存储过程或批处理五、设计题1. create database [医院数据库]use [医院数据库]gocreate 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 [医疗表视图] asselect br.姓名,ys.姓名,yl.病历 from 病人表 as br join 医疗表 as ylon br.编号yl.病人编号join 医生表 as yson yl.医生编号=ys.编号4.Select br.编号, br.姓名, br.病历, yl.医生编号from 病人表 br left join 医疗表 ylon br.编号 = yl.病人编号5.create procedure [某医生看病人数]@医生编号 nchar(16), @人数 int outputasselect @人数=count(病人编号)from 病人表where 医生编号 = @医生编号godeclare @TOTAL intexecute [某医生看病人数] '100001', @TOTAL6 select * from 医生表where 出生日期<'1970-01-01'7. select 编号, 姓名, 性别, 出生日期, 职称 from 医生表where 编号 in (select 医生编号 from 医疗表)8. create default zhicheng AS '医师'goexec sp_bindefault 'zhicheng', '医生表.职称'。

相关主题