搜档网
当前位置:搜档网 › 数据库试卷

数据库试卷

数据库试卷
数据库试卷

1.( B )是位于用户和操作系统之间的一层数据管理软件。数据库在建立、使用和维护时由其统一管理、统一控制。

A. DB B.DBMS C.DBS D.DBA

2. SQL语言允许使用通配符进行字符串匹配的操作,其中‘%’可以表示(D )A、零个字符 B、1个字符 C、多个字符 D、以上都可以

3.下列哪一个数据库不是SQL Server 2000的系统数据库( C )

A.master数据库 B.msdb数据库

C.pubs数据库(示例数据库) D.model数据库

4.下列四项中,可以直接用于表示概念模型的是( D )。

A. 网状模型

B.关系模型

C.层次模型

D.实体-联系(E-R)模型

5.下列四项中说法不正确的是( A )

A. 数据库避免了一切数据的重复

B.数据库中的数据可以共享

C. 数据库减少了数据冗余

D.数据库具有较高的数据独立性

6.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员,从职员到部门的联系类型是( C )

A.多对多

B.一对一

C.多对一

D.一对多

7.关系数据库中空值(NULL)相当于( D )

A. 零(0)

B. 空白

C. 零长度的字符串

D. 没有输入

8.事务有多个性质,其中不包括( B )

A.隔离性

B. 不可撤消

C.原子性

D. 一致性

9.一个电视经销商在表Tvtype 中维护库存的Tvs信息,下述哪条语句能显示价格最昂贵的三种电视机的信息?( C )

A. select top3 cDiscription from Tvtype order by iprice asc

B. select cDiscription from Tvtype where max(iprice)>3

C. select top3 cDiscription from Tvtype order by iprice desc

D. select cDiscription max(iprice) from Tvtype order by iprice

10.假如采用关系数据库系统来实现应用,在数据库设计的( D )阶段,需要将E-R 模型转换为关系数据模型。

A.概念设计

B.物理设计

C. 运行阶段

D. 逻辑设计

11.取出关系中的某些列,并消去重复的元组的关系运算称为( B )

A.取列运算

B. 投影运算

C.连接运算

D. 选择运算

12.一家航空公司把一年中飞行距离(idistancetravelled)超过10000里的客户信息转移到一张称为flyersclub 的表中,他们的详细情况被记录在表flyers ( D )

A. insert into flyersclub from flyers where idistancetravelled>=10000

B. insert flyersclub (idistancetravelled) values from flyers where idistancetravelled>=10000

into flyersclub from flyers where (idistancetravelled)values>=10000

D. select * into flyersclub from flyers where idistancetravelled >=10000

13. 系统死锁属于( A )

A.事务故障

B.程序故障

C.系统故障

D.介质故障

二.填空题:

1.数据库系统中常用的三种数据模型有层次模型、网状模型和关系模型。

2.SQL语言由数据定义语言、数据操纵语言和数据控制语言组成。

3.使用 filegrowth 命令可以增加数据库和事务日志的容量。

4.关系模式的三类完整性约束条件分别是_实体完整性约束_、参照完整性约束和__域完整性约束__。

5.如果一个关系不满足2NF,则该关系一定也不满足_3nf_(在1NF、2NF、3NF范围内)。

6.关键字是能唯一标识每一行的列或列的组合。一个表可能有多个关键字,选定其中一个作为主关键字,其余的称为候选关键字。

7. 索引有两种类型:聚集索引和非聚集索引。

8.当在一个已经存放了数据的表上增加主键时,SQL Server会自动对表中的数据进行检查,以确保这些数据能够满足主键约束的要求。问:满足主键值要唯一和不允许为NULL 两个要求。

9. 将视图v_Course重命名为v_newCourse的SQL语句是:exec sp_rename

v_Course,v_newCourse。

三.操作题:

销售数据库Sales中存在这样的三张表:1.客户表(Customer)

(Product)

2.产品表

按要求完成下列题目:

1.建立销售数据库Sales的以上三个表。(3分)

CREATE DATABASE Sales CHARACTER SET utf8;

CREATE TABLE Customer (

cusno INT NOT NULL PRIMARY KEY AUTO_INCREMENT,

cusname VARCHAR(20),

address VARCHAR(50),

tel VARCHAR(20)

);

