试验三 数据的更新

实验三  数据的更新

 

一、实验目的

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.(1)代码:insert

into Employee(employeeNo,employeeName,sex,birthday,address,telephone,Hiredate,Department,Headship,salary)

values('E2005001','喻自强','M','1965-4-15','南京市',13817605008,'1990-2-6','财务科','科长',5800),

      ('E2005002','张小梅','F','1973-11-1','上海市',13817605008,'1991-3-28','业务科','职员',2400),

      ('E2005003','张小娟','F','1973-3-6','上海市',13817605008,'1992-3-28','业务科','职员',2600),

      ('E2005004','张 露','F','1967-1-5','南昌市',13817605008,'1990-3-28','业务科','科长',4100),

      ('E2005005','张小东','M','1973-9-3','南昌市',13817605008,'1992-3-28','业务科','职员',1800),

      ('E2006001','陈 辉','M','1965-11-1','南昌市',13817605008,'1990-3-28','办公室','主任',4000),

      ('E2006002','韩 梅','F','1973-12-11','上海市',13817605008,'1990-11-28','业务科','职员',2600),

      ('E2006003','刘 风','F','1973-5-21','南昌市',13817605008,'1991-2-28','业务科','职员',2500),

      ('E2007001','吴浮萍','M','1973-9-12','南京市',13817605008,'1990-6-28','业务科','职员',2500),

      ('E2007002','高代鹏','M','1973-1-2','南京市',13817605008,'1991-11-28','办公室','文员',2000),

      ('E2008001','陈诗杰','M','1968-1-6','南京市',13817605008,'1990-12-6','财务科','出纳',3200),

      ('E2008002','张 良','M','1972-2-16','上海市',13817605008,'1992-2-28','业务科','职员',2700),

      ('E2008003','黄梅莹','F','1972-5-15','上海市',13817605008,'1991-2-28','业务科','职员',3100),

      ('E2008004','李虹冰','F','1972-10-13','南京市',13817605008,'1990-5-28','业务科','职员',3400),

      ('E2008005','张小梅','F','1970-11-6','深圳市',13817605008,'1990-11-18','财务科','会计',5000

      );

---------------------------------

/*----------客户表数据--------------*/

insert

into customer(customerNo,customerName,telephone,address,zip)

values('c2005001','统一股份有限公司','022-3566021','天津市',220012),

   ('c2005002','兴隆股份有限公司','022-3566021','天津市',220301),

   ('c2005003','上海生物研究室','022-3566021','北京市',108001),

   ('c2005004','五一商厦','022-3566021','上海市',210100),

   ('c2006001','大地商城','022-3566021','北京市',100803),

   ('c2006002','联合股份有限公司','022-3566021','上海市',210100),

   ('c2007001','南昌电脑研制公司','022-3566021','南昌市',330046),

   ('c2007002','世界技术开发公司','022-3566021','上海市',210230),

   ('c2007003','万事达股份有限公司','022-3566021','天津市',220400),

   ('c2008001','红度股份有限公司','022-3566021','北京市',100800

   );

 

---------------------------------

/*----------------商品信息表数据-------------------*/

insert

into product(productNo,productName,productclass,productprice)

values('p2005001','32M DRAM','内 存',80.70),  

   ('p2005002','17寸显示器','显示器',700.00),    

   ('p2005003','120GB硬盘','存储器',300.00),    

   ('p2005004','3.5寸软驱','设 备',35.00),    

   ('p2005005','键盘','设 备',100.60),    

   ('p2006001','VGA显示卡','显示器',1200.60),    

   ('p2006002','网卡','设 备',66.00),    

   ('p2006003','Pentium100CPU','处理器',200.00),    

   ('p2007001','1G DDR','内 存',256.00),    

   ('p2007002','52倍速光驱','设 备',200.00),    

   ('p2007003','计算机字典','图 书',100.00),    

   ('p2007004','9600bits/s调制解调','设 备',320.00),    

   ('p2008001','Pentium主板','主 板',890.00),    

   ('p2008002','索泰克主板','主 板',1100.00),    

   ('p2008003','纯平显示器','显示器',900.00

   );

 

--------------------------------- 

/*订单主表数据*/

insert

into orderMaste(orderNo,customerNo,saleNo,orderdate,ordersum,invoiceNo)

values('200801090001',      'c2005001',        'E2005002'  ,   '2008-1-9'   ,    '0.00',       'I000000001'),

   ('200801090002',      'c2005004',        'E2005003',     '2008-1-9',       '0.00',       'I000000002'),

   ('200801090003',      'c2008001',        'E2005002',     '2008-1-9',       '0.00',       'I000000003'),

   ('200802090001',      'c2005001',        'E2005003',     '2008-2-19',      '0.00',       'I000000004'),

   ('200802090002',      'c2007002',        'E2008002',     '2008-2-19',      '0.00',       'I000000005'),

   ('200803010001',      'c2007002',        'E2008001',     '2008-3-1',       '0.00',       'I000000006'),

   ('200803020001',      'c2005004',        'E2008003',     '2008-3-2',       '0.00',       'I000000007'),

   ('200803090001',      'c2007003',        'E2008004',     '2008-3-9',       '0.00',       'I000000008'),

   ('200805090001',      'c2006002',        'E2008002',     '2008-5-9',       '0.00',       'I000000009'),

   ('200806120001',      'c2005001',        'E2005002',     '2008-6-12',      '0.00',       'I000000010'

   );

--------------------------------

/*订单明细表数据*/

insert

into orderDetil(OrderNo,ProductNo,Qty,OrderPrice)

values('200801090001',     'p2005001',       5,          500),

      ('200801090001',     'p2005002',       3,          500),

      ('200801090001',     'p2005003',       2,          300),

      ('200801090002',     'p2006002',       5,          250),

      ('200801090002',     'p2008001',       5,          280),

      ('200801090002',     'p2008002',       4,          270),

      ('200801090002',     'p2008003',       2,          158),

      ('200801090003',     'p2005001',       5,          130),

      ('200801090003',     'p2006001',       3,          350),

      ('200802190001',     'p2006003',       4,          270),

      ('200802190001',     'p2007001',       2,          158),

      ('200802190001',     'p2007002',       5,          250),

      ('200802190001',     'p2007003',       3,          350),

      ('200802190001',     'p2007004',       2,          330),

      ('200802190001',     'p2008001',       2,          160),

      ('200802190001',     'p2008002',       3,          260),

      ('200802190001',     'p2008003',       1,          330),

      ('200802190002',     'p2005003',       2,          160),

      ('200802190002',     'p2005005',       3,          150),

      ('200802190002',     'p2007001',       3,          500),

      ('200803010001',     'p2005001',       8,          150),

      ('200803010001',     'p2007001',       4,          150),

      ('200803020001',     'p2005001',       2,          100),

      ('200803020001',     'p2005002',       1,          200),

      ('200803020001',     'p2007003',       3,          200),

      ('200803090001',     'p2005003',       4,          200),

      ('200803090001',     'p2005004',       5,          250),

      ('200803090001',     'p2007001',       2,          158),

      ('200803090001',     'p2007002',       5,          380),

      ('200803090001',     'p2007004',       3,          350),

      ('200805090001',     'p2006003',       8,          300),

      ('200805090001',     'p2007001',       4,          500),

      ('200805090001',     'p2007002',       2,          600),

      ('200805090001',     'p2007003',       5,          300),

      ('200806120001',     'p2005004',       2,          600),

      ('200806120001',     'p2005005',       3,          600),

      ('200806120001',     'p2006001',       1,          300),

      ('200806120001',     'p2006002',       2,          280

      );

  ---------------------------------------------------------------------

试验结果图:                        

1.(2)代码:--()将作废订单(发票号)由订单明细表中删除

--select InvoiceNo from orderMaste

--执行操作未出现此号码

delete

from orderDetil

where  orderNo in

(

    select orderNo from orderMaste

    where InvoiceNo = '5197791779'

)  

试验结果图:

 

1.(3)代码:--()将上海的客户住址全都改为深圳

//-----------操作成功------------

update customer

set address='深圳市'

where address='上海市';

试验结果图:

 

1.(4)代码:--()将工作满周年的员工薪水上调%,工作满周年的员工薪水上调%

-----------操作未成功------------

--select *

--from ordermaste

 

update Employee

set salary=salary*(1+0.05)

where (GETDATE()-Hiredate)>=2 and (GETDATE()-Hiredate)<5

 

update Employee

set salary=salary*(1+0.08)

where (GETDATE()-Hiredate)>=5

试验结果图:

 

1.(5)代码:--()将客户c20090001在年月购买的所有商品单价打折

-----------无此客户----------------  

update orderMaste

set ordersum=ordersum*0.9 

where customerNo='c20090001' and orderMaste.orderdate between '2009-1-1' and '2009-1-31'

试验结果图:

 

1.(6)代码:--()根据订单明细表,修改订单主表的订单金额信息

update orderMaste

set ordersum=(select SUM(orderPrice*Qty)

                from orderdetil

                where orderdetil.orderno=orderMaste.orderNo)

试验结果图:

 

 

2.(1)代码:insert into shanghai(customerNo,customerName,Address,Createdate)

values('007','软工二班','师大南区','2012-09-10')

试验结果图:select * from customer

 

select * from shanghai

 

2.(2)代码:delete

from shanghai

where customerName='王%'

试验结果图:

3.(3)update shanghai

set customerName='福师大软院软工二班'

where customerName='软工二班'

试验结果图:

 

2.(4)代码:create view e_m_b

as

select employeeNo,employeeName,b.OrderNo,Ordersum

from Employee a,orderMaste b

where a.EmployeeNo=b.CustomerNo

试验结果图:

 

2.(5)代码:update e_m_b

set Ordersum=60000

where orderno='200808080808'

试验结果图:

 

2.(6)代码:insert into e_m_b

values('E2014002','新加记录','201403201234',1000)

试验结果图:

 

2.(7)代码:

drop view emt_view

试验结果图:

 

六、思考题:

1.请注意区别Create,alter,drop和insert,update,delete的异同和使用情况?

答:create用于新建表,视图等,alter用于修改表,视图等,drop用于删除表,视图等,insert用于添加即插入数据,update用于修改即更新数据,delete用于删除数据。

2.请思考基本表数据的更新和视图数据的更新的联系和区别?

 

七、总结(实验过程的体会、心得和实验教与学之间还需改进的内容)

1.在试验过程中加深了我对SQL的理解,已经让我加深了对数据库里的表,视图的命令

2.在试验过程中,分清了数据更新的各种操作,尤其是思考题1中的问题

3.我对试验的建议就是,老师能在每次试验任务后面多问几个我们容易混淆的概念以及区别

posted on 2014-03-25 21:33  Forgiving  阅读(1021)  评论(0编辑  收藏  举报