数据库基础测试题
姓名: 工号:
一、单项选择题,把合适的选项编号填写在括号内。(每小题1分,共10分)
1.在数据库技术中,实体-联系模型是一种( A )
A.概念数据模型 B.结构数据模型 C.物理数据模型 D.逻辑数据模型
2.关系数据模型通常由3部分组成,它们是( B )
A.数据结构,数据通信,关系操作
B.数据结构,数据操作,数据完整性约束
C.数据通信,数据操作,数据完整性约束
D.数据结构,数据通信,数据完整性约束
3.SQL语言中,删除一个表的命令是( B )
A. DELETE B. DROP C. CLEAR D. REMOVE
4.在SQL的查询语句中,order by选项实现对结果表的(D)功能
A. 分组统计 B. 求和 C. 查找 D. 排序
5. SQL Server触发器主要针对下列语句创建( B )
A. SELECT,INSERT,DELETE
B. INSERT,UPDATE,DELETE
C. SELECT,UPDATE,INSERT
D. INSERT,UPDATE,CREATE
6. 下列哪个不是sql 数据库文件的后缀。 C
A..mdf B..ldf C..tif D..ndf
7. 在SQL中,建立表用的命令是 ( A )。
A.CREATE TABLE B.CREATE RULE
C.CREATE VIEW D.CREATE INDEX
8. SQL语言中,条件“年龄BETWEEN 40 AND 50”表示年龄在40至50之间,且( A )。
A.包括40岁和50岁 B.不包括40岁和50岁
C.包括40岁但不包括50岁 D.包括50岁但不包括40岁
9. 模式查找like '_a%',下面哪个结果是可能的B
A.aili B. bai
C.bba D.cca
10. 若某表满足1NF,且其所有属性合起来组成主健,则一定还满足范式 ( C )
A、只有2NF B、只有3NF
C、2NF和3NF D、没有
二、填空题,把合适内容填在横线上。(每空1分,共19分)
1.DBMS是指_______数据库管理系统_________。
2.视图是由一个或多个____表__或视图导出的__虚表____或查询表。
3.触发器主要有2种类型,即_____DML___和__DDL_______。
4.数据完整性的类型有____引用____完整性、____实体___完整性、__ 域_____完整性和用户自定义完整性。。
5.要用SQL Server验证方式访问SQL Server数据库服务器,用户必须提供正确的_____用户名____和____密码______。
6.在基本表的某个列上建立索引,可以使基本表中的所有记录按该列值的__升序__ ___或__降序_____排列。
7.CHECK约束被称为___用户自定义_____约束,UNIQUE约束被称为__唯一________约束。
8.______存储过程_是已经存储在SQL Server服务器中的一组预编译过的Transact-SQL语句。
9.事务的ACID属性是指____原子性____性、__一致______性、_隔离______性和__持久_____性。
三、根据下面所给的商品库、教学库,写出下列每条SQL查询语句的执行结果,或者写出下列每条语句或程序段的功能。(每题3分,15分)
商品库的数据库两张表,包括:
商品表1(商品代号char(8),分类名char(8),单价float,数量int)
商品表2(商品代号char(8),产地char(8),品牌char(8)
教学的数据库三张表,包括:
学生(学生号 char(7),姓名 char(6),性别 char(2),出生日期 datetime,专业 char(10),年级 int)
课程(课程号 char(4),课程名 char(10),课程学分 int)
选课(学生号 char(7),课程号 char(4),成绩 int)
1.select x.商品代号,分类名,数量,品牌
from 商品表1 x,商品表2 y
where x.商品代号=y.商品代号
2.select count(distinct 产地) as 产地数
from商品表2
3.select 课程.课程号,课程.课程名,count(*)as选课人数
from 课程,选课
where课程.课程号=选课.课程号
group by 课程.课程号,课程.课程名
4. select x.学生号,y.学生号,y.课程号
from 学生x,选课y
where x.学号=@s1 and y.学号=@s2
and x.课程号=y.课程号
5. select *
from 课程
where exists (select *
from 选课,课程
where课程.课程号=选课.课程号
)
四、根据第三题所给的商品库和教学库,按照下列给的每种功能写出相应的查询语句。(每题4分,32分)
1.从商品库中查询出数量大于10的商品种数。
select count(商品代号)
from 商品表1
where 数量>10
2.从商品库中查询出每类(即分类名相同)商品的最高单价。
select max(价格)
from 商品表1
group by 分类名
3.商品库中查询出比所有商品单价的平均值要高的全部商品。
select *
from 商品表1
where 单价>(select Avg(单价) from 商品表1 )
4.从商品库中查询出同一类商品多于一种的所有分类名。
Select 分类名
from (select 分类名, count(分类名) as 类型商品数
from 商品表1
group by 分类名
)
where 类型商品数>1
5.从教学库中查询出被2至4名学生选修的所有课程。
select a.课程号,b.课程名 ,count(学生号) as num from 课程 a,选课 b
where a.课程号=b.课程号
group by a.课程号,b.课程名
having num between 2 and 4
6. 写一个课程表的触发器,当要删除的课程还没有学生选修,允许删除,否则不允许删除
Create trigger tri课程表
On 课程
For delete
As
If(exists(select * from 选课,deleted where 选课号 =deleted.选课号))
Print ‘不允许删除’
Else
Print ‘允许删除’
Rollback transaction
7. 查询选修课程超过5门的学生姓名和所选修课程的数目?
Select 姓名,num from 学生表 a,(
select 学生号,count(选课.学生号) num
From 选课
Group by 学生号
Having num>5) b where a.学生号 = b.学生号
8. 写一个存储过程,输入选修课程名,得到选修该课程的所有学生的学号和姓名
Create procedure mypro
@in char(10)
As select 学生.学生号,学生.姓名
from 课程 inner join选课 on课程. 课程号=选课. 课程号 inner join学生 on 学生. 学生号=选课. 学生号 where 课程. 课程名=@in
五、问答题。(共10分)
1. 使用保存点是否可以保存事务的一部分?为什么?
可以
2. 什么是存储过程?存储过程有哪些优点?用什么来调用?
存储过程(Stored Procedure)是一组编译好存储在服务器上的完成特定功能T-SQL代码,是某数据库的对象。客户端应用程序可以通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行存储过程。
优点:
(1)允许标准组件式编程,增强重用性和共享性,无须重写sql
(2)能够实现较快的执行速度
(3)能够减少网络流量
(4)可被作为一种安全机制来充分利用
用exec 存储过程名 来调用
六、综合题。(共14分)
1. 查询A(ID,Name)表中第31至40条记录,ID作为主键可能是不是连续增长的列
法一 Select top 10 * From A Where ID not in (select top 30 * from A)
法二 go
Select IDENTITY(INT,1,1) AS ID,NAME
Into B
From A
go
Select * from B where ID between 31 and 40
go
2. 查询表A中存在ID重复三次以上的记录
Select *
From A
Where id in(select ID from A group by id having count(id)>3)