《SQL Server2008数据库技术应用》试卷4 一、 单项选择题(每小题1分,共10分) 1.下列四项中,不属于数据库特点的是(C)。 A.数据共享 B.数据完整性 C数据元金很高 D.据独立性启 2.目前(A)数据库系统已逐渐淘汰了网状数据库和层次数据库,成为当今最为流行 的商用数据库系统 A.关系 B.面向对象 C.分布 3.数据库设计中的概念结构设计的主要工具是(B)。 A.数据模型 B.E一R模型C.新奥尔良模型D.概念模型 4.(A)是位于用户与操作系统之间的一层数据管理软件,它属于系统软件,它为用 户或应用程序提供访问数据库的方法。数据库在建立、使用和维护时由其统一管理、 统一控制。 A.DBMS B.DB C.DBS D.DBA 5.在SqL中,建立视图用的命令是(C)。 A.CREATE SCHEMA B.CREATE TABLE C CREATE VIEW D CREATE INDEX 6.SQL语言中,条件“年龄BETWEEN20AND30”表示年龄在20至30之间,且(A) A.包括20岁和30岁 B.不包括20岁和30岁 C句括20岁但不包括30岁 D.包括30岁但不包括20岁 &.在MS SQL Server中,用来显示数据库信息的系统存储过程是(D). A.sp_dbhelp B.sp dh C.sp help D.sp_helpdb 9.SQL语言中 删除 表的命令是(B A.DELETE B.DROP C.CLEAR D.REMOVE 10.SQL的视图是从(C)中导出的。 A.基本表 B.视图 C.基本表或视图D.数据库 二、判断题(每空1分,共10分) ”在那遥远的地方 是L中的字符串常量吗? N 11.9”是SQL中的实型常量吗? 3.语句select16%4,的执行结果是:0吗? 4.“2005.11.09”是$QL中的日期型常量吗? N 5.¥2005.89是SQL中的货币型常量吗? N 6.语句select15/2的执行结果是:7.5吗? N 李白>甫:比较运算的结果为真吗? Y 8.在事务中包含create databasei语句吗? 9。创建唯一性索引的列可以有一些重复的值? N l0.固定数据库角色:db datawriter的成员删除本数据库内任何表中的数据吗?Y 三、填空题(每空1分,共20分) 数据库系统具有数据 外模式 模式和内模式三级模式结构, 2.SQLServer2008局部变量名字必须以0开头,而全局变量名字必须以0 开头。 3.语句select ascii(C),char(68),len0你是BigTiger )的执行结果是:
———————————————————————————————————————————— 1 《SQL Server 2008 数据库技术应用》试卷 4 一、单项选择题(每小题 1 分,共 10 分) 1.下列四项中,不属于数据库特点的是( C )。 A.数据共享 B.数据完整性 C. 数据冗余很高 D.数据独立性高 2. 目前( A )数据库系统已逐渐淘汰了网状数据库和层次数据库,成为当今最为流行 的商用数据库系统。 A.关系 B.面向对象 C.分布 3. 数据库设计中的概念结构设计的主要工具是( B )。 A.数据模型 B.E—R 模型 C.新奥尔良模型 D.概念模型 4. ( A )是位于用户与操作系统之间的一层数据管理软件,它属于系统软件,它为用 户或应用程序提供访问数据库的方法。数据库在建立、使用和维护时由其统一管理、 统一控制。 A.DBMS B.DB C.DBS D.DBA 5. 在 SQL 中,建立视图用的命令是 ( C )。 A.CREATE SCHEMA B.CREATE TABLE C.CREATE VIEW D.CREATE INDEX 6. SQL 语言中,条件“年龄 BETWEEN 20 AND 30”表示年龄在 20 至 30 之间,且( A )。 A.包括 20 岁和 30 岁 B.不包括 20 岁和 30 岁 C.包括 20 岁但不包括 30 岁 D.包括 30 岁但不包括 20 岁 8. 在 MS SQL Server 中,用来显示数据库信息的系统存储过程是( D )。 A. sp_dbhelp B. sp_db C. sp_help D. sp_helpdb 9. SQL 语言中,删除一个表的命令是( B )。 A. DELETE B. DROP C. CLEAR D. REMOVE 10. SQL 的视图是从( C )中导出的。 A.基本表 B. 视图 C. 基本表或视图 D. 数据库 二、判断题(每空 1 分,共 10 分) 1. "在那遥远的地方" 是SQL中的字符串常量吗? N 2. "11.9" 是SQL中的实型常量吗? N 3. 语句 select 16%4, 的执行结果是: 0 吗? Y 4. "2005.11.09" 是SQL中的日期型常量吗? N 5. ¥2005.89 是SQL中的货币型常量吗? N 6. 语句 select 15/2 的执行结果是: 7.5 吗? N 7. '李白'>'杜甫' 比较运算的结果为真吗? Y 8. 在事务中包含create database语句吗? N 9. 创建唯一性索引的列可以有一些重复的值? N 10.固定数据库角色:db_datawriter 的成员删除本数据库内任何表中的数据吗? Y 三、填空题(每空 1 分,共 20 分) 1. 数据库系统具有数据的___外模式_____、___模式____和__内模式___三级模式结构。 2. SQL Server 2008局部变量名字必须以___@___开头,而全局变量名字必须以___@@_____ 开头。 3. 语句 select ascii('C'), char(68), len(' 你 是BigTiger ') 的执行结果是:
67 D和12 4.语句select BEAUTIFU 我心中的阳 per(化eautiful) 〔我心中的太阳)的执行结果是 5。关系运算主要有选择 孜 连接 6。选择运算是根据某些条件对关系做水平分制:投影是根据某些条件对关系做 垂直分割。 7.索引的类型主要有 聚簇索引」 和非聚簇索引 在sqL rver 200 数据库 象包括数据 视图 存储过程、触 默认和 用户自定义的数据类型等 四、简述题(每小题5分,共10分) 1.简述使用游标的步骤。 (1)声明游标:declare游标名cursor for selecti语句: (2)打开游标: (3)处理数据 fetch delete update (4)关闭游标:close游标名: (5)释放游标:deallocate游标名: 2.简述SQL Server2000的安全性管理机制,涉及登录账号、用户、角色以及权限分配。 1.计算机的连接 2 erve r服务器登录(登录、固定服务器角色》 3.数据库的访问(用户/角色:固定/自定义数据库角色) 4.数据表(视图)的访问(select insert update delete) 5.存储过程/内嵌表值函数的访间(execute/,select) 6.数据表(视图)中列(字段)的访问(select update) 五、设计题(供50分 现有关系数据库如下 数据库名:学生成绩数据库 学生表(学号char(6),姓名,性别,民族,身份证号) 里程表(课号char(6),名称) 成绩表(D,学号,课号,分数 用S0L语言实现下列功能的sql语句代码 1.创建数据库[学生成绩数据库]代码(2分): 2.创建[课程表]代码(2分): 课程表(课号char(6),名称) 要求使用:主键(课号)、非空(名称) 3.创建[学生表]代码(6分)》 学生表(学号char(6),姓名,性别,民族,身份证号) 要求使用:主键(学号)、默认(民族)、非空(民族,姓名)、唯一(身份证号)、检查(性 ) 4.创建「成绩表]代码(4分) 成绩表(D,学号,课号 分数) 要求使用:主键(课号)、外健(成绩表.学号,成绩表课号)、检查(分数),自动编号(D) 5.将下列课程信总添加到课程表的代码(8分) 课号 课程名称 100001 大学语文
———————————————————————————————————————————— 2 __67____、____D_____和____12_____。 4. 语句 select upper('beautiful') , ltrim (' 我心中的太阳') 的执行结果是: ___BEAUTIFUL_________和___我心中的太阳________。 5. 关系运算主要有___选择_____、___投影_____、___连接_____。 6. 选择运算是根据某些条件对关系做__水平___分割;投影是根据某些条件对关系做__ 垂直____分割。 7. 索引的类型主要有_ 聚簇索引 _和_ 非聚簇索引 __。 8. 在 SQL Server 2008 中,数据库对象包括数据表、___视图___、___存储过程___、触 发器、规则、默认和用户自定义的数据类型等。 四、简述题(每小题 5 分,共 10 分) 1. 简述使用游标的步骤。 (1) 声明游标:declare 游标名 cursor for select语句; (2) 打开游标:open 游标名; (3) 处理数据: fetch delete update (4) 关闭游标:close 游标名; (5) 释放游标:deallocate 游标名; 2. 简述 SQL Server 2000 的安全性管理机制,涉及登录账号、用户、角色以及权限分配。 1. 计算机的连接 2. SQL Server服务器登录(登录、固定服务器角色) 3. 数据库的访问(用户/角色:固定/自定义数据库角色) 4. 数据表(视图)的访问(select insert update delete) 5. 存储过程/内嵌表值函数的访问(execute/select) 6. 数据表(视图)中列(字段)的访问(select update) 五、设计题(共 50 分) 现有关系数据库如下: 数据库名:学生成绩数据库 学生表(学号 char(6),姓名,性别,民族,身份证号) 课程表(课号 char(6),名称) 成绩表(ID,学号,课号,分数) 用 SQL 语言实现下列功能的 sql 语句代码: 1. 创建数据库[学生成绩数据库]代码(2 分); 2. 创建[课程表]代码(2 分); 课程表(课号 char(6),名称) 要求使用:主键(课号)、非空(名称) 3. 创建[学生表]代码(6 分); 学生表(学号 char(6),姓名,性别,民族,身份证号) 要求使用:主键(学号)、默认(民族)、非空(民族,姓名)、唯一(身份证号)、检查(性 别) 4. 创建[成绩表]代码(4 分); 成绩表(ID,学号,课号,分数) 要求使用:主键(课号)、外键(成绩表.学号,成绩表.课号)、检查(分数),自动编号(ID) 5. 将下列课程信息添加到课程表的代码(8 分) 课号 课程名称 100001 大学语文
100002 大学茧语 100003 西班牙语 修改课号为100002的课程名称:实用英语 删除课号为100003的课程信总 6.写出创建:成绩表视图(学号,姓名,课号,课程名称,分数)的代码:(4分) 7.写出创建:某门课程成绩内嵌表值函数以及检索的代码:(6分) 检索:所有修 实用英话 这门学生的成 8。写出创建:某门课程高低均分计算某门课程成绩最高分、最低分、平均分存储过稻 以及执行的代码:(6分) 执行:所有修实用英语这门学生的最高分、最低分、平均分: 9。检索姓李的女同学的情况:姓名、性别、民族。(2分) 索有一门或一门以上课程成绩大于等于90分的所有学生的信总,包括学号、姓名 4分 11. 设置一SQL身份验证的账户:登录名:U领导,密码:888,数据库用户名:U读者 权限:可查询查询本数据库中所有表、视图、内嵌表值函数的数据。请写出账户、权限 设置的TSQL脚本。(6分) L.create database[学生成绩数据库] o use[学生成绩数据库] Go 2.create tab1e学生表 《学号】char(6)pria [姓名]nchar(④ not null [性别]nchar()check([性别]in('男','女) [民族]nchar(8)default'汉族'not null, [身份证号]char(18)unique) create table课程表 ([课号]char(6)primary key,, [名称]char(4o)not nul1) 4.create table成缱表 (ID integer IDENTITY(1,1) [学号]char(6)references学生表(学号) [课号】char(6)references课程表(课号), [分数]integer check([分数]between0and10o) 5.insert课程表values100001','大学语文) insert课程表values(100002' ,大学英语 insert课程表va1uesC100003','西班牙语) updatei课程表set名称-实用英语'here课号-'100002 deletei课程表,here课号-100003 3
———————————————————————————————————————————— 3 100002 大学英语 100003 西班牙语 修改 课号为 100002 的课程名称:实用英语 删除 课号为 100003 的课程信息 6. 写出创建:成绩表视图(学号,姓名,课号,课程名称,分数)的代码;(4 分) 7. 写出创建:某门课程成绩 内嵌表值函数以及检索的代码;(6 分) 检索:所有修 实用英语 这门学生的成绩; 8. 写出创建:某门课程高低均分 计算某门课程成绩最高分、最低分、平均分 存储过程 以及执行的代码;(6 分) 执行:所有修 实用英语 这门学生的最高分、最低分、平均分; 9. 检索姓李的女同学的情况:姓名、性别、民族。(2 分) 10. 检索有一门或一门以上课程成绩大于等于 90 分的所有学生的信息,包括学号、姓名。 (4 分) 11. 设置一 SQL 身份验证的账户:登录名:U 领导,密码:888,数据库用户名:U 读者, 权限:可查询查询本数据库中所有表、视图、内嵌表值函数的数据。请写出账户、权限 设置的 T_SQL 脚本。(6 分) 1. create database [学生成绩数据库] go use [学生成绩数据库] Go 2. create table 学生表 ([学号] char(6) primary key, [姓名] nchar(4) not null, [性别] nchar(1) check([性别] in ('男', '女')), [民族] nchar(8) default '汉族' not null, [身份证号] char(18) unique) 3. create table 课程表 ([课号] char(6) primary key, [名称] char(40) not null) 4. create table 成绩表 (ID integer IDENTITY(1, 1), [学号] char(6) references 学生表(学号), [课号] char(6) references 课程表(课号), [分数] integer check([分数] between 0 and 100)) 5. insert 课程表 values('100001', '大学语文') insert 课程表 values('100002', '大学英语') insert 课程表 values('100003', '西班牙语') update课程表 set 名称='实用英语' where 课号='100002' delete课程表 where 课号='100003
6.create view[成缔表视图]as 8ele©t成绩表.学号,姓名,成绩表.课号,名称课程名称,分数 from成绩表,学生表,课程表 here成绩表.学号-学生表.学号 and成绩表.课号-课程表.课号 create view[成绩表视图]as selec 成绩表学号,姓名,成绩表课号,名称课程名称,分数 from成绩表join学生表on成绩表.学号-学生表.学号 join课程表on成绩表.课号-课程表.课号 7.create function[某门课程成绩](e课程名varchar(4o) returns tablea return (sele 学号,姓名,课程名称,分数f红o成绩表视图 ■here课程名称课程名) create function[某门课程成绩](e课程名varchar(4o) reture table as return ctfrom成绩表视图 here课程名称-课程名) select*from[某门课程成绩]C实用英语') create procedure[某门课程高低均分】 ●课程名varchar(4o)as select课程名称,最高分-ax(分数)、最低分min(分数)、平均分=avg(分数) from成绩表视图 here课程名称=e课程名 execute[某门课程高低均分]·实用英语 9.select姓名,性别,民族from学生表here姓名l1ke'李第and性别-女 10.select学号,姓名from学生表here学号in(select distinct学号from成绩表 re分数>=90) 11 se[学生成绩数据库] exec sp_addlogin’U领导',NULL,'学生成绩数据库','简体中文 exec sp_password NULL,'888,'U领导' exec sp_g antdbaccessU领导',U读者 exec sp_addrolemember'db_datareader,'U读者
———————————————————————————————————————————— 4 6. create view [成绩表视图] as select 成绩表.学号,姓名,成绩表.课号,名称 课程名称,分数 from 成绩表,学生表,课程表 where 成绩表.学号=学生表.学号 and 成绩表.课号=课程表.课号 create view [成绩表视图] as select 成绩表.学号,姓名,成绩表.课号,名称 课程名称,分数 from 成绩表 join 学生表 on 成绩表.学号=学生表.学号 join 课程表 on 成绩表.课号=课程表.课号 7. create function [某门课程成绩](@课程名 varchar(40)) returns table as return (select 学号,姓名,课程名称,分数 from 成绩表视图 where 课程名称=@课程名) create function [某门课程成绩](@课程名 varchar(40)) returns table as return (select * from 成绩表视图 where 课程名称=@课程名) select * from [某门课程成绩]('实用英语') 8. create procedure [某门课程高低均分] @课程名 varchar(40) as select 课程名称, 最高分=max(分数)、最低分=min(分数)、平均分=avg(分数) from 成绩表视图 where 课程名称 = @课程名 execute [某门课程高低均分] '实用英语' 9. select 姓名, 性别, 民族 from 学生表 where 姓名 like '李%' and 性别='女' 10. select 学号, 姓名 from 学生表 where学号 in (select distinct 学号 from 成绩表 where分数>=90) 11. use [学生成绩数据库] exec sp_addlogin 'U领导', NULL, '学生成绩数据库', '简体中文' exec sp_password NULL, '888', 'U领导' exec sp_grantdbaccess 'U领导', 'U读者' exec sp_addrolemember 'db_datareader', 'U读者