数据库试题1

来源:百度文库 编辑:神马文学网 时间:2024/04/19 06:51:20
《SQL数据库管理与开发教程与实训》试题 一、单项选择题(每小题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.CREATE TABLE

C.CREATE VIEW                   D.CREATE INDEX

6. SQL语言中,条件“年龄BETWEEN 20 AND 30”表示年龄在20至30之间,且(      )。

A.包括20岁和30岁              B.不包括20岁和30岁

C.包括20岁但不包括30岁        D.包括30岁但不包括20岁

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, 的执行结果是: 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 2000局部变量名字必须以_________开头,而全局变量名字必须以_________开头。

3. 语句 select ascii('C'), char(68), len(' 你 是BigTiger    ') 的执行结果是: _________、_________和_________。

4. 语句 select upper('beautiful') , ltrim ('   我心中的太阳') 的执行结果是: ____________和___________。

5. 关系运算主要有________、________、________。

6. 选择运算是根据某些条件对关系做______分割;投影是根据某些条件对关系做______分割。

7. 索引的类型主要有_             _和_             __。

8. 在SQL Server 2000中,数据库对象包括数据表、______、______、触发器、规则、默认和用户自定义的数据类型等。

四、简述题(每小题5分,共10分)

1. 简述使用游标的步骤。

2. 简述SQL Server 2000的安全性管理机制,涉及登录账号、用户、角色以及权限分配。

五、设计题(共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数据库管理与开发教程与实训》试题参考答案

一、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 课程名称=@课程名)

 

    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读者'

 

use [学生成绩数据库]

exec sp_addlogin 'U领导', '888', '学生成绩数据库'

exec sp_grantdbaccess 'U领导', 'U读者'

exec sp_addrolemember 'db_datareader', 'U读者'