数据库习题
- 关系数据库中空值( NULL)相当于 ( d )
A. 零( 0)
B. 空白
C. 零长度的字符串
D. 没有输入 - 取出关系中的某些列,并消去重复的元组的关系运算称为 ( b )
A. 取列运算
B. 投影运算
C. 连接运算
D. 选择运算 - 数据库系统中常用的三种数据模型有层次模型、网状模型、关系模型。
- 将 视 图 v_Course 重 命 名 为 v_newCourse 的 SQL 语 句是: exec sp_rename v_Course, v_newCourse 。
-
建立销售数据库 Sales 的以上三个表。
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),
) -
在 Customer 上基于 CusName列创建非惟一索引; 在 Product 上基于 ProName 列创建惟一索引; 在 ProOut 上基于 SaleDate 列创建聚集的、 惟一索引。
CREATE INDEX IX_Customer ON Customer (CusName)
CREATE UNIQUE INDEX IX_Product ON Product (ProName)
CREATE UNIQUE CLUSTERED INDEX IX_ProOut ON ProOut(SaleDate) -
在 ProOut 表上设置外键, 保证录入时的产品代码都在产品表中存在的。
ALTER TABLE ProOut
ADD CONSTRAINT FK_ ProOut_ProNo FOREIGN KEY (ProNo)
REFERENCES Product(ProNo) -
创建一自定义函数 sumMoney,要求能够利用该函数计算出销售金额,并进行测试,利用该函数计算出每种产品 (ProNo) 的销售金额。
create function sumMoney (@x Decimal,@y Decimal)
returns Decimal
as
begin
return(@x*@y)
end
go
–测试
select PO.ProNo,ProName,dbo.sumMoney (price, sum(Quantity)) as ’ 销
售金额 ’
from Product as P, ProOut as PO
where P.ProNo=PO.ProNo
group by PO.ProNo,ProName,price -
在查询的基础上创建一张新表 Cus,要求显示客户“ C004”在 2008 年购买的产品号、数量。
select CusNo, sum( Quantity )
from ProOut
where CusNo = ’C004’ an d SaleDate > ‘2007-12-31’ -
创建视图 viewPro ,要求显示每种产品的销售量和销售金额(6分)
create view viewPro
as
select PO.ProNo,sum( Quantity ) as '销售量 ',sum(Quantity *price) as '销
售金额 ’
from Product as P, ProOut as PO
where P.ProNo=PO.ProNo
group by PO.ProNo,price -
创建存储过程 p_Pro, 要求能够根据指定的客户编号,统计该客户购
买每种产品的产品号、数量。 (8分)
CREATE PROCEDURE p_Pro
@ Cus No VARCHAR(8)
AS
Select Cus No ,ProNo,sum( Quantity )
from ProOut
where Cus No = @ Cus No
group by Cus No, ProNo -
创建一个触发器 t_Stocks ,要求当插入、更新、删除销售表 (ProOut)
的销售记录时,根据销售数量 (Quantity) 的变化,能更新产品表 (Product)
中相应的库存数量 (Stocks) (8分)
create trigger t_Stocks on Product
for insert,delete,update
as
update Product set Stocks = Stocks - Quantity where ProNo=(select
ProNo from INSERTED)
update Product set Stocks = Stocks + Quantity where
ProNo=(select ProNo from DELETED)