分享

数据库试题

 hhx2009 2010-01-10
SQL数据库管理与开发教程与实训》试题
 
一、单项选择题(每小题1分,共10)1.下列四项中,不属于数据库特点的是(      )。

A.数据共享                     B.数据完整性

C. 数据冗余很高                 D.数据独立性高

2. 目前(   )数据库系统已逐渐淘汰了网状数据库和层次数据库,成为当今最为流行的商用数据库系统。

A.关系         B.面向对象    C.分布

3. 数据库设计中的概念结构设计的主要工具是(    )。

A.数据模型     BER模型    C.新奥尔良模型   D.概念模型

4.    是位于用户与操作系统之间的一层数据管理软件,它属于系统软件,它为用户或应用程序提供访问数据库的方法。数据库在建立、使用和维护时由其统一管理、统一控制。

ADBMS         BDB          CDBS        DDBA

5. SQL中,建立视图用的命令是 (      )

A.CREATE SCHEMA                 B.CREATE TABLE

C.CREATE VIEW                   D.CREATE INDEX

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

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


 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多