一、实验目的
1.掌握基本表的Insert,Update,Delete操作
2.掌握视图的Insert,Update,Delete操作
二、实验环境(实验的软件、硬件环境)
硬件:PC机 软件:SQL2000
三、实验说明
请复习相关的SQL语句insert,update,delete语法知识点并完成如下内容。
四、实验内容
1.表中数据的基本操作
(1)给实验二中的5张表添加记录,记录数据见数据文件data.txt
(2)将作废订单(号5197791779)由订单明细表中删除
(3)将上海的客户住址全都改为深圳
(4)将工作满2周年的员工薪水上调5%,工作满5周年的员工薪水上调8%
(5)将客户c20090001在2009年1月购买的所有商品单价打9折
(6)根据订单明细表,修改订单主表的订单金额信息。
2.视图中数据的基本操作
(1)在实验二创建的视图上,对视图添加一条记录数据(注意:分别查看customer表和该视图的结果)
(2)删除视图中所有姓“王”的客户数据
(3)通过视图修改表内某一个客户的姓名
(4)对员工表和订单主表创建一个视图,该视图包含相同业务员的编号、姓名、订单号、订单金额。
(5)将上述视图中订单号为200808080808的记录的订单金额改为60000
(6)给上述视图添加一条记录数据
(7)删除上述视图
五、实验步骤
请完成实验内容,并写出具体的实验步骤
六、思考题:
1.请注意区别Create,alter,drop和insert,update,delete的异同和使用情况?
2.请思考基本表数据的更新和视图数据的更新的联系和区别?
七、总结(实验过程的体会、心得和实验教与学之间还需改进的内容)
1)给实验二中的5张表添加记录,记录数据见数据文件data.txt
(2)将作废订单(号5197791779)由订单明细表中删除
(3)将上海的客户住址全都改为深圳
(4)将工作满2周年的员工薪水上调5%,工作满5周年的员工薪水上调8%
(5)将客户c20090001在2009年1月购买的所有商品单价打9折
(6)根据订单明细表,修改订单主表的订单金额信息。
视图中数据的基本操作:
(1)在实验二创建的视图上,对视图添加一条记录数据(注意:分别查看customer表和该视图的结果)
(2)删除视图中所有姓“王”的客户数据
(3)通过视图修改表内某一个客户的姓名
(4)对员工表和订单主表创建一个视图,该视图包含相同业务员的编号、姓名、订单号、订单金额。
(5)将上述视图中订单号为200808080808的记录的订单金额改为60000
(6)给上述视图添加一条记录数据
(7)删除上述视图*/
delete from ordermessage
where orderNo='5197791779';/*2.删除*/
select * from customer
update customer
set address='深圳市'/*3.将上海的客户住址全都改为深圳*/
where address='上海市'
update employee
set salary=salary*(1.05) where getdate()-hiredate>=2 and getdate()-hiredate<5 /*4.调整工资*/
update employee
set salary=salary*(1.05) where getdate()-hiredate>=5
② 将作废定单(号码5197791779)由定单明细表中删除。
DELETE FROM OrderDetail
WHERE orderNo in
(select orderNo
from OrderMaster
WHERE invoiceNo='5197791779')
③ 将上海的客户住址全都改为深圳。
UPDATE Customer
SET address='深圳市'
WHERE address='上海市'
④ 将工作满2周年的员工薪水上调5%,工作满5周年的员工薪水上调8%。
UPDATE Employee
SET salary=salary*(1+0.05)
WHERE year(getdate()-year(hireDate))>=2
AND year(getdate()-year(hireDate))<5
UPDATE Employee
SET salary=salary*(1+0.08)
WHERE year(getdate()-year(hireDate))>5
⑤ 将客户c20090001在2009年1月购买的所有商品单价打9折。
UPDATE OrderDetail
SET price=price*0.9
FROM OrderMaster,OrderDetail
WHERE customerNo='C2009000' AND
year(orderDate)=2009 AND month(orderDate)=1
⑥ 根据定单明细表,修改定单主表的定单金额信息。
UPDATE OrderMaster
SET orderSum=sumTotal
from OrderMaster a,
(select orderNo,sum(qty*price) sumTotal
from OrderDetail
group by orderNo) b
where a.orderNo=b.orderNo
select * from OrderMaster
(2) 对视图的基本操作有以下内容:
① 对视图添加一条记录数据。(注意:分别查看Customer表和该视图的结果。)
CREATE VIEW emp_view
AS
SELECT *
FROM Customer
INSERT INTO emp_view(customerNo,customerName,telephone)
VALUES('C20100002','联合股份有限公司','021-45684')
select * from Customer
select * from emp_view
结果同上
② 删除视图中所有姓“王”的客户数据。
DELETE FROM emp_view
WHERE customerName='王%'
③ 通过视图修改表内某一客户的姓名。
UPDATE emp_view
SET customerName='江西财大'
WHERE customerName='联合股份有限公司'
④ 对员工表和定单主表创建一个视图,该视图包含相同业务员的编号、姓名、订单号、定单金额。
CREATE VIEW emt_view
AS
SELECT employeeNo,employeeName,b.orderNo,orderSum
FROM Employee a,OrderMaster b
WHERE a.employeeNo=b.saleNo
⑤ 将上述视图中订单号为200808080808的记录的定单金额改为60000。
UPDATE emt_view
SET orderSum=60000
WHERE orderNo='200803090001'
select orderNo,orderSum select orderNo,orderSum
from OrderMaster from emt_view
⑥ 给上述视图添加一条记录数据。
INSERT INTO emt_view VALUES
('C20050003','上海生物研究室','20090908002',5000)
⑦ 删除上述视图。
DROP VIEW emt_view