《SQL数据库管理与开发教程与实训》试题(G卷)

更新时间:2023-03-09 21:05:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《SQL数据库管理与开发教程与实训》试题(G卷)

一、单项选择题(每小题1分,共10分)(红色标记的为给的答案对照)

1.下列四项中说法不正确的是( C)

A.数据库减少了数据冗余 B.数据库中的数据可以共享 C.数据库避免了一切数据的重复 D.数据库具有较高的数据独立性 2.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员,

从部门到职员的联系类型是(D ) A.多对多 B.一对一 C.多对一 D.一对多

3.SQL语言中,条件年龄 BETWEEN 15 AND 35表示年龄在15至35之间,且( A )。

A.包括15岁和35岁 B.不包括15岁和35岁 C.包括15岁但不包括35岁 D.包括35岁但不包括15岁 4. 在SQL Server 中,model是(B)

A.数据库系统表 B. 数据库模板 C.临时数据库 D. 示例数据库 5.在视图上不能完成的操作是(C)

A.更新视图数据 B.查询 C.在视图上定义新的基本表 D.在视图上定义新视图 6. 数据库的三要素,不包括(C)

A.完整性规则 B.数据结构 C.恢复 D.数据操作 7.一个规范化的关系至少应当满足(C)的要求。

A.一范式 B.二范式 C.三范式 D.四范式

8. 表达实体之间逻辑联系的E-R模型,是数据库的(A)

A. 概念模型 B. 逻辑模型 C. 外部模型 D. 物理模型 9.下列哪个不是sql 数据库文件的后缀。(C)

A..mdf B..ldf C..dbf D..ndf 10.在SQL语言中,\授权\命令是(A)

A. GRANT B. REVOKE C. OPTION D. PUBLIC

二、判断题(每空1分,共10分)

1.数据库不允许存在数据冗余。 错 N 2.每一个服务器必须属于一个服务器组。一个服务器组可以包含0个、一个或多个服务器。

对 Y

3. 一个表可以创建多个主键。 错 N

4.在SQL Server系统中,数据信息和日志信息不能放在同一个操作系统文件中。 对 Y

5.固定数据库角色:db_datarader 的成员修改本数据库内表中的数据。

对 Y

6.在使用子查询时,必须使用括号把子查询括起来,以便区分外查询和子查询。 对 Y

7.存储过程是存储在服务器上的一组预编译的Transcat-SQL语句。 对 Y

8.视图本身没有保存数据,而是保存一条查询语句。 对 Y

9.在表中创建一个标识列(IDENTITY),当用户向表中插入新的数据行时,系统会自动为

该行标识列赋值。 对 Y

10.创建触发器的时候可以不是表的所有者或数据库的所有者。 错 N

三.填空题(每题1分,共10分)(答案一致)

1.从最终用户角度来看,数据库应用系统分为单用户结构、主从式结构、分布式结构、

____客户服务器_______结构和___浏览器服务器________结构。

2.完整性约束包括___实体____完整性、___域_____完整性、___参照_____完整性和用户

定义完整性。____实体____完整性用于保证数据库中数据表的每一个特定实体的记录都是惟一的。

3.创建、修改和删除表命令分别是____create_____ table、____alter_____ table和

_____drop____ table。 4.用SELECT进行模糊查询时,可以使用like或not like匹配符,但要在条件值中使用___%_

或__ _ __等通配符来配合查询。并且,模糊查询只能针对_____字符____类型字段查询。

5.SQL Server聚合函数有最大、最小、求和、平均和计数等,它们分别是___Max____、

_Min______、___Sum____、avg和count。

6.SQL Server中数据操作语句包括___insert_____、___update_____、__delete______

和select语句。

7.事务的ACID属性是指____原子_性、___一致___性、__隔离___性和___持久__性。 8.游标的操作步骤包括声明、__打开____、处理(提取、删除或修改)、__关闭____和__释放____游标。

9.SQL Server代理主要由__作业____、__操作员____和警报来组成。

10.SQL Server复制把服务器分为___发布_服务器、__分发__服务器和__订阅__服务器三种。

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

1.SQL Server的两种索引是何形式?索引的作用?索引的优缺点?

