《SQL数据库技术》综合训练自测试题(C卷)
一、单项选择题(每小题1分,共10分)
1.下列四项中,不属于数据库特点的是( )。
A.数据共享 B.数据完整性
C. 数据冗余很高 D.数据独立性高
2. 目前( )数据库系统已逐渐淘汰了网状数据库和层次数据库,成为当今最为流行的商用数据库系统。
A.关系 B.面向对象 C.分布
3. 数据库设计中的概念结构设计的主要工具是( )。
A.数据模型 B.E—R模型 C.新奥尔良模型 D.概念模型
4. ( )是位于用户与操作系统之间的一层数据管理软件,它属于系统软件,它为用户或应用程序提供访问数据库的方法。数据库在建立、使用和维护时由其统一管理、统一控制。
A.DBMS B.DB C.DBS D.DBA
5. 在SQL中,建立视图用的命令是 ( )。
A.CREATE SCHEMA B.CREATETABLE
C.CREATE VIEW D.CREATEINDEX
6. SQL语言中,条件“年龄BETWEEN 20 AND 30”表示年龄在20至30之间,且( )。
A.包括20岁和30岁 B.不包括20岁和30岁
C.包括20岁但不包括30岁 D.包括30岁但不包括20岁
8. 在MSSQL Server中,用来显示数据库信息的系统存储过程是( )。
A. sp_dbhelp B.sp_db C. sp_help D. sp_helpdb
9. SQL语言中,删除一个表的命令是( )。
A. DELETE B.DROP C. CLEAR D. REMOVE
10. SQL的视图是从( )中导出的。
A.基本表 B.视图 C. 基本表或视图 D. 数据库
二、判断题(每空1分,共10分)
1. "在那遥远的地方" 是SQL中的字符串常量吗?
2. "11.9"是SQL中的实型常量吗?
3. 语句 select 16%4, 的执行结果是: 0 吗?
4. "2005.11.09"是SQL中的日期型常量吗?
5. ¥2005.89 是SQL中的货币型常量吗?
6. 语句 select 15/2 的执行结果是: 7.5 吗?
7. '李白'>'杜甫' 比较运算的结果为真吗?
8. 在事务中包含create database语句吗?
9. 创建唯一性索引的列可以有一些重复的值?
10.固定数据库角色:db_datawriter 的成员删除本数据库内任何表中的数据吗?
三、填空题(每空1分,共20分)
1. 数据库系统具有数据的___________、_________和_________三级模式结构。
2. SQL Server 局部变量名字必须以_________开头,而全局变量名字必须以_________开头。
3. 语句 select ascii('C'), char(68), len('你 是BigTiger ') 的执行结果是: _________、_________和_________。
4. 语句 select upper('beautiful') , ltrim (' 我心中的太阳') 的执行结果是: ____________和___________。
5. 关系运算主要有________、________、________。
6. 选择运算是根据某些条件对关系做______分割;投影是根据某些条件对关系做______分割。
7. 索引的类型主要有_ _和_ __。
8. 在SQLServer 中,数据库对象包括数据表、______、______、触发器、规则、默认和用户自定义的数据类型等。
四、简述题(每小题5分,共10分)
1. 简述使用游标的步骤。
2. 简述SQL Server 的安全性管理机制,涉及登录账号、用户、角色以及权限分配。
五、设计题(共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分)
10. 检索有一门或一门以上课程成绩大于等于90分的所有学生的信息,包括学号、姓名。(4分)
11. 设置一SQL身份验证的账户:登录名:U领导,密码:888,数据库用户名:U读者,权限:可查询查询本数据库中所有表、视图、内嵌表值函数的数据。请写出账户、权限设置的T_SQL脚本。(6分)
《SQL数据库管理与开发教程与实训》试题(C卷)参考答案
一、1.C 2.A 3. B 4.A 5.C 6.A 7. 8.D 9.B 10.C
二、1. N 2.N 3.Y 4.N 5.N 6.N 7. Y 8.N 9.N 10.Y
三、1. 外模式、模式、内模式。
2. @,@@
3. 67, D, 12
4. BEAUTIFAL, 我心中的太阳
5. 选择、投影、连接。
6. 水平, 垂直
7. 聚簇索引 非聚簇索引
8. 视图、存储过程
四、简述题
1. 简述使用游标的步骤。
(1) 声明游标:declare 游标名 cursor for select语句;
(2) 打开游标:open 游标名;
(3) 处理数据: fetch delete update
(4) 关闭游标:close 游标名;
(5) 释放游标:deallocate 游标名;
2. 要点:
1. 计算机的连接
2. SQL Server服务器登录(登录、固定服务器角色)
3. 数据库的访问(用户/角色:固定/自定义数据库角色)
4. 数据表(视图)的访问(select insert update delete)
5. 存储过程/内嵌表值函数的访问(execute/select)
6. 数据表(视图)中列(字段)的访问(select update)
五、设计题
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
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 课程名称=@课程名)
createfunction [某门课程成绩](@课程名varchar(40))
returns table as
return (select * from 成绩表视图
where 课程名称=@课程名)
select* from [某门课程成绩]('实用英语')
8. createprocedure [某门课程高低均分]
@课程名 varchar(40) as
select 课程名称, 最高分=max(分数)、最低分=min(分数)、平均分=avg(分数)
from 成绩表视图
where 课程名称 = @课程名 GROUP BY 课程名称
execute [某门课程高低均分] '实用英语'
9. select姓名, 性别, 民族 from 学生表where 姓名 like '李%' and 性别='女'
10. select 学号, 姓名 from 学生表where学号 in (select distinct 学号 from 成绩表where分数>=90)
11.
use [学生成绩数据库]
execsp_addlogin 'U领导', NULL, '学生成绩数据库', '简体中文'
execsp_password NULL, '888', 'U领导'
execsp_grantdbaccess 'U领导', 'U读者'
execsp_addrolemember 'db_datareader', 'U读者'
use [学生成绩数据库]
execsp_addlogin 'U领导', '888', '学生成绩数据库'
execsp_grantdbaccess 'U领导', 'U读者'
execsp_addrolemember 'db_datareader', 'U读者'