GDOU-B-11-112广东海洋大学学生实验报告书
实验名称实验5:数据更新和视图课程名称数据库原理及应用成绩
学院(系)软件学院专业软件工程班级
学生姓名学号实验地点实验日期
实验目的:
1.掌握视图的创建语法
2.使用视图更新数据
3.掌握数据操纵语句(insert delete update)
实验内容
针对GlobalToyz和Recruitement,Student数据库,按要求完成下列题目。
1.创建一个视图,包含Toys表中的品牌id为’001’的玩具信息,要求限制用户对该视图的更新只
能是该品牌的玩具。
CREATE VIEW ToyBrand1 AS
SELECT * FROM Toys
WHERE cBrandId = '001'
WITH CHECK OPTION;
2.对上述视图进行插入操作,新增一个品牌为’002’的玩具,插入的内容请按照数据类型给出合
理的值。观察结果并说明原因。
INSERT INTO [ToyBrandView]
V ALUES ('000040', 'Name', 'Description', '001', 10.0, '002', NULL, 10, 5, 15, 10, NULL);
3.对于GlobalToyz数据库,创建一个视图名为vwOrderdetailToys,其中包含了订单的代码,
订购的玩具编号,订购的玩具名称,订购的附言,玩具的花费信息。
CREATE VIEW vwOrderdetailToys AS
SELECT OrderDetail.cOrderNo, OrderDetail.cToyId, Toys.vToyName,
OrderDetail.vMessage, OrderDetail.mToyCost
FROM OrderDetail, Toys
WHERE OrderDetail.cToyId = Toys.cToyId;
4.对于第3题中创建的视图vwOrderdetailToys进行更新,修改订单代码为‘000001’的订单,
更改cToyId为’000007’的玩具名称,改为’Lego Spider’,并修改对应的附言内容为
‘Happiness’。写出完成该操作的所有语句。
spider软件UPDA TE vwOrderdetailToys
SET vToyName = 'Lego Spider', vMessage = 'Happiness'
WHERE cOrderNo = '000001' AND cToyId = '000007';
5.定义一个视图,里面包含总花费超过80元的订单信息,要求透过该视图的更新操作只能是周
三下午14点至16点之间。
CREATE VIEW vwViewOrderOverEighty AS
SELECT Orders.* FROM Orders WHERE mTotalCost > 80 AND (
DA TEPART(DW, GETDATE()) = 4 AND DA TEPART(HH, GETDA TE()) IN (14, 15)
) WITH CHECK OPTION;
6.使用insert into 语句对Country表添加新的一行(’050’,’Vietnam’)
INSERT INTO Country (cCountryId, cCountry) V ALUES ('050', 'Vietnam');
7.使用insert into 语句将如下的统计信息放入到一个新表中,统计玩具花费超过40的订单号和
玩具总花费信息。
CREATE TABLE tableForOverForty (
cOrderNo CHAR(6) NOT NULL PRIMARY KEY,
mTotalCost MONEY
);
INSERT INTO tableForOverForty(cOrderNo, mTotalCost)
SELECT Orders.cOrderNo, Orders.mTotalCost
FROM Orders
WHERE Orders.mTotalCost > 40;
8.使用delete语句删除国家表中国家代码为‘001‘的国家记录,观察执行的结果,说明产生结
果的原因。
DELETE FROM Country WHERE cCountryId = '001';
9.修改Toybrand表和toys表相应列的参照方式,将‘删除‘的参照方式改为’置空’。
这个不会!
10.修改Toys表中的记录了,将品牌为‘Largo‘的玩具单价提高5%。
UPDA TE Toys SET mToyRate = mToyRate * 1.05
WHERE Toys.cToyId IN (
SELECT Toys.cToyId FROM Toys, ToyBrand
WHERE Toys.cBrandId = ToyBrand.cBrandId AND ToyBrand.cBrandName = 'Largo'
);