《SQL数据库管理与开发教程与实训》试题(H卷)一、单项选择题(每小题1分,共10分)1.下列四项中,不属于SQL2000实用程序的是()。
A.企业管理器 B.查询分析器C.服务管理器D.媒体播放器2. SQL Server安装程序创建4个系统数据库,下列哪个不是()。
A.master B.model C.pub D. msdb3. 下列哪个不是数据库对象()。
A.数据模型B.视图C.表D.用户4. 下列哪个不是sql 数据库文件的后缀。
A..mdf B..ldf C..tif D..ndf5. 在SQL中,建立表用的命令是 ( )。
A.CREATE TABLEB.CREATE RULEC.CREATE VIEWD.CREATE INDEX6. SQL语言中,条件“年龄BETWEEN 40 AND 50”表示年龄在40至50之间,且( )。
A.包括40岁和50岁B.不包括40岁和50岁C.包括40岁但不包括50岁D.包括50岁但不包括40岁7. 模式查找like '_a%',下面哪个结果是可能的A.ailiB. baiC.bbaa8. 在MS SQL Server中,用来显示数据库信息的系统存储过程是( )。
A. sp_dbhelpB. sp_dbC. sp_helpD. sp_helpdb9. SQL语言中,删除记录的命令是( )。
A. DELETEB. DROPC. CLEARD. REMOVE10. SQL的视图是从()中导出的。
A.基本表 B. 视图 C. 基本表或视图 D. 数据库二、判断题(每空1分,共10分)1. "xingming" 是SQL中的字符串常量吗?2. "11.9" 是SQL中的实型常量吗?3. 语句 select 22%4, 的执行结果是: 0 吗?4. "2005.11.09" 是SQL中的日期型常量吗?5. ¥2005.89 是SQL中的货币型常量吗?6. 语句 select 15/2 的执行结果是:7.5 吗?7. 'AB'>'CD' 比较运算的结果为真吗?8. bigint是SQL的数据类型吗?9. 设置惟一约束的列可以为空吗?10.一个表可以创建多个主键吗?三、填空题(每空1分,共20分)1. 关系数据库关系运算___________、_________和_________。
2. SQL Server 2000局部变量名字必须以_________开头,而全局变量名字必须以_________开头。
3. 语句 select ascii('D')的执行结果是: ________。
4. 语句 select upper('beautiful') , ltrim ('我心中的太阳') 的执行结果是:____________和___________。
5. 表或视图的操作权限有___________、___________、___________、___________和dri。
6. 选择运算是根据某些条件对关系做______分割;投影是根据某些条件对关系做______分割。
7. SQL Server代理主要由______、______和警报来组成。
8. 数据完整性的类型有________完整性、________完整性、________完整性和________完整性。
四、简述题(每小题5分,共10分)1. 有学生成绩表,要保证每个学生的每门课程惟一标识的话考虑使用数据完整性方法。
2. 简述数据完整性的类型以及如何确定使用哪个强制方法。
五、设计题(共50分)现有关系数据库如下:数据库名:教师数据库教师表(编号 char(6),姓名,性别,民族,职称,身份证号)课程表(课号 char(6),名称)任课表(ID,教师编号,课号,课时数)用SQL语言实现下列功能的sql语句代码:1. 创建上述三表的建库、建表代码(14分);要求使用:主键(教师表.编号,课程表.课号)、外键(任课表.教师编号,任课表.课号)、默认(民族)、非空(民族,姓名)、唯一(身份证号)、检查(性别、课时数),自动编号(ID)2. 将下列课程信息添加到课程表的代码(6分)课号课程名称100001 SQL Server数据库100002 数据结构100003 VB程序设计修改课号为100003的课程名称:Visual Basic程序设计删除课号为100003的课程信息3. 写出创建[任课表视图](教师编号,姓名,课号,课程名称,课时数)的代码;(4分)4. 写出创建[某门课任课教师]内嵌表值函数以及检索的代码;(6分)检索:所有代'SQL Server数据库'这门课程的老师姓名;5. 写出创建[统计课时数]:输出最大课时数、最低课时数、平均课时的存储过程以及执行代码;(6分)6.写出创建:计算某教师代课总课时,并将值返回的存储过程以及执行代码。
(6分)执行:计算“郭老师”的总课时。
(6分)7. 检索有一门或一门以上课程课时数大于90的所有教师的信息,包括编号、姓名。
(4分)8. 建一个规则,并将其绑定到教师表的职称列上,规定取值为('教授','副教授','讲师', '助教')之一。
(4分)《SQL数据库管理与开发教程与实训》试题(H卷)参考答案一、1.D 2.C 3.A 4.C 5.A 6.A 7.B 8.D 9.A 10.C二、1. N 2.N 3.N 4.N 5.N 6.N 7. N 8.Y 9.Y 10.N三、1. 选择、投影、连接2. @、@@3. 684. BEAUTIFAL、我心中的太阳5. select、insert、update、delete6. 水平、垂直7. 作业、操作员8. 实体、域、参照、用户自定义四、简述题1. 将每个学生的学号和课程号定义为复合主键这样才能保证每个学生的每门课程惟一。
2. 要点:(1)域完整性:使用DEFAULT (默认值)、DEFAULT(默认技术)、CHECK(检查)、RULE (规则技术)的方法指定某列可接受值的范围或模式(2)实体完整性:使用 PRIMARY KEY(主键)、UNIQUE(惟一键)、IDENTITY(标识列)来确保行的惟一性(3)参照完整性:使用 FOREIGN KEY(外键)保证列与参照列的一致性五、设计题1.create database [教师数据库] --(2分)use [教师数据库]gocreate table 教师表 --(6分)([编号] char(6) primary key,[姓名] nchar(4) not null,[性别] nchar(1) check([性别] in ('男', '女')),[民族] nchar(8) default '汉族' not null,[职称] nchar(12),[身份证号] char(18) unique)create table 课程表 --(2分)([课号] char(6) primary key,[名称] char(40) not null)create table 任课表 --(4分)(ID IDENTITY(1, 1),[教师编号] char(6) references 学生表(学号),[课号] char(6) references 课程表(课号),[课时数] integer check([课时数] between 0 and 200))2.insert 课程表 values('100001', 'SQL Server数据库')insert 课程表 values('100002', '数据结构')insert 课程表 values('100003', 'VB程序设计')update 课程表 set 名称='Visual Basic程序设计' where 课号='100003' delete 课程表 where 课号='100003'3.create view [任课表视图] asselect 教师编号,姓名,课号, 课程名称,课时数 from 教师表,任课表where 教师表.编号=任课表.教师编号4.create function [某门课任课教师](@课程名 varchar(15))returns table asreturn (select 课程名称, 课时数, 教师姓名=姓名 from 任课表视图where 课程名=@课程名)goselect * from [某门课任课教师]('SQL Server数据库')5.create procedure [统计课时数]asselect 最大课时数=max(课时) ,最小课时数=min(课时),平均课时数=avg(课时) from 任课表goexecute [统计课时]6.create procedure [统计课时]@教师名 nchar(16),asbegindeclare @总课时 intselect @总课时=sum (课时) from 任课表视图where 姓名 = @教师名endgoexecute [统计课时] '郭老师'7.select 编号, 姓名 from 教师表where编号 in (select distinct 教师编号 from 任课表 where课时数>=90) 8.create rule zhicheng _ruleas @zhicheng in ('教授','副教授','讲师', '助教')gosp_bindrule zhicheng_rule, '教师表.职称'。