CREATE TABLE Product(

prono INT NOT NULL PRIMARY KEY AUTO_INCREMENT,

price DOUBLE(10,2),

stocks INT

);

CREATE TABLE Proout(

saledate DATE NOT NULL,

cusno VARCHAR(10) NOT NULL,

prono VARCHAR(10) NOT NULL,

PRIMARY KEY(saledate,cusno,prono)

);

2.建立数据库Sales的三个表客户表(Customer)、产品表(Product)、销售表(ProOut)

3.实现各表的实体完整性要求。(3分)

a)客户表(Customer)的主键为:客户编号(CusNo)

i.产品表(Product) 的主键为:产品编号(ProNo)

ii.销售表(ProOut) 的主键为:销售日期(SaleDate)、客户编号(CusNo)、产品编号(ProNo)

4.在Customer上基于CusName列创建非惟一索引;在Product上基于ProName列创

建惟一索引;在ProOut上基于SaleDate列创建聚集的、惟一索引。(3分)

a)CREATE INDEX IX_Customer ON Customer (CusName)

b)CREATE UNIQUE INDEX IX_Product ON Product (ProName)

c)CREATE UNIQUE CLUSTERED INDEX IX_ProOut ON ProOut (SaleDate)

5.在ProOut表上设置外键,保证录入时的产品代码都在产品表中存在的。(3分)

USE Sales

GO

ALTER TABLE ProOut

ADD CONSTRAINT FK_ ProOut_ProNo FOREIGN KEY

(ProNo)

REFERENCES Product(ProNo)

GO

6.创建一规则限定只能录入大于0的值,然后将其绑定到ProOut表上Quantity列。

(3分)

CREATE RULE RU_ProOut as @x>0

EXEC sp_bindrule RU_ProOut, 'ProOut. Quantity’

7.查询销售数量超过100的产品号。(3分)

Select ProNo

from ProOut group by ProNo

having sum(Quantity)>100

8.创建一自定义函数sumMoney,要求能够利用该函数计算出销售金额,并进行测试,

利用该函数计算出每种产品(ProNo)的销售金额。(5分)

create function sumMoney (@x Decimal,@y Decimal)

returns Decimal as begin

return(@x*@y) end go --测试

select ,ProName, (price, sum(Quantity)) as '销售金额'

from Product as P, ProOut as PO where =

group by ,ProName,price

9.查询购买了产品号“P0002”的客户编号、客户名和电话,查询结果按客户名降序

排列。(5分)

select , CusName,Tel

from ProOut as p, Customer as C

where =’P0002’ and P . CusNo = C . CusNo order by CusName desc

10.在查询的基础上创建一张新表Cus,要求显示客户“C004”在2008年购买的产品

号、数量。(6分)

select CusNo, sum(Quantity)

from ProOut

where CusNo = ’C004’ and SaleDate > '2007-12-31'

11.创建视图viewPro,要求显示每种产品的销售量和销售金额(6分)

create view viewPro

as

select ,sum(Quantity) as '销售量',sum(Quantity *price)

as '销售金额'

from Product as P, ProOut as PO where = group by ,price

12.创建存储过程p_Pro, 要求能够根据指定的客户编号,统计该客户购买每种产品的

产品号、数量。(8分)

CREATE PROCEDURE p_Pro

@ CusNo VARCHAR(8) AS

Select CusNo ,ProNo,sum(Quantity)

from ProOut

where CusNo =@ CusNo group by CusNo, ProNo

13.创建一个触发器t_Stocks,要求当插入、更新、删除销售表(ProOut)的销售记录

时,根据销售数量(Quantity)的变化,能更新产品表(Product)中相应的库存数量(Stocks) (8分)

create table customer

( cusno char(10) primary key, cusname char(20), address char(20) , tel char(20) )

create table product

( prono char(10) primary key, proname char(20), price char(20) , stocks int )

create table proout ( saledate datetime , cusno char(10), prono char(10) , quantity int,

foreign key (cusno) references customer (cusno), foreign key (prono) references product (prono), )

14.备份该数据库Stu_info。(4分)

create table customer

( cusno char(10) primary key, cusname char(20), address char(20) , tel char(20) )

create table product

( prono char(10) primary key, proname char(20), price char(20) , stocks int )

create table proout ( saledate datetime , cusno char(10), prono char(10) , quantity int,

foreign key (cusno) references customer (cusno), foreign key (prono) references product (prono), )

相关主题