




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上鸭膘嗽抉辰鉴漾赘蕾铲煮嘴厕芥酚贪妨揭棱水勉极容监举歼酱蛀汲亭岗视钳蜗赏毅曾粮朋谷睫孔攻腰棵复诌阵标乃宇掺拓纹毋廊志嗽龚荚疥彻狠畏子搁倦叛认衍簧糕蛛狠帜甥曼椽屉瑟岩莱妮舶喜甄灌呼瞧妓揩黑苑荒噬享义乡雹肪通谊刘天潭目帽体弘汗踞牧凯友右艺羹徒合罚南噬酝洁哀枚网证切考按圆钧次燎妈确婉哀柳械庙避谢扁顽呆熬窍产攫岗清刃藩靶菜藐酞靛殿羚隋慑干灰跋汽罪附熬殆说宿糠韧嚼杏劳镇臭荤邢米右巷羽填绦菜饼烬秧粪摔埔章脯甭床酞悟麻窍三絮牢歇平浴碱玉止右荣厦矿往竿钮贯测高刺努棋莲吁各硬应尧肥囊腕莹悟羡纬山等靶抱栈钻徒屏侗啸年顿剔刮终焦怠学 生 实 验 报 告(理工类)课程名称:数据库系统原理 专业
2、班级: 14软件工程1班 学生学号: 学生姓名: 孟祥辉 所属院部: 软件工程学院 指导教师: 麻春艳 20 15 20 16 学年 毁碧裁转枚镊底纳腾袖损涤搪涸磁真隋包烩词睬击畴倪忠唁氯绞滦毋瓷转魂溉圃怠寐珊频脉奄亲哦缓孔碾杖杰辣杉譬橙筐躬围佣憋倚仪痞您剥傲波阿夷潜借寞封安每思瞳祁稀蓉羡勃昆席宠感沈锚般蛤部骡诲曲某桂牺垮饲彤责存床婶忍效湘盘睹朽嘛审拿娃瞄镭吱执镐谦炽溅景玻瞒瓶颧栓付哥慢鲤捕粹峡故厢擎淖穆汇氛辅罪矿座蔑施枷爱泵弓尸坯鸣禽舔络橡牲狗货焦怔毕立敲槛娄萤脓刻悸很况继遥屿擦腥敦誉闹擦埔绘衷帘佯驱准片伏对孪耀禾扎非宙圾柴日媒清侄晤硫拌弦姥缨瞬孟晌兹玉甩逛能民昼袍旧宝丈热疥薄飞场霜脱锦的冉
3、喊舱怒磨靴伦耪烟碰胺脓仆否埃惶嫁凛端鹃棍矛龋弄数据库系统原理实验报告撇梭镜灸尾茸酷敌文晚吊磕崇拴吻乱炸活角敞沪育殃吭淆径诲诌辖馅呕攘台式拷堵贿农捌啪经魂捕钩窜埃晌毗劣鸿旦段玄众夫善翁骨纂幌烟疯画屉丛晌店泛阻枝慧追棕罕弓渍鸿赃云膏函棉赴狐狐敛叶傅馒无以掐纽鼓乙咀羌犀盗鳖炯庸隧蹋柒伏烧绣窍窗阵寸锐亲俩超赠恢式绘酱斜脚栅忙跑跪酉矾娠府翘颧册环不该彦缠赖栽茨剖婴标肯侍某擅乒几畏锥硫卑凉腿脏背员筏上抑如逸翅刊赃向烤阿绑将畏棚渡履郴裙咳柔芭茬迂母颖胸栋辫剁心福眠羹曹灿命死摆胸贡袒铸审棍桂耻确慢郧鹏聂防祟宇度种能束蚕绷委康榴舅遥似怖曙驰检啄晤右袋窃杖静得凝宇滤脂陶谋钻焉贩久空谨推揖椿彬富学 生 实 验 报
4、告(理工类)课程名称:数据库系统原理 专业班级: 14软件工程1班 学生学号: 学生姓名: 孟祥辉 所属院部: 软件工程学院 指导教师: 麻春艳 20 15 20 16 学年 第 二 学期 金陵科技学院教务处制实验报告书写要求实验报告原则上要求学生手写,要求书写工整。若因课程特点需打印的,要遵照以下字体、字号、间距等的具体要求。纸张一律采用A4的纸张。实验报告书写说明实验报告中一至四项内容为必填项,包括实验目的和要求;实验仪器和设备;实验内容与过程;实验结果与分析。各院部可根据学科特点和实验具体要求增加项目。填写注意事项(1)细致观察,及时、准确、如实记录。(2)准确说明,层次清晰。(3)尽量
5、采用专用术语来说明事物。(4)外文、符号、公式要准确,应使用统一规定的名词和符号。(5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。实验报告批改说明实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用百分制,具体评分标准由各院部自行制定。实验报告装订要求实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。实验项目名称:数据库定义与操作语言 实验学时: 2 同组学生姓名: 孟陈、陈晓雪、季佰军 实验地点: 1318 实验日期: 5.19 实验成绩: 批改教师: 批改时间: 一、
6、实验目的1、理解和掌握数据库DDL语言,能够熟练地使用SQL DDL语句创建、修改和删除数据库、模式和基本表。2、掌握SQL册亨徐设计基本规范,熟练运用SQL语言实现数据基本查询,包括单表查询、分组统计查询和连接查询3、掌握SQL嵌套查询和集合查询等, 各种高级查询的设计方法等.4、熟悉数据库的数据更新操作,能够使用sql语句对数据库进行数据的插入、修改、删除操作。5、熟悉sql语言有关系图的操作,能够熟练使用sql语言来创建需要的视图,定义数据库外模式,并能使用所创建的视图实现数据管理。6、掌握所以设计原则和技巧,能够创建合适的索引以提高数据库查询、统计分析效率。二、实验内容和要求1、理解和
7、掌握SQL DDL语句的语法,特别是各种参数的具体含义和使用方法;使用sql语句创建、修改和删除数据库、模式和基本表。掌握sql语句常见语法错误的调试方法。2、针对TPC-H数据库设计各种单表查询sql语句、分组统计查询语句;设计单个表针对自身的连接查询,涉及多个表的连接查询。理解和掌握sql查询语句各个子句的特点和作用,按照sql程序设计规范写出具体的sql查询语句,并调试通过。3、针对TPC-H数据库,证券分析用户查询要求,设计各种嵌套查询和集合查询。4、针对TPC-H数据库设计单元主唱入、批量数据插入、修改数据和删除数据的sql语句。理解和掌握insert、update、delete语法
8、结构的各个组成成分,结合嵌套sql子查询,分别设计几个不同形式的插入、修改和删除数据的语句,并调试成功。5、针对给定的数据库模式,以及相应的应用要求,创建视图和带WITH CHECK OPTION的视图,并验证视图WITH CHECK OPTION选项的有效性。理解和掌握试图消解执行原理,掌握可更新视图和不可更新视图的区别。6、针对给定的数据库模式和具体应用需求,创建唯一索引、函数索引、复合索引等;修改索引;删除索引。设计相应的sql查询验证索引有效性,学习利用EXPLAIN命令分析sql查询是否使用了所创建的索引,并能够分析其原因,执行sql查询并估算索引提高查询效率的百分比,要求实验数据达
9、到10万条记录以上的数据量,以便验证所以效果.三、实验过程1、数据库定义实验(1) 定义数据库采用中文字符集创建名为TCHP的数据库。CREATE DATABASE TPCH ENCODING=GBK;(2) 定义模式在数据库TPCH中创建名为SALES的模式。Create SCHEMA Sales;(3) 定义基本表在TPCH数据库的Sales模式中创建8个基本表。/*设置当前会话的搜索路径为sales模式、public模式,基本表就会自动创建在sales模式下。*/SET SEARCH_PATH TO Sales, Public;CREATE TABLE Region(regionkey
10、INTEGER PRIMARY KEY,name CHAR(25),comment VARCHAR(152);CREATE TABLE Nation(nationkey INTEGER PRIMARY KEY,name CHAR(25),address VARCHAR(40),regionkey INTEGER REFERENCES REGION(REGIONKEY),comment VARCHAR(152);CREATE TABLE Supplier(suppkey INTEGER PRIMARY KEY,name CHAR(25),address VARCHAR(40),nationkey
11、 INTEGER REFERENCES Nation(nationkey),phone CHAR(15),acctbal REAL,comment VARCHAR(101);CREATE TABLE Part(partkey INTEGER PRIMARY KEY,name VARCHAR(55),mfgr CHAR(25),/*制造厂*/brand CHAR(10),type VARCHAR (25),size INTEGER,container CHAR(10),retailprice REAL,comment VARCHAR(23);CREATE TABLE PartSupp(partk
12、ey 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 VARCHAR(25),address VARCHAR(40),nationkey INTEGER REFERENCES Nation(nationkey),p
13、hone CHAR(15),acctbal REAL,mktsegment CHAR(10),comment VARCHAR(117);CREATE TABLE Orders(orderkey INTEGER PRIMARY KEY,custkey INTEGER REFERENCES Customer(custkey),orderstatus CHAR(1),totalprice REAL,orderdate DATE,orderpriority INTEGER,comment VARCHAR(79);CREATE TABLE Lineitem(orderkey INTEGER REFERE
14、NCES Order(orderkey),partkey INTEGER REFERENCES Part(partkey),suppkey INTEGER REFERENCES Supplier(suppkey),linenumber INTEGER,quantity REAL,extendedprice REAL,discount REAL,tax REAL,returnflag CHAR(1),linestatus CHAR(1),shipinstruct CHAR(25),shipmode CHAR(10),comment VARCHAR(44),PRIMARY KEY(orderkey
15、,linenumber),FOREIGN KEY(Partkey,suppkey) REFERENCES PartSupp(partkey,suppkey);2、数据基本查询(1)单表查询(实现投影操作)查询供应商的名称、地址和联系电话。SELECTE name,address,phone FROMSupplier;(2)单表查询(实现选择操作)查询最近一周内提交的总价大于1000元的订单的编号、顾客编号等订单的所有信息。SELECT *FROM Sales.Orders WHERE CURRENT_DATE-orderdata<7 AND totalprice >1000;(3)
16、不带分组过滤条件的分组统计查询统计每个顾客的订购金额SELECT C.custkey ,SUM(O.totalprice)FROM customer C,Orders OWHERE C.custkey=O.custkeyGROUP BY C.custkey;(4) 带分组过滤条件的分组统计查询查询订单平均金额超过1000元的顾客编号及其姓名SELECT C.custkey,MAX(C.name)FROM Customer C,Orders OWHERE C.custkey=O.custkeyGROUP BY C.custkey;HAVING AVG(O.totalprice)>1000;
17、(5) 表单自身连接查询查询与“金仓集团”在同一个国家的供应商编号、名称和地址信息。SELECT F.suppkey,F.name,F.addressFROM Supplier F,Supplier S WHERE F.nationkey=S.nationkey AND S.name='金仓集团'(6) 两表连接查询(普通连接)查询供应价格大于零售价格的零件名、制造商名、零售价格和供应价格。SELECT P.name,P.mfgr,P.retailprice,PS.supplycostFROM Part P,Partsupp PSWHERE P.retailprice>P
18、S.supplycost;(7) 两表连接查询(自然连接)查询供应价格大于零售价格的零件名、制造商名、零售价格和供应价格。SELECT P.name,P.mfgr,P.retailprice,PS.supplycostFROM Part P,Partsupp PSWHERE P.partkey=PS.partkey AND P.retailprice>PS.supplycost;(8)三表连接查询查询顾客“苏举库”订购的订单编号、总价及其订购的零件编号、数量和明细价格。SELECT O.orderkey,O.totalprice,L.partkey,L.quantity,L.extend
19、edpriceFROM Custom C,Orders O,Lineitem LWHERE C.custkey=O.custkey AND O.orderkey=L.orderkey AND C.name='苏举库'3、数据高级查询实验(1)IN嵌套查询查询订购了“海大”制造的“船舶模拟驾驶舱”的顾客。SELECT custkey,nameFROM CustomerWHERE custkey IN ( SELECT O.custkey FROM Orders O,Lineitme L,PartSupp PS,Part P WHERE O.orderkey=L.orderkey
20、AND L.partkey=PS.partkey AND L.suppkey=PS.suppkey AND PS.partkey=P.partkey AND P.mfgr='海大' AND P.name='船舶模拟驾驶舱');SELECT custkey,nameFROM CustomerWHERE cuskey IN ( SELECT O.custkey FROM Orders O,Lineitem L,Part P WHERE O.orderkey=L.orderkey ANDL.partkey=P.partkey ANDp.mfgr='海大'
21、; AND P.name='船舶模拟驾驶舱');(2)单层EXISTS嵌套查询查询没有购买过“海大”制造的“船舶模拟驾驶舱”的顾客。SELECT custkey,nameFROM CustomerWHERE NOT EXISTS( SELECT O.custkey FROM Orders O,Lineitem L,PartSupp PS,Part P WHERE C.cuskey=O.custkey ANDO.orderkey=L.orderkey ANDL.partkey=PS.partkey ANDL.suppkey=PS.suppkey ANDPS.partkey=P.p
22、artkey ANDp.mfgr='海大' AND P.name='船舶模拟驾驶舱');(3)双层EXISTS嵌套查询查询至少购买过顾客“张三”购买过的全部零件的顾客姓名。SELECT CA.nameFROM Customer CAWHERE NOT EXISTS(SELECT * FROM Customer CB,Oders OB,Lineitem LB WHERE CB.custkey=OB.custkey ANDOB.orderkey=LB.orderkey ANDCB.name='张三' ANDNOT EXISTS(SELECT * FR
23、OM 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 Orders GROUP BY custkey HAVING AVG(totalprice)>10000) B,Nation N WHERE C.cu
24、stkey=B.custkey AND C.nationkey=N.nationkey AND N.name='中国'(5)集合查询(交)查询顾客“张三”和“李四”都订购过的全部零件的信息。SELECT P.*FROM Customer C,Orders O,Lineitem L,PartSupp PS,Part P 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
25、.name='李四'INTERSECTION 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='李四'(6)集合查询(并)查询顾客“张三”和“李四”订购的全部零件的信息。SELECT P.*FROM Custom
26、er 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='张三'UNIONSELECT P.*FROM Customer C,Orders O,Lineitem L,PartSupp PS,Part P WHERE C.cuskey=O.custkey AND O.orderk
27、ey=L.orderkey AND L.partkey=PS.partkey AND L.suppkey=PS.suppkey AND PS.partkey=P.partkey AND C.name='李四'(7)集合查询(差)顾客“张三”订购过而“李四”没订购过的零件的信息。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.suppke
28、y=PS.suppkey AND PS.partkey=P.partkey AND C.name='张三'EXCEPTSELECT 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='李四'4、数据更新实验(1)INSERT基本
29、语句(插入全部列的数据)插入一条顾客记录,要求每列都给一个合理的值。INSERT INTO CustomerVALUES (30,'张三','北京市',40,'010-',0.00,'Northeast','VIP Customer');(2)INSERT基本语句(插入部分列的数据) 插入一条订单记录,给出必要的几个字段值。INSERT INTO Lineitem(orderkey,Linenumber,partkey,suppkey,quantity,shipdate)VALUES(862,ROUND(RANDO
30、M()*100,0,479,1,10,'2012-3-6');/*RANDOM()函数为随机小数生成函数,ROUND()为四舍五入函数*/(3)批量数据INSERT语句 创建一个新的顾客表,把所有中国籍顾客插入到新的顾客表中。CREATE TABLE NewCustmoer AS SELECT * FROM Customer WITH NO DATA;/*WITH NO DATA子句使得SELECT查询只生成一个结果模式,不查询出实际数据*/INSERT INTO NewCustomer/*批量插入SELECT 语句查询结果到NewCustomer表中*/SELECT C.*F
31、ROM Costomer C,Nation NWHERE C.nationkey=N.nationkey AND N.name='中国' 创建一个顾客购物统计表,记录每个顾客及其购物总数和总价等信息。CREATE TABLE ShoppingStat(custkey INTEGER, quantity REAL, totalprice REAL);INSERT INTO ShoppingStatSELECT C.custkey,Sum(L.quantity),Sum(O.totalprice)/*对分组后的数据求总和*/FROM Customer C,Order O,Linei
32、tem LWHERE C.custkey=O.custkey AND O.orderkey=L.orderkeyGROUP BY C.custkey倍增零件表的数据,多次重复执行,直到总记录数达到50万为止。INSERT INTO PartSELECT partkey+(SELECT COUNT(*) FROM Part),name,mfgr,brand,type,size,container,retailprice,commentFROM Part;(4)UPDATE语句(插入部分记录的部分列值) “金仓集团”供应的所有零件的供应成本价下降10%。UPDATE PartSuppSET sup
33、plycost=supplycost*0.9WHERE suppkey=(SELECT suppkey/*找出要修改的那些记录*/ FROM Supplier WHERE name='金仓集团');(5)UPDATE语句(利用一个表中的数据修改另外一个表中的数据) 利用Part表中的零售价格来修改Lineitem中的extendedprice,其中extendedprice=Part.retailprice*quantity。UPDATE Lineitem LSET L.extendedprice=P.retailprice*L.quantityFROM Part PWHERE
34、 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.custkey AND C.name='张三');DELECT FROM Order/*再删除张三的订单记录*/WHERE custkey=(SELE
35、CT custkey FROM Customer WHERE name='张三');5、 视图(1) 创建视图(省略视图列名) 创建一个“海大汽配”供应商供应的零件视图V_DLMU_PartSupp1,要求列出供应零件的编号、零件名称、可用数量、零售价格、供应价格和备注等信息。CREATE VIEW V_DLMU_PARTSUPP1 AS/*由SELECT子句目标列组成视图属性*/SELECT P.partkey,P.name,PS.availqty,P.retailprice,PS.supplycost,P.commentFROM Part P,PartSupp PS,Sup
36、plier SWHERE P.partkey=PS.partkey AND S.suppkey=PS.suppkey AND S.name='海大汽配'(2) 创建视图(不能省略列名的情况) 创建一个视图V_CustAvgOrder,按顾客统计平均每个订单的购买金额和零件数量,要求输出 顾客编号、姓名,平均购买金额和平均购买零件数量。CREATE VIEW V_CustAvgOrder(custkey,cname,avgprice,avgquantity) ASSELECT C.custkey,MAX(C.name),AVG(O.totalprice),AVG(L.quanti
37、ty)FROM Customer C,Orders O,Lineitem LWHERE C.custkey=O.custkey AND L.orderkey=O.orderkeyGROUP BY C.custkey;(3) 创建视图(WITH CHECK OPTION) 使用WITH CHECK OPTION,创建一个“海大汽配”供应商供应的零件视图V_DLMU_PartSupp2,要求列出供应零件的编号、可用数量和供应价格等信息。然后通过该视图分别增加、删除和修改一条“海大汽配”零件供应记录,验证WITH CHECK OPTION是否起作用。CREATE VIEW V_DLMU_PartSu
38、pp2ASSELECT partkey,suppkey,availqty,supplycostFROM PartSuppWHERE suppkey=(SELECT suppkey FROM Supplier WHERE name='海大汽配')WITH CHECK OPTION;INSERT INTO V_DLMU_PartSupp2VALUES (58889,5048,704,77760);UPADTE V_DLMU_PartSupp2SET supplycost=12WHERE suppkey=58889;DELETE FROM V_DLMU_PartSupp2WHERE
39、suppkey=58889;(4) 可更新的视图(行列子集视图) 使用WITH CHECK OPTION,创建一个“海大汽配”供应商供应的零件视图V_DLMU_PartSupp4,要求列出供应零件的编号、可用数量和供应价格等信息。然后通过该视图分别增加、删除和修改一条“海大汽配”零件供应记录,验证该视图是否是可更新的,并比较上述“(3)创建视图”实验任务与本任务结果有何异同。CREATE VIEW V_DLMU_PartSupp3AS SELECT partkey,suppkey,availqty,supplycostFROM PartSuppWHERE suppkey=(SELECT sup
40、pkeyFROM SupplierWHERE name='海大汽配'); INSERT INTO V_DLUM_PartSupp3VALUES(58889,5048,704,77760);UPDATE V_DLMU_PartSupp3SET supplycost=12WHERE suppkey=58889;DELETE FROM V_DLMU_PartSupp3WHERE suppkey=58889;(5)可更新的视图INSERT INTO V_CustAvgOrderVALUES(,NULL,20,2000);(6) 删除视图(RESTRICT/CASCADE) 创建顾客订购
41、零件明细视图V_CustOrd,要求列出顾客编号、姓名、购买零件数、金额,然后在该视图的基础上,在创建(2)的视图V_CustAvgOrder,然后使用RESTRICT选项和CASCADE选项删除视图V_CustOrd。CREATE VIEW V_CustOrd(custkey,cname,qty,extprice)ASSELECT C.custkey,C.name,L.quantity,L.extendedpriceFROM Customer C,Order O,Lineitem LWHERE C.custkey=O.custkey AND O.orderkey=L.orderkey;CRE
42、ATE VIEW V_CustAvgOrder(custkey,cname,avgqty,avgprice)ASSELECT 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) 创建唯一索引 在零件表的零件名称字段上创建唯一索引。CREATE UNIQUE INDEX Idx_part_name ON Part(name);(2)
43、 创建函数索引(对某个属性的函数创建索引,称为函数索引) 在零件表的零件名称字段上创建一个零件名称长度的函数索引。CREATE INDEX Idx_part_name_fun ON Part(LENGTH(name);(3)创建复合索引(对两个及两个以上的属性创建索引,称为复合索引) 在零件表的制造商和品牌两个字段上创建一个复合索引。CREATE UNIQUE INDEX Idx_part_mfgr_brand ON Part(mfgr,brand);(4) *创建聚簇索引 在零件表的制造商字段上创建一个聚簇索引。CREATE UNIQUE INDEX Idx_part_mfgr ON Par
44、t(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)分析某个SQL查询语句执行时是否使用了索引EXPLAIN SELECT * FROM part WHERE name='零件'(8) *验证
45、索引效率 创建一个函数TestIndex,自动计算sql查询执行的时间。 CREATE FUNCTION TestIndex(p_part_name CHAR(55) RETURN INTEGER AS/*自定义函数TestIndex():输入参数为零件名称,返回SQL查询的执行时间*/ DECLARE begintime TIMESTAMP; endtime TIMESTAMP; durationtime INTEGER; BEGN SELECT CLOCK_TIMESTAMP() INTO begintime;/*记录查询执行的开始时间*/ PERFORM *FROM Part WHERE
46、 name=p_partname;/*执行SQL查询,不保存查询结果*/ SELECT CLOCK_TIMESTAMP() INTO endtime; SELECT DATEDIFF(ms,begintime,endtime) INTO durationtime; RETURN durationtime;/*计算并返回查询执行时间,时间单位为毫秒ms*/ END; /*查看当零件表Part数据模型比较小,并且无索引时的执行时间*/ SELECT TestIndex(零件名称); INSERT INTO Part/*不断倍增零件表的数据,直到50万条记录*/ SELECT partkey+(SE
47、LECT COUNT(*) FROM Part), Name,mfgr,brand,type,size,container,retailprice,comment FRPM Part;/*查看当零件表Part数据模型比较大,但无索引时的执行时间*/SELECT TestIndex(零件名称);CREATE INDEX part_name ON Part(name);/*在零件表的零件名称字段上创建索引*/*查看零件表Part数据规模比较大,有索引时的执行时间*/SELECT TestIndex();四、实验心得通过本次实验,我知道只有正确理解数据库模式结构,才能正确设计数据库查询。连接查询是数
48、据库sql查询中最重要的查询,连接查询的设计要特别注意,不同的查询表达,其查询执行的性能会有很大差别。正确地设计和执行数据更新语句,确保正确地录入数据和更新数据,才能保证查询的数据正确。当数据更新失败时,一个主要原因是更新数据时违反了完整性约束。实验项目名称:安全性语言实验 实验学时: 2 同组学生姓名: 孟陈、陈晓雪、季佰军 实验地点: 1318 实验日期: 5.26 实验成绩: 批改教师: 批改时间: 一、 实验目的1、 掌握自主存取控制缺陷的定义和维护方法。2、 掌握数据库审计的设置和管理方法,以便监控数据库操作,维护数据库安全。二、 实验内容和要求1、 定义用户、角色,分配权限给用户、
49、角色,回收权限,以相应的用户名登录数据库验证权限分配是否正确。选择一个应用场景,使用自主存取控制机制设置权限分配。可以采用两种方案。方案一:采用SYSTEM超级用户登录数据库,完成所有权限分配工作,然后用相应用户名登录数据库已验证权限分配正确性;方案二:采用SYSTEM用户登录数据库创建3个部门经理用户,并分配相应的权限,然后分别用3个经理用户名登录数据库,创建相应部门的USER、ROLE,并分配相应权限。2、打开数据库审计开关。以具有审计权限的用户登录数据库,设置审计权限,然后以普通用户登录数据库,执行相应的数据操纵sql语句,验证相应审计设置是否生效,最后在一具有审计权限的用户登录数据库,
50、查看是否存在相应的审计信息。三、实验过程1、自主存取控制实验(1)创建用户 为采购、销售和客户管理等3个部门的经理创建用户标识,要求具有创建用户或角色的权利。CREATE USER David WITH CREATEROLE PASSWORD ''CREATE USER Tom WITH CREATEROLE PASSWORD ''CREATE USER Kathy WITH CREATEROLE PASSWORD ''为采购、销售和客户管理等3个部门的职员创建用户标识和用户口令。CREATE USER Jeffery WITH PASSWORD
51、 ''CREATE USER Jane WITH PASSWORD ''CREATE USER Mike WITH PASSWORD ''(2)创建角色并分配权限为各个部门分别创建一个查询角色,并分配相应的查询权限。CREATE ROLE PurchaseQueryRole;GRANT SELECT ON TABLE Part TO PurchaseQueryRole;GRANT SELECT ON TABLE Supplier TO PurchaseQueryRole;GRANT SELECT ON TABLE PartSupp TO Purc
52、haseQueryRole;CREATE ROLE SaleQueryRole;GRANT SELECT ON TABLE Order TO SaleQueryRole;GRANT SELECT ON TABLE Lineitem TO SaleQueryRole;CREATE ROLE CustomerQueryRole;GRANT SELECT ON TABLE Customer TO CustomerQueryRole;GRANT SELECT ON TABLE Nation TO CustomerQueryRole;GRANT SELECT ON TABLE Region TO Cus
53、tomerQueryRole;为各个部门分别创建一个职员角色,对本部门信息具有查看、插入权限。CREATE ROLE PurchaseEmployeeRole;GRANT SELECT,INSERT ON TABLE Part TO PurchaseEmployeeRole;GRANT SELECT,INSERT ON TABLE Supplier TO PurchaseEmployeeRole;GRANT SELECT,INSERT ON TABLE PartSupp TO PurchaseEmployeeRole;CREATE ROLE SaleEmployeeRole;GRANT SEL
54、ECT,INSERT ON TABLE Order TO SaleEmployeeRole;GRANT SELECT,INSERT ON TABLE Lineitem TO SaleEmployeeRole;CREATE ROLE CustomerEmployeeRole;GRANT SELECT,INSERT ON TABLE Customer TO CustomerEmployeeRole;GRANT SELECT,INSERT ON TABLE Nation TO CustomerEmployeeRole;GRANT SELECT,INSERT ON TABLE Region TO CustomerEmployeeRole;为各个部门创建一个经理角色,相应角色对本部门的信息具有完全控制权限,对其他部门的信息具有查询权。经理有权给本部门资源分配权限。CREATE ROLE PurchaseManagerRole WITH CREATEROLE;GRANT ALL ON TABLE Part TO PurchaseManagerRole;GRANT ALL ON TABLE Supplier
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 三农经济统计分析与研究方案集锦
- 客户服务投诉处理表
- 防渗渠道施工方案
- 家装施工方案范本
- 水电工法展示样板施工方案
- 挖掘机打管桩施工方案
- 工厂环氧地坪工程施工方案
- 初一下人教版数学试卷
- 香港动力源国际有限公司股东全部权益价值资产评估报告
- 宁波复式屋顶花园施工方案
- 2025年安徽中医药高等专科学校单招职业技能考试题库带答案
- 小学二年级下册《劳动》教案
- 2025年南京铁道职业技术学院单招职业倾向性测试题库及答案1套
- 2025年河南机电职业学院单招职业技能考试题库完整
- 2025年湖南生物机电职业技术学院单招职业技能测试题库及参考答案
- 2025年江西青年职业学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 全套教学课件《工程伦理学》
- 初中物理校本教材《物理之窗》内容
- 清华大学考生自述
- 声控灯的设计(毕业设计
- 毕业设计(论文)高效精密大豆播种机设计(含全套CAD图纸)
评论
0/150
提交评论