《SQL数据库技术》综合训练自测试题(A)
一、单项选择题(每小题1分,共10分)
1.下列四项中,不属于数据库特点的是( )。
A.数据共享 B.数据完整性
C.数据冗余很高 D.数据独立性高
2. 反映现实世界中实体及实体间联系的信息模型是( )。
A.关系模型 B.层次模型
C.网状模型 D.E-R模型
3.SQL Server安装程序创建4个系统数据库,下列哪个不是( )系统数据库。
A.master B.model
C.pub D.msdb
4.( )是位于用户与操作系统之间的一层数据管理软件,它属于系统软件,它为用户或应用程序提供访问数据库的方法。数据库在建立、使用和维护时由其统一管理、统一控制。
A.DBMS B.DB
C.DBS D.DBA
5. 在SQL中,建立表用的命令是 ( )。
A.CREATE SCHEMA B.CREATE TABLE
C.CREATE VIEW D.CREATE INDEX
6.SQL语言中,条件年龄 BETWEEN 15 AND 35表示年龄在15至35之间,且( )。
A.包括15岁和35岁
B.不包括15岁和35岁
C.包括15岁但不包括35岁
D.包括35岁但不包括15岁
7.下列四项中,不正确的提法是( )。
A.SQL语言是关系数据库的国际标准语言
B.SQL语言具有数据定义、查询、操纵和控制功能
C.SQL语言可以自动实现关系数据库的规范化
D.SQL语言称为结构查询语言
8.在MS SQL 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, 的执行结果是: 4 吗?
4.2005.11.09 是SQL中的日期型常量吗?
5.¥2005.89 是SQL中的货币型常量吗?
6.select 25/2 的执行结果是: 12.5 吗?
7.'岳飞'>'文天祥' 比较运算的结果为真吗?
8.一个表可以创建多个主键吗?
9.创建唯一性索引的列可以有一些重复的值?
10.固定数据库角色:db_datarader 的成员能修改本数据库内表中的数据吗?
三、填空题(每空1分,共20分)
1.数据库系统具有数据的_________、_________和内模式三级模式结构。
2.SQL Server 局部变量名字必须以_________开头,而全局变量名字必须以_________开头。
3.语句 select ascii('D'), char(67) 的执行结果是:_________和_________。
4.语句 select lower('Beautiful') , rtrim('我心中的太阳 ') 的执行结果是: ____________和___________。
5.选择运算是根据某些条件对关系做______分割;投影是根据某些条件对关系做______分割。
6.关系运算主要有________、________和连接。
7.完整性约束包括______完整性、______完整性、参照完整性和用户定义完整性。
8.在SQL Server中,数据库对象包括______、______、触发器、过程、列、索引、约束、规则、默认和用户自定义的数据类型等。
9.语句 select day('2004-4-6'), len('我们快放假了.') 的执行结果是:_________和_________。
10.语句 select round(13.4321,2), round(13.4567,3)的执行结果是:_________和_________。
四、简答题(每小题5分,共10分)
1.在SQL Server 中,使用视图的好处是什么?
2.在SQL Server 中,用户访问表/视图、列的权限是什么?
五、设计题(共50分)
现有关系数据库如下:
数据库名:我班同学数据库
同学表(学号 char(6),姓名,性别,年龄,民族,身份证号,宿舍号)
宿舍表(宿舍号 char(6),宿舍电话)
用SQL语言实现下列功能的sql语句代码:
1.创建数据库[我班同学数据库]代码(2分)。
2.创建数据表[宿舍表]代码(3分);
宿舍表(宿舍号 char(6),宿舍电话)
要求使用:主键(宿舍号)、宿舍电话:以633开头的7位电话号码
3.创建数据表[同学表]代码(6分);
同学表(学号 char(6),姓名,性别,年龄,民族,身份证号,宿舍号)
要求使用:主键(学号)、外键(宿舍号)、默认(民族)、非空(民族,姓名,年龄)、唯一(身份证号)、检查(性别)
4.将下列宿舍信息添加到宿舍表的代码(8分)
宿舍号 宿舍电话
101 6331157
102 6331777
修改 宿舍号为101的 宿舍电话:6331158
删除 宿舍号为102的 宿舍信息
5.创建视图[同学表视图]代码(5分);
同学表视图(学号, 姓名, 性别, 年龄, 民族, 身份证号, 宿舍号, 宿舍电话)
6.从同学表视图中查询姓张的女同学的姓名、性别、宿舍电话。(4分)
7.从同学表中查询女同学的最大年龄、最小年龄、平均年龄。(5分)
8.创建带参数的存储过程[某宿舍同学]:姓名, 性别, 宿舍电话
执行此过程,查询'101'宿舍情况 (8分)
9.设置一SQL身份验证的用户账户:登录名:U班主任,密码:888,数据库用户名:U读者,权限:可查询查询本数据库中所有表、视图、内嵌表值函数的数据,执行所有的存储过程。请写出账户、权限设置的T_SQL脚本。(9分)
参考答案:
一、
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
C | D | C | A | B | A | C | D | A | C |
二、
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
Y | N | N | N | N | N | Y | N | N | N |
三、
no | 答案 | 分 |
1. | 外模式、模式 | 2 |
2. | @、@@ | 2 |
3. | 68、C | 2 |
4. | beautiful、我心中的太阳 | 2 |
5. | 水平、垂直 | 2 |
6. | 选择、投影 | 2 |
7. | 实体、域 | 2 |
8. | 表、视图 | 2 |
9. | 6、7 | 2 |
10 | 13.4300、13.4570 | 2 |
四、
no | 答案要点 | 分 |
1. | (1) 为用户集中需要的数据,简化了数据的用户操作; (2) 对用户隐藏了数据库设计的复杂性; (3) 简化用户权限的管理 (4) 组织数据导出到其它应用程序; | 5 |
2. | 1.数据表/视图(select insert update delete) 2.列(字段)的访问(select update) | 5 |
五、
no | 参考答案 | 分 |
1. | create database [我班同学数据库] go use [我班同学数据库] go | 2 |
2. | create table 宿舍表 ([宿舍号] char(6) primary key, [宿舍电话] char(11) check([宿舍电话] like '366[0-9][0-9][0-9][0-9]')) | 3 |
3. | create table 同学表 (学号 char(6) primary key, 姓名 nchar(4) not null, 性别 nchar(1) check(性别 in ('男', '女')), 年龄 int , 民族 nchar(8) default '汉族' not null, 身份证号 char(18) unique, 宿舍号 char(6) references 宿舍表(宿舍号) ) | 6 |
4. | insert 宿舍表 values('101', '6331157') insert 宿舍表 values('102', '6331777') update 宿舍表 set 宿舍电话='6331158' where 宿舍号='101' delete 宿舍表 where 宿舍号='102' | 8 |
5. | create view [同学表视图] as select 学号, 姓名, 性别, 年龄, 民族, 身份证号, 同学表.宿舍号, 宿舍电话 from 同学表,宿舍表 where 同学表.宿舍号=宿舍表.宿舍号 | 5 |
6. | select 姓名, 性别, 宿舍电话 from 同学表视图 where 姓名 like '张%' and 性别='女' | 4 |
7. | select 最大年龄 = max(年龄), 最小年龄 = min(年龄), 平均年龄 = avg(年龄) from 同学表 where 性别='女' | 5 |
8. | create procedure [某宿舍同学] @宿舍号 varchar(6) as select 姓名, 性别, 宿舍电话 from 同学表视图 where 宿舍号 = @宿舍号 go execute [某宿舍同学] '101' | 8 |
9. | exec sp_addlogin 'U班主任', '888', '我班同学数据库' exec sp_grantdbaccess 'U班主任', 'U读者' exec sp_addrolemember 'db_datareader', 'U读者' | 9 |