分别是主键索引和聚合索引。

作用:大大提高系统性能,加快数据检索速度等

优点:

1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性;

2. 加快数据的检索速度; 3. 加速表和表之间的连接;

4. 在使用分组和排序 子句进行数据检索时,可以显著减少查询中分组和排序的时间; 5. 通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

缺点:

1. 创建索引和维护索引要耗费时间,这种时间随着数据 量的增加而增加

2. 索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空

间,如果要建立聚簇索引,那么需要的空间就会更大

3. 当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了

数据的维护速度

答:索引就一种特殊的查询表,数据库的搜索引擎可以利用它加速对数据的检索。它很

类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要的数据。索引可以是唯一的,创建索引允许指定单个列或者是多个列。缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。

2.什么是事务?什么是锁?

事务在数据库中主要用于保证数据的一致性,防止出现错误数据。在事务内的语句都会被看成一

个单元,一旦有一个失败,那么所有的都会失败。

事务就是一组包含一条或者多条语句的逻辑单元,每个事务都是一个原子单位,在事务中的语句被看作

为一个整体,要么一起提交,作用在数据库上,使数据库数据永久的修改;要么一起被撤销,对数据库不做任何修改。

锁出现在数据共享的环境中,它是一种机制,在访问相同资源时,可以防止事务之间的破坏性交互。例

如,在多个会话同时操作某表是,优先操作的会话需要对其锁定。锁有两种:写锁(排他锁)读锁(共享锁)

答:事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句

操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。为了确保要么执行,要么不执行,就可以使用事务。要将有组语句作为事务考虑,就需要通过ACID测试,即原子性,一致性,隔离性和持久性。 锁:在所以的DBMS中,锁是实现事务的关键,锁可以保证事务的完整性和并发性。与现实生活中锁一样,它可以使某些数据的拥有者,在某段时间内不能使用某些数据或数据结构。当然锁还分级别的。

3.什么是存储过程?什么是函数?存储过程和函数的区别?

存储过程是存储在服务器上的一组预编译的Transact-SQL语句。

存储过程,功能强大,可以执行包括修改表等一系列数据库操作,也可以创建为 SQL Server 启动时自动运行的存储过程。

自定义函数,用户定义函数不能用于执行一组修改全局数据库状态的操作。 存储过程,可以使用非确定函数。

自定义函数,不允许在用户定义函数主体中内置非确定函数。

存储过程,可返回记录集。

自定义函数,可以返回表变量,也可以有任意个输出参数,

存储过程,其返回值不能被直接引用,必须单独调用自定义函数,其返回值可以被直接引用,也就是可以直接 select * from 函数

4.sqlserver2000是一种大型数据库,他的存储容量只受存储介质的限制,请问它是通过什么方式实现这种无限容量机制的。

它的所有数据都存储在数据文件中(*.dbf),所以只要文件够

大,SQL Server的存储容量是可以扩大的.

SQL Server 2000 数据库有三种类型的文件:

主要数据文件

主要数据文件是数据库的起点,指向数据库中文件的其它部分。每个数据库都有一个主要数据文件。主要数据文件的推荐文件扩展名是 .mdf。

次要数据文件

次要数据文件包含除主要数据文件外的所有数据文件。有些数据库可能没有次要数据文件,而有些数据库则有多个次要数据文件。次要数据文件的推荐文件扩展名是 .ndf。

日志文件

日志文件包含恢复数据库所需的所有日志信息。每个数据库必须至少有一个日志文件,但可以不止一个。日志文件的推荐文件扩展名是 .ldf。

五.编程题(每小题5分,共20分)

1.用一条SQL语句查询出每门课都大于80分的学生姓名

namekechengfenshu 张三语文 81 张三数学 75 李四语文 76 李四数学 90 王五语文 81 王五数学 100 王五英语 90

select distinct name from table where name not in (select name from table where fenshu<=80)

select distinct name from table where name not in (select distinct name from table where fenshu<=80)

2.学生表 如下:

自动编号 学号 姓名 课程编号 课程名称 分数 1 2005001 张三 0001 数学 69 2 2005002 李四 0001 数学 89

3 2005001 张三 0001 数学 69 删除除了自动编号不同,其他都相同的学生冗余信息

delete from tablename where 自动编号 not in(select min(自动编号) from tablename group by 学号,姓名,课程编号,课程名称,分数)

4.表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。 ------------------------------------------ select (case when a>b then a else b end ), (case when b>c then b esle c end) from table_name

5.有一张表,里面有3个字段:语文,数学,英语。其中有3条记录分别表示语文70分,数学80分,英语58分,请用一条sql语句查询出这三条记录并按以下条件显示出来:

大于或等于80表示优秀,大于或等于60表示及格,小于60分表示不及格。

显示格式:

语文 数学 英语 及格 优秀 不及格 ------------------------------------------

select case when 语文>=80 then '优秀'when 语文>=60 then '及格'else '不及格' end 语文,

select case when数学>=80 then '优秀'when数学>=60 then '及格'else '不及格' end数学,

select case when英语>=80 then'优秀'when英语>=60 then '及格'else '不及格' end英语 from table select

(case when 语文>=80 then '优秀' when 语文>=60 then '及格' else '不及格') as 语文,

(case when 数学>=80 then '优秀' when 数学>=60 then '及格' else '不及格') as 数学,

(case when 英语>=80 then '优秀' when 英语>=60 then '及格' else '不及格') as 英语, from table

五.设计题(共40分)

在[Xk]数据库中有

课程表[Course]由课程编码(CouNo)、课程名称(CouName)、教师名(Teacher)等组成, 学生表[Student]由学号(StuNo)、学生姓名(StuName)、班级编号(ClassNo)等组成, 学生选课表[StuCou]由学号(StuNo)、课程编码(CouNo)等组成。

1.检索Xk数据库中的课程表(Course)中的教师名(Teacher)、课程编码(CouNo)、课

程名称(CouName),要求检索结果首先按照教师名降序排列,教师名相同时,则按照课程号升序排列。(5分)

select Teacher, CouNo, CouName from Course oredr by Teacher desc,CouNo

2. 使用IN关键字检索Xk数据库中的课程表(Course),要求检索课程编码(CouNo)不为

'004'、'007'、'013' (5分)

select CouNo from Course where CouNo not in ('004','007','013')

3. 从Xk数据库中的Student表中检索第二个字为'宝'的学生名字。(5分)

select StuName from Student where StuName like '_宝%'

4. 使用Transact-SQL语句在XK数据库中创建一个名为[p_StudentPara]的存储过程。该存

储过程能根据给定的班级返回该班级代码对应的Student表中的记录。并赋值查询班级代码为'20000001'和'20000002'的学生记录。(5分)

create proc p_StudentPara

@ ClassNo varchar(50)--班级编号 as begin

select * from Student where ClassNo=@ ClassNo end go

exec p_StudentPara '20000001' exec p_StudentPara '20000002'

5. 创建一个触发器,要求当插入、更新、删除StuCou表的选课记录时,能更新Course表

中相应的报名人数。(10分) create trigger ChangeData on StuCou

for insert,update,delete as begin

if(select count(*) from inserted)>0 update Course set People= People+1 if(select count(*) from deleted)>0 update Course set People= People-1 update StuCou SET CouNo='002' WHERE StuNo='00000011' AND CouNo='003 end go

6. 在SQL查询分析器的查询窗口中创建一个尺寸为5MB的逻辑名字为newxk的数据库, 3MB

的数据文件NEW_DATA.MDF存储在C:\\下,文件的最大尺寸为10MB,文件增量为1MB。2MB的事务日志文件NEW_LOG.LDF存储在C:\\下,文件的最大尺寸为15MB,文件的增量为1MB。(10分)

CREATE DATABASE newxk

ON

(NAME =NEW_data,

FILENAME ='C:\\NEW_data.mdf', SIZE=3,

MAXSIZE=10, FILEGROWTH=1) LOG ON

(NAME ='NEW_log',

FILENAME='C:\\NEW_log.ldf', SIZE =2MB, MAXSIZE= 15MB, FILEGROWTH=1MB) GO

本文来源:https://www.bwwdw.com/article/pv8a.html

Top