数据库实验报告数据更新
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
大连海事大学
数据库原理课程实验大纲
实验名称:实验四数据更新实验学时: 2
适用专业:智能科学与技术
实验环境: SQL Server Management Studio 1实验目的
(1)掌握SQL数据更新语句的基本使用方法,如UPDATE、DELETE、INSERT。
(2)掌握更新语句条件中的嵌套查询使用方法。
2实验内容
2.1 掌握SQL更新语句的基本使用方法
(1)INSERT基本语句。
(2)UPDATE基本语句。
(3)DELETE基本语句。
2.2 掌握SQL更新语句的高级使用方法
(1)INSERT批量插入语句。
(2)UPDATE语句使用嵌套子查询。
(3)DELETE语句使用嵌套子查询。
3实验要求
(1)深入复习教材第三章SQL有关更新语句。
(2)根据书上的例子,针对TPCH数据库模式设计各种更新语句,每种类型更新语句至少要设计一个,描述清楚数据更新要求,运行你所设计的更新语句,并截图相应的实验结果,每幅截图并要有较为详细的描述。也可以按照附1所列示例查询做实验。
(3)实验步骤和实验总结中要详细描述实验过程中出现的问题、原因和解决方法。
4实验步骤
4.1 掌握SQL更新语句的基本使用方法
(1)INSERT基本语句(插入全部列的数据)。
插入一个新顾客的记录,要求每列都给一个合理的值
SET SEARCH_PA TH TO SALES,PUBLIC;
INSERT
INTO
CUSTOMER(CUSTKEY,NAME,ADDRESS,NATIONKEY,PHONE,ACCTBAL,MKTSEGMENT,C OMMENT)
V ALUES('28','陆奕诚',’江苏','40','140',2,'1市区','我');
(2)INSERT基本语句(插入部分列的数据,要求随机生成某些数字列或者字符列的数据)。
插入一条订单记录,可以只给出必要的几个字段的值,其中数值字段可以用RANDOM函数随机生成数值
INSERT
INTO ORDERS(ORDERKEY,CUSTKEY,TOTALPRICE,SHIPPRIORITY)
V ALUES(2600,17,1000000*RANDOM(),10000*RANDOM());
(3)UPDATE基本语句(修改所有记录的某些列的值)。
修改所有零件的零售价,使其价格上浮10%
UPDATE PART
SET RETAILPRICE=RETAILPRICE*1.1;
(4)UPDATE基本语句(修改部分记录的某些列的值)。
修改顾客张三的国籍
UPDATE CUSTOMER
SET NATIONKEY=40
WHERE NAME='张三';
(5)DELETE基本语句(删除所有记录)
DELETE
FROM ORDERS;
(6)DELETE基本语句(删除部分记录)。
DELETE
FROM ORDERS
WHERE ORDERDATE BETWEEN '2000-1-30' AND '2011-2-28';
(7)INSERT批量插入语句(把一个查询结果插入到另外一个表中)。
创建一个顾客购物统计表,记录每个顾客及其购物总数和总价等信息
首先建立一个CUSTOMERITEM的表:
CREATE TABLE CUSTOMERITEM
(CUSTKEY INTEGER PRIMARY KEY,
NAME V ARCHAR(25),
QUANTITY INTEGER,
TOTALPRICE INTEGER);
然后填入数据:
INSERT
INTO CUSTOMERITEM(CUSTKEY,NAME,QUANTITY,TOTALPRICE)
SELECT A.CUSTKEY,NAME,COUNT(ORDERKEY),SUM(TOTALPRICE)
FROM CUSTOMER A,ORDERS B
WHERE A.CUSTKEY=B.CUSTKEY
GROUP BY A.CUSTKEY,NAME
(8)INSERT批量插入语句(使某个表的数据量倍增)。
把零件表的数据插入零件表中,使其数量增倍。
把零件表的数据插入零件表中,多次重复执行,知道总记录数达到50万为止,记录下你执行了多少次?执行过程中你是如何保证实体完整性约束的?
INSERT
INTO PART(PARTKEY,NAME,SIZE,RETAILPRICE)
SELECT PARTKEY+1080,NAME,RANDOM()*100,RANDOM()*1000
FROM PART;
(9)UPDATE语句使用嵌套子查询(利用一个表中的数据来判断是否修改另外一个表中的数据)。
修改顾客张三的订单明细记录中111号零件的折扣
UPDATE LINEITEM C
SET DISCOUNT=0.5
WHERE 111=(SELECT PARTKEY
FROM CUSTOMER A,ORDERS B
WHERE A.CUSTKEY=B.CUSTKEY AND B.ORDERKEY=C.ORDERKEY AND ='张三')
(10)UPDATE语句使用嵌套子查询(利用一个表中的数据修改另外一个表中的数据)。
利用PARTSUPP 表中的供应价格来修改LINEITEM中的EXTENDEDPRICE,假设:EXTENDEPRICE = SUPPL YCOST * QUANTITY * DISCOUNT
UPDATE LINEITEM
SET EXTENDEDPRICE=PARTSUPP.SUPPL YCOST*QUANTITY*DISCOUNT
FROM PARTSUPP
WHERE PARTSUPP.PARTKEY=LINEITEM.PARTKEY;
(11)DELETE语句使用嵌套子查询(利用一个表中的数据来判断是否删除另外一个表中的数据)。
删除顾客张三的订单记录。
DELETE
FROM ORDERS
WHERE (SELECT ORDERKEY