2022年《数据库系统原理》实验报告.pdf

上传人:Che****ry 文档编号:13074188 上传时间:2022-04-27 格式:PDF 页数:39 大小:357.21KB
返回 下载 相关 举报
2022年《数据库系统原理》实验报告.pdf_第1页
第1页 / 共39页
2022年《数据库系统原理》实验报告.pdf_第2页
第2页 / 共39页
点击查看更多>>
资源描述

《2022年《数据库系统原理》实验报告.pdf》由会员分享,可在线阅读,更多相关《2022年《数据库系统原理》实验报告.pdf(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、数据库系统原理实验报告学 生 实 验 报 告(理工类 ) 课程名称 : 数据库系统原理专业班级 : 14 软件工程 1 班学生学号 : 1412101055 学生姓名 : 孟祥辉所属院部 : 软件工程学院指导教师 : 麻春艳20 15 20 16 学年第二 学期金陵科技学院教务处制实验报告书写要求实验报告原则上要求学生手写, 要求书写工整。若因课程特点需打印的 , 要遵照以下字体、字号、间距等的具体要求。纸张一律采用A4的纸张。实验报告书写说明实验报告中一至四项内容为必填项, 包括实验目的与要求; 实验仪器与设备 ; 实验内容与过程 ; 实验结果与分析。 各院部可根据学科特点与实验具体要求增加

2、项目。填写注意事项(1) 细致观察 , 及时、准确、如实记录。(2) 准确说明 , 层次清晰。(3) 尽量采用专用术语来说明事物。(4) 外文、符号、公式要准确 , 应使用统一规定的名词与符号。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 39 页 - - - - - - - - - - 数据库系统原理实验报告(5) 应独立完成实验报告的书写, 严禁抄袭、复印, 一经发现 , 以零分论处。实验报告批改说明实验报告的批改要及时、认真、仔细, 一律用红色笔批改。实验报告的批改成绩采用百分制,具体

3、评分标准由各院部自行制定。实验报告装订要求实验批改完毕后 , 任课老师将每门课程的每个实验项目的实验报告以自然班为单位、 按学号升序排列 , 装订成册 , 并附上一份该门课程的实验大纲。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 39 页 - - - - - - - - - - 数据库系统原理实验报告实验项目名称 :数据库定义与操作语言实验学时 : 2 同组学生姓名 : 孟陈、陈晓雪、季佰军实验地点 : 1318 实验日期 : 5、19 实验成绩 : 批改教师 : 批改时间 : 精品资料

4、- - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 39 页 - - - - - - - - - - 数据库系统原理实验报告一、实验目的1、理解与掌握数据库DDL 语言,能够熟练地使用 SQL DDL 语句创建、修改与删除数据库、模式与基本表。2、掌握 SQL 册亨徐设计基本规范 ,熟练运用 SQL 语言实现数据基本查询 ,包括单表查询、分组统计查询与连接查询3、掌握 SQL 嵌套查询与集合查询等 , 各种高级查询的设计方法等、4、熟悉数据库的数据更新操作,能够使用 sql 语句对数据库进行数据的插入、修改

5、、删除操作。5、熟悉 sql 语言有关系图的操作 ,能够熟练使用 sql 语言来创建需要的视图 ,定义数据库外模式 ,并能使用所创建的视图实现数据管理。6、掌握所以设计原则与技巧,能够创建合适的索引以提高数据库查询、统计分析效率。二、实验内容与要求1、理解与掌握 SQL DDL 语句的语法 ,特别就是各种参数的具体含义与使用方法;使用 sql 语句创建、修改与删除数据库、模式与基本表。掌握sql 语句常见语法错误的调试方法。2、针对 TPC-H 数据库设计各种单表查询sql 语句、分组统计查询语句 ;设计单个表针对自身的连接查询 ,涉及多个表的连接查询。 理解与掌握 sql 查询语句各个子句的

6、特点与作用 ,按照 sql 程序设计规范写出具体的sql 查询语句 ,并调试通过。3、针对 TPC-H 数据库 ,证券分析用户查询要求 ,设计各种嵌套查询与集合查询。4、针对 TPC-H 数据库设计单元主唱入、批量数据插入、修改数据与删除数据的sql 语句。理解与掌握insert、update 、delete 语法结构的各个组成成分 ,结合嵌套sql 子查询 ,分别设计几个不同形式的插入、修改与删除数据的语句,并调试成功。5、针对给定的数据库模式,以及相应的应用要求,创建视图与带WITH CHECK OPTION 的视图 ,并验证视图 WITH CHECK OPTION 选项的有效性。 理解与

7、掌握试图消解执行原理 ,掌握可更新视图与不可更新视图的区别。6、针对给定的数据库模式与具体应用需求,创建唯一索引、函数索引、复合索引等;修改索引 ;删除索引。设计相应的 sql 查询验证索引有效性 ,学习利用 EXPLAIN命令分析 sql 查询就是否使用了所创建的索引,并能够分析其原因 ,执行 sql 查询并估算索引提高查询效率的百分比,要求实验数据达到10 万条记录以上的数据量 ,以便验证所以效果、三、实验过程1、数据库定义实验(1)定义数据库采用中文字符集创建名为TCHP 的数据库。CREATE DATABASE TPCH ENCODING= GBK ; (2)定义模式在数据库 TPCH

8、 中创建名为 SALES 的模式。Create SCHEMA Sales; (3)定义基本表在 TPCH 数据库的 Sales模式中创建 8 个基本表。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 39 页 - - - - - - - - - - 数据库系统原理实验报告/*设置当前会话的搜索路径为sales模式、public 模式,基本表就会自动创建在sales模式下。 */ SET SEARCH_PATH TO Sales,Public; CREATE TABLE Region( regi

9、onkey INTEGER PRIMARY KEY, name CHAR(25), comment V ARCHAR(152); CREATE TABLE Nation( nationkey INTEGER PRIMARY KEY , name CHAR(25), address V ARCHAR(40), regionkey INTEGER REFERENCES REGION(REGIONKEY), comment V ARCHAR(152); CREATE TABLE Supplier( suppkey INTEGER PRIMARY KEY , name CHAR(25), addres

10、s V ARCHAR(40), nationkey INTEGER REFERENCES Nation(nationkey), phone CHAR(15), acctbal REAL, comment V ARCHAR(101); CREATE TABLE Part( partkey INTEGER PRIMARY KEY , name V ARCHAR(55), mfgr CHAR(25), /*制造厂 */ brand CHAR(10), type VARCHAR (25), size INTEGER, container CHAR(10), retailprice REAL, comm

11、ent V ARCHAR(23); CREATE TABLE PartSupp( partkey INTEGER REFERENCES Part(partkey), suppkey INTEGER REFERENCES Supplier(suppkey), availqty INTEGER, supplycost REAL , comment varchar(199), PRIMARY KEY (parkey,suppkey); CREATE TABLE Costomer( custkey INTEGER PRIMARY KEY , name V ARCHAR(25), address V A

12、RCHAR(40), nationkey INTEGER REFERENCES Nation(nationkey), phone CHAR(15), 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 39 页 - - - - - - - - - - 数据库系统原理实验报告acctbal REAL, mktsegment CHAR(10), comment V ARCHAR(117); CREATE TABLE Orders( orderkey INTEGER PRIMARY KEY , cust

13、key INTEGER REFERENCES Customer(custkey), orderstatus CHAR(1), totalprice REAL, orderdate DATE, orderpriority INTEGER, comment V ARCHAR(79); CREATE TABLE Lineitem( orderkey INTEGER REFERENCES Order(orderkey), partkey INTEGER REFERENCES Part(partkey), suppkey INTEGER REFERENCES Supplier(suppkey), lin

14、enumber INTEGER, quantity REAL, extendedprice REAL, discount REAL, tax REAL, returnflag CHAR(1), linestatus CHAR(1), shipinstruct CHAR(25), shipmode CHAR(10), comment V ARCHAR(44), PRIMARY KEY(orderkey,linenumber), FOREIGN KEY(Partkey,suppkey) REFERENCES PartSupp(partkey,suppkey); 2、数据基本查询(1)单表查询 (实

15、现投影操作 ) 查询供应商的名称、地址与联系电话。SELECTE name,address,phone FROMSupplier; (2)单表查询 (实现选择操作 ) 查询最近一周内提交的总价大于1000 元的订单的编号、顾客编号等订单的所有信息。SELECT *FROM Sales、Orders WHERE CURRENT_DATE-orderdata1000; (3)不带分组过滤条件的分组统计查询统计每个顾客的订购金额SELECT C、custkey ,SUM(O、totalprice) FROM customer C,Orders O WHERE C、custkey=O、custkey

16、GROUP BY C、custkey; (4)带分组过滤条件的分组统计查询查询订单平均金额超过1000元的顾客编号及其姓名精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 39 页 - - - - - - - - - - 数据库系统原理实验报告SELECT C、custkey,MAX(C、name) FROM Customer C,Orders O WHERE C、custkey=O、custkey GROUP BY C、custkey; HAVING AVG(O、totalprice)1000

17、; (5)表单自身连接查询查询与“金仓集团”在同一个国家的供应商编号、名称与地址信息。SELECT F、suppkey,F、name,F 、address FROM Supplier F,Supplier S WHERE F、nationkey=S、nationkey AND S、name=金仓集团 ; (6)两表连接查询 (普通连接 ) 查询供应价格大于零售价格的零件名、制造商名、零售价格与供应价格。SELECT P、name,P 、mfgr,P、retailprice,PS、supplycost FROM Part P,Partsupp PS WHERE P、retailpricePS、s

18、upplycost; (7)两表连接查询 (自然连接 ) 查询供应价格大于零售价格的零件名、制造商名、零售价格与供应价格。SELECT P、name,P 、mfgr,P、retailprice,PS、supplycost FROM Part P,Partsupp PS WHERE P、partkey=PS、partkey AND P、retailpricePS、supplycost; (8)三表连接查询查询顾客“苏举库”订购的订单编号、总价及其订购的零件编号、数量与明细价格。SELECT O、orderkey,O、totalprice,L、partkey,L、quantity,L、extend

19、edprice FROM Custom C,Orders O,Lineitem L WHERE C、custkey=O、custkey AND O、orderkey=L、orderkey AND C、name=苏举库 ; 3、数据高级查询实验(1)IN 嵌套查询查询订购了“海大”制造的“船舶模拟驾驶舱”的顾客。SELECT custkey,name FROM Customer WHERE custkey IN ( SELECT O、custkey FROM Orders O,Lineitme L,PartSupp PS,Part P WHERE O、orderkey=L、orderkey AN

20、D L、partkey=PS、partkey AND L、suppkey=PS 、suppkey AND PS、partkey=P、partkey AND P、mfgr=海大 AND P、name= 船舶模拟驾驶舱 ); SELECT custkey,name FROM Customer WHERE cuskey IN ( SELECT O、custkey FROM Orders O,Lineitem L,Part P 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 39 页 - - - -

21、- - - - - - 数据库系统原理实验报告WHERE O、orderkey=L、orderkey AND L、partkey=P、partkey AND p、mfgr=海大 AND P、name=船舶模拟驾驶舱 ); (2)单层 EXISTS 嵌套查询查询没有购买过“海大”制造的“船舶模拟驾驶舱”的顾客。SELECT custkey,name FROM Customer WHERE NOT EXISTS( SELECT O 、custkey FROM Orders O,Lineitem L,PartSupp PS,Part P WHERE C、cuskey=O、custkey AND O、

22、orderkey=L、orderkey AND L、partkey=PS、partkey AND L、suppkey=PS 、suppkey AND PS、partkey=P、partkey AND p、mfgr=海大 AND P、name=船舶模拟驾驶舱 ); (3)双层 EXISTS 嵌套查询查询至少购买过顾客“张三”购买过的全部零件的顾客姓名。SELECT CA、name FROM Customer CA WHERE NOT EXISTS (SELECT * FROM Customer CB,Oders OB,Lineitem LB WHERE CB、custkey=OB、custkey

23、 AND OB、orderkey=LB、orderkey AND CB、name=张三 AND NOT EXISTS(SELECT * FROM Orders OC,Lineitem LC WHERE CA、custkey=LC、custkey AND OC、orderkey=LC、orderkey AND LB、suppkey=LC、suppkey AND LB、partkey=LC、partkey); (4)FROM 子句中的嵌套查询查询订单平均金额超过1 万元的顾客中的中国籍顾客信息。SELECT C、* FROM Customer C,(SELECT custkey FROM Orde

24、rs GROUP BY custkey HAVING AVG(totalprice)10000) B,Nation N WHERE C、custkey=B、custkey AND C、nationkey=N、nationkey AND N、name=中国; (5)集合查询 (交) 查询顾客“张三”与“李四”都订购过的全部零件的信息。SELECT P、* FROM Customer C,Orders O,Lineitem L,PartSupp PS,Part P 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -

25、第 8 页,共 39 页 - - - - - - - - - - 数据库系统原理实验报告WHERE C、custkey=O、custkey AND O、orderkey=L、orderkey AND L、suppkey=PS 、suppkey AND L、partkey=PS、partkey AND PS、partkey=P、partkey AND C、name=李四; INTERSECTION SELECT P、* FROM Customer C,Orders O,Lineitem L,PartSupp PS,Part P WHERE C、cuskey=O、custkey AND O、ord

26、erkey=L、orderkey AND L、partkey=PS、partkey AND L、suppkey=PS 、suppkey AND PS、partkey=P、partkey AND C、name=李四; (6)集合查询 (并) 查询顾客“张三”与“李四”订购的全部零件的信息。SELECT P、* FROM Customer C,Orders O,Lineitem L,PartSupp PS,Part P WHERE C、cuskey=O、custkey AND O、orderkey=L、orderkey AND L、partkey=PS、partkey AND L、suppkey=

27、PS 、suppkey AND PS、partkey=P、partkey AND C、name=张三; UNION SELECT P、* FROM Customer C,Orders O,Lineitem L,PartSupp PS,Part P WHERE C、cuskey=O、custkey AND O、orderkey=L、orderkey AND L、partkey=PS、partkey AND L、suppkey=PS 、suppkey AND PS、partkey=P、partkey AND C、name=李四; (7)集合查询 (差) 顾客“张三”订购过而“李四”没订购过的零件的

28、信息。SELECT P、* FROM Customer C,Orders O,Lineitem L,PartSupp PS,Part P WHERE C、cuskey=O、custkey AND O、orderkey=L、orderkey AND L、partkey=PS、partkey AND L、suppkey=PS 、suppkey AND PS、partkey=P、partkey AND C、name=张三; EXCEPT SELECT P、* FROM Customer C,Orders O,Lineitem L,PartSupp PS,Part P 精品资料 - - - 欢迎下载

29、- - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 9 页,共 39 页 - - - - - - - - - - 数据库系统原理实验报告WHERE C、cuskey=O、custkey AND O、orderkey=L、orderkey AND L、partkey=PS、partkey AND L、suppkey=PS 、suppkey AND PS、partkey=P、partkey AND C、name=李四; 4、数据更新实验(1)INSERT 基本语句 (插入全部列的数据 ) 插入一条顾客记录 ,要求每列都给一个合理的值。INSER

30、T INTO Customer VALUES (30,张三,北京市 ,40,0、00,Northeast,VIP Customer); (2)INSERT 基本语句 (插入部分列的数据 ) 插入一条订单记录 ,给出必要的几个字段值。INSERT INTO Lineitem(orderkey,Linenumber,partkey,suppkey,quantity,shipdate) VALUES(862,ROUND(RANDOM()*100,0,479,1,10,2012-3-6); /*RANDOM() 函数为随机小数生成函数 ,ROUND() 为四舍五入函数 */ (3)批量数据 INSER

31、T 语句创建一个新的顾客表 ,把所有中国籍顾客插入到新的顾客表中。CREATE TABLE NewCustmoer AS SELECT * FROM Customer WITH NO DATA; /*WITH NO DATA子句使得 SELECT 查询只生成一个结果模式 ,不查询出实际数据*/ INSERT INTO NewCustomer /* 批 量 插 入SELECT 语 句 查 询 结 果 到NewCustomer表中*/ SELECT C、* FROM Costomer C,Nation N WHERE C、nationkey=N、nationkey AND N、name=中国; 创

32、建一个顾客购物统计表 ,记录每个顾客及其购物总数与总价等信息。CREATE TABLE ShoppingStat (custkey INTEGER, quantity REAL, totalprice REAL); INSERT INTO ShoppingStat SELECT C、custkey,Sum(L、quantity),Sum(O、totalprice) /* 对分组后的数据求总与 */ FROM Customer C,Order O,Lineitem L WHERE C、custkey=O、custkey AND O、orderkey=L、orderkey GROUP BY C、c

33、ustkey 倍增零件表的数据 ,多次重复执行 ,直到总记录数达到50万为止。INSERT INTO Part SELECT partkey+(SELECT COUNT(*) FROM Part), name,mfgr,brand,type,size,container,retailprice,comment FROM Part; (4)UPDATE 语句(插入部分记录的部分列值) “金仓集团”供应的所有零件的供应成本价下降10%。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 10 页,共 39 页 -

34、 - - - - - - - - - 数据库系统原理实验报告UPDATE PartSupp SET supplycost=supplycost*0、9 WHERE suppkey=(SELECT suppkey /*找出要修改的那些记录 */ FROM Supplier WHERE name=金仓集团 ); (5)UPDATE 语句(利用一个表中的数据修改另外一个表中的数据) 利 用Part 表 中 的 零 售 价 格 来 修 改Lineitem中 的extendedprice,其 中extendedprice=Part 、retailprice*quantity。UPDATE Lineite

35、m L SET L、extendedprice=P 、retailprice*L 、quantity FROM Part P WHERE L 、partkey=P、partkey; /*Lineitem 表也可以直接与 Part表相连接 ,而不需通过 PartSupp连接*/ (6)DELETE 基本语句 (删除给定条件的所有记录 ) 删除顾客张三的所有订单记录。DELECT FROM Lineitem /*先删除张三的订单明细记录*/ WHERE orderkey IN(SELECT orderkey FROM Order O,Customer C WHERE O、custkey=C、cus

36、tkey AND C、name=张三); DELECT FROM Order /*再删除张三的订单记录 */ WHERE custkey=(SELECT custkey FROM Customer WHERE name=张三); 5、 视图(1)创建视图 (省略视图列名 ) 创建一个“海大汽配”供应商供应的零件视图V_DLMU_PartSupp1, 要求列出供应零件的编号、零件名称、可用数量、零售价格、供应价格与备注等信息。CREATE VIEW V_DLMU_PARTSUPP1 AS /* 由 SELECT 子句目标列组成视图属性*/ SELECT P、partkey,P 、name,PS

37、、availqty,P、retailprice,PS、supplycost,P 、comment FROM Part P,PartSupp PS,Supplier S WHERE P、partkey=PS、partkey AND S 、suppkey=PS 、suppkey AND S、name=海大汽配 ; (2)创建视图 (不能省略列名的情况 ) 创建一个视图V_CustAvgOrder,按顾客统计平均每个订单的购买金额与零件数量, 要求输出顾客编号、姓名 , 平均购买金额与平均购买零件数量。CREATE VIEW V_CustAvgOrder(custkey,cname,avgprice

38、,avgquantity) AS SELECT C 、custkey,MAX(C、name),AVG(O 、totalprice),AVG(L、quantity) FROM Customer C,Orders O,Lineitem L WHERE C、custkey=O、custkey AND L 、orderkey=O、orderkey GROUP BY C、custkey; (3)创建视图 (WITH CHECK OPTION) 使用WITH CHECK OPTION, 创建一个“海大汽配”供应商供应的零件视图精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎

39、下载 名师归纳 - - - - - - - - - -第 11 页,共 39 页 - - - - - - - - - - 数据库系统原理实验报告V_DLMU_PartSupp2, 要求列出供应零件的编号、可用数量与供应价格等信息。然后通过该视图分别增加、删除与修改一条“海大汽配”零件供应记录, 验证 WITH CHECK OPTION就是否起作用。CREATE VIEW V_DLMU_PartSupp2 AS SELECT partkey,suppkey,availqty,supplycost FROM PartSupp WHERE suppkey=(SELECT suppkey FROM S

40、upplier WHERE name=海大汽配 ) WITH CHECK OPTION; INSERT INTO V_DLMU_PartSupp2 VALUES (58889,5048,704,77760); UPADTE V_DLMU_PartSupp2 SET supplycost=12 WHERE suppkey=58889; DELETE FROM V_DLMU_PartSupp2 WHERE suppkey=58889; (4)可更新的视图 ( 行列子集视图 ) 使用WITH CHECK OPTION, 创建一个“海大汽配”供应商供应的零件视图V_DLMU_PartSupp4, 要求

41、列出供应零件的编号、可用数量与供应价格等信息。然后通过该视图分别增加、删除与修改一条“海大汽配”零件供应记录, 验证该视图就是否就是可更新的 , 并比较上述“(3) 创建视图”实验任务与本任务结果有何异同。CREATE VIEW V_DLMU_PartSupp3 AS SELECT partkey,suppkey,availqty,supplycost FROM PartSupp WHERE suppkey=(SELECT suppkey FROM Supplier WHERE name=海大汽配 ); INSERT INTO V_DLUM_PartSupp3 VALUES(58889,504

42、8,704,77760); UPDATE V_DLMU_PartSupp3 SET supplycost=12 WHERE suppkey=58889; DELETE FROM V_DLMU_PartSupp3 WHERE suppkey=58889; (5) 可更新的视图INSERT INTO V_CustAvgOrder VALUES(100000,NULL,20,2000); (6)删除视图 (RESTRICT/CASCADE) 创建顾客订购零件明细视图V_CustOrd,要求列出顾客编号、 姓名、购买零件数、金额 , 然后在该视图的基础上, 在创建 (2) 的视图V_CustAvgOr

43、der, 然后使用精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 12 页,共 39 页 - - - - - - - - - - 数据库系统原理实验报告RESTRICT 选项与 CASCADE 选项删除视图 V_CustOrd。CREATE VIEW V_CustOrd(custkey,cname,qty,extprice) AS SELECT C 、custkey,C 、name,L、quantity,L、extendedprice FROM Customer C,Order O,Lineitem L

44、WHERE C、custkey=O、custkey AND O、orderkey=L 、orderkey; CREATE VIEW V_CustAvgOrder(custkey,cname,avgqty,avgprice) AS SELECT custkey,MAX(cname),AVG(qty),AVG(extprice) FROM V_CustOrd /* 在视图 V_CustOrd上再创建视图 */ GROUP BY custkey; DROP VIEW V_CustOrd RESTRICT; DROP VIEW V_CustOrd CASCADE; 6、 索引(1)创建唯一索引在零件表

45、的零件名称字段上创建唯一索引。CREATE UNIQUE INDEX Idx_part_name ON Part(name); (2)创建函数索引 ( 对某个属性的函数创建索引, 称为函数索引 ) 在零件表的零件名称字段上创建一个零件名称长度的函数索引。CREATE INDEX Idx_part_name_fun ON Part(LENGTH(name); (3) 创建复合索引 ( 对两个及两个以上的属性创建索引, 称为复合索引 ) 在零件表的制造商与品牌两个字段上创建一个复合索引。CREATE UNIQUE INDEX Idx_part_mfgr_brand ON Part(mfgr,bra

46、nd); (4)*创建聚簇索引在零件表的制造商字段上创建一个聚簇索引。CREATE UNIQUE INDEX Idx_part_mfgr ON Part(mfgr); CLUSTER Idx_part_mfgr ON Part; (5)创建 Hash索引零件表的名称字段上创建一个Hash索引。CREATE INDEX Idx_part_name_hash ON Part USING HASH(name); (6)修改索引名称修改零件表的名称字段上的索引名。ALTER INDEX Idx_part_name_hash RENAME TO Idx_part_name_hash_new; (7) 分

47、析某个 SQL查询语句执行时就是否使用了索引EXPLAIN SELECT * FROM part WHERE name=零件; (8)*验证索引效率创建一个函数 TestIndex, 自动计算 sql 查询执行的时间。 CREATE FUNCTION TestIndex(p_part_name CHAR(55) RETURN INTEGER AS /* 自定义函数 TestIndex():输入参数为零件名称 , 返回 SQL查询的执行时间*/ DECLARE begintime TIMESTAMP; endtime TIMESTAMP; durationtime INTEGER; 精品资料 -

48、 - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 13 页,共 39 页 - - - - - - - - - - 数据库系统原理实验报告 BEGN SELECT CLOCK_TIMESTAMP() INTO begintime; /* 记录查询执行的开始时间*/ PERFORM *FROM Part WHERE name=p_partname; /* 执行 SQL查询, 不保存查询结果 */ SELECT CLOCK_TIMESTAMP() INTO endtime; SELECT DATEDIFF( ms ,begi

49、ntime,endtime) INTO durationtime; RETURN durationtime; /* 计算并返回查询执行时间, 时间单位为毫秒 ms*/ END; /* 查瞧当零件表 Part 数据模型比较小 , 并且无索引时的执行时间*/ SELECT TestIndex( 零件名称 ); INSERT INTO Part /* 不断倍增零件表的数据 , 直到 50 万条记录 */ SELECT partkey+(SELECT COUNT(*) FROM Part), Name,mfgr,brand,type,size,container,retailprice,comment

50、 FRPM Part; /* 查瞧当零件表 Part 数据模型比较大 , 但无索引时的执行时间 */ SELECT TestIndex( 零件名称 ); CREATE INDEX part_name ON Part(name); /* 在零件表的零件名称字段上创建索引 */ /* 查瞧零件表 Part 数据规模比较大 , 有索引时的执行时间 */ SELECT TestIndex();四、实验心得通过本次实验 , 我知道只有正确理解数据库模式结构, 才能正确设计数据库查询。连接查询就是数据库sql 查询中最重要的查询 , 连接查询的设计要特别注意, 不同的查询表达 , 其查询执行的性能会有很大

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