《數(shù)據(jù)庫系統(tǒng)原理》實(shí)驗(yàn)報(bào)告

上傳人:jun****875 文檔編號(hào):17746268 上傳時(shí)間:2020-12-04 格式:DOC 頁數(shù):45 大?。?79.41KB
收藏 版權(quán)申訴 舉報(bào) 下載
《數(shù)據(jù)庫系統(tǒng)原理》實(shí)驗(yàn)報(bào)告_第1頁
第1頁 / 共45頁
《數(shù)據(jù)庫系統(tǒng)原理》實(shí)驗(yàn)報(bào)告_第2頁
第2頁 / 共45頁
《數(shù)據(jù)庫系統(tǒng)原理》實(shí)驗(yàn)報(bào)告_第3頁
第3頁 / 共45頁

下載文檔到電腦,查找使用更方便

9.9 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《《數(shù)據(jù)庫系統(tǒng)原理》實(shí)驗(yàn)報(bào)告》由會(huì)員分享,可在線閱讀,更多相關(guān)《《數(shù)據(jù)庫系統(tǒng)原理》實(shí)驗(yàn)報(bào)告(45頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。

1、學(xué) 生 實(shí) 驗(yàn) 報(bào) 告(理工類)課程名稱:數(shù)據(jù)庫系統(tǒng)原理 專業(yè)班級(jí): 14軟件工程1班 學(xué)生學(xué)號(hào): 1412101055 學(xué)生姓名: 孟祥輝 所屬院部: 軟件工程學(xué)院 指導(dǎo)教師: 麻春艷 20 15 20 16 學(xué)年 第 二 學(xué)期 金陵科技學(xué)院教務(wù)處制實(shí)驗(yàn)報(bào)告書寫要求實(shí)驗(yàn)報(bào)告原則上要求學(xué)生手寫,要求書寫工整。若因課程特點(diǎn)需打印的,要遵照以下字體、字號(hào)、間距等的具體要求。紙張一律采用A4的紙張。實(shí)驗(yàn)報(bào)告書寫說明實(shí)驗(yàn)報(bào)告中一至四項(xiàng)內(nèi)容為必填項(xiàng),包括實(shí)驗(yàn)?zāi)康暮鸵?;?shí)驗(yàn)儀器和設(shè)備;實(shí)驗(yàn)內(nèi)容與過程;實(shí)驗(yàn)結(jié)果與分析。各院部可根據(jù)學(xué)科特點(diǎn)和實(shí)驗(yàn)具體要求增加項(xiàng)目。填寫注意事項(xiàng)(1)細(xì)致觀察,及時(shí)、準(zhǔn)確、如實(shí)

2、記錄。(2)準(zhǔn)確說明,層次清晰。(3)盡量采用專用術(shù)語來說明事物。(4)外文、符號(hào)、公式要準(zhǔn)確,應(yīng)使用統(tǒng)一規(guī)定的名詞和符號(hào)。(5)應(yīng)獨(dú)立完成實(shí)驗(yàn)報(bào)告的書寫,嚴(yán)禁抄襲、復(fù)印,一經(jīng)發(fā)現(xiàn),以零分論處。實(shí)驗(yàn)報(bào)告批改說明實(shí)驗(yàn)報(bào)告的批改要及時(shí)、認(rèn)真、仔細(xì),一律用紅色筆批改。實(shí)驗(yàn)報(bào)告的批改成績采用百分制,具體評(píng)分標(biāo)準(zhǔn)由各院部自行制定。實(shí)驗(yàn)報(bào)告裝訂要求實(shí)驗(yàn)批改完畢后,任課老師將每門課程的每個(gè)實(shí)驗(yàn)項(xiàng)目的實(shí)驗(yàn)報(bào)告以自然班為單位、按學(xué)號(hào)升序排列,裝訂成冊,并附上一份該門課程的實(shí)驗(yàn)大綱。實(shí)驗(yàn)項(xiàng)目名稱:數(shù)據(jù)庫定義與操作語言 實(shí)驗(yàn)學(xué)時(shí): 2 同組學(xué)生姓名: 孟陳、陳曉雪、季佰軍 實(shí)驗(yàn)地點(diǎn): 1318 實(shí)驗(yàn)日期: 5.19

3、 實(shí)驗(yàn)成績: 批改教師: 批改時(shí)間: 一、實(shí)驗(yàn)?zāi)康?、理解和掌握數(shù)據(jù)庫DDL語言,能夠熟練地使用SQL DDL語句創(chuàng)建、修改和刪除數(shù)據(jù)庫、模式和基本表。2、掌握SQL冊亨徐設(shè)計(jì)基本規(guī)范,熟練運(yùn)用SQL語言實(shí)現(xiàn)數(shù)據(jù)基本查詢,包括單表查詢、分組統(tǒng)計(jì)查詢和連接查詢3、掌握SQL嵌套查詢和集合查詢等, 各種高級(jí)查詢的設(shè)計(jì)方法等.4、熟悉數(shù)據(jù)庫的數(shù)據(jù)更新操作,能夠使用sql語句對(duì)數(shù)據(jù)庫進(jìn)行數(shù)據(jù)的插入、修改、刪除操作。5、熟悉sql語言有關(guān)系圖的操作,能夠熟練使用sql語言來創(chuàng)建需要的視圖,定義數(shù)據(jù)庫外模式,并能使用所創(chuàng)建的視圖實(shí)現(xiàn)數(shù)據(jù)管理。6、掌握所以設(shè)計(jì)原則和技巧,能夠創(chuàng)建合適的索引以提高數(shù)據(jù)庫查詢、

4、統(tǒng)計(jì)分析效率。二、實(shí)驗(yàn)內(nèi)容和要求1、理解和掌握SQL DDL語句的語法,特別是各種參數(shù)的具體含義和使用方法;使用sql語句創(chuàng)建、修改和刪除數(shù)據(jù)庫、模式和基本表。掌握sql語句常見語法錯(cuò)誤的調(diào)試方法。2、針對(duì)TPC-H數(shù)據(jù)庫設(shè)計(jì)各種單表查詢sql語句、分組統(tǒng)計(jì)查詢語句;設(shè)計(jì)單個(gè)表針對(duì)自身的連接查詢,涉及多個(gè)表的連接查詢。理解和掌握sql查詢語句各個(gè)子句的特點(diǎn)和作用,按照sql程序設(shè)計(jì)規(guī)范寫出具體的sql查詢語句,并調(diào)試通過。3、針對(duì)TPC-H數(shù)據(jù)庫,證券分析用戶查詢要求,設(shè)計(jì)各種嵌套查詢和集合查詢。4、針對(duì)TPC-H數(shù)據(jù)庫設(shè)計(jì)單元主唱入、批量數(shù)據(jù)插入、修改數(shù)據(jù)和刪除數(shù)據(jù)的sql語句。理解和掌握i

5、nsert、update、delete語法結(jié)構(gòu)的各個(gè)組成成分,結(jié)合嵌套sql子查詢,分別設(shè)計(jì)幾個(gè)不同形式的插入、修改和刪除數(shù)據(jù)的語句,并調(diào)試成功。5、針對(duì)給定的數(shù)據(jù)庫模式,以及相應(yīng)的應(yīng)用要求,創(chuàng)建視圖和帶WITH CHECK OPTION的視圖,并驗(yàn)證視圖WITH CHECK OPTION選項(xiàng)的有效性。理解和掌握試圖消解執(zhí)行原理,掌握可更新視圖和不可更新視圖的區(qū)別。6、針對(duì)給定的數(shù)據(jù)庫模式和具體應(yīng)用需求,創(chuàng)建唯一索引、函數(shù)索引、復(fù)合索引等;修改索引;刪除索引。設(shè)計(jì)相應(yīng)的sql查詢驗(yàn)證索引有效性,學(xué)習(xí)利用EXPLAIN命令分析sql查詢是否使用了所創(chuàng)建的索引,并能夠分析其原因,執(zhí)行sql查詢并估

6、算索引提高查詢效率的百分比,要求實(shí)驗(yàn)數(shù)據(jù)達(dá)到10萬條記錄以上的數(shù)據(jù)量,以便驗(yàn)證所以效果.三、實(shí)驗(yàn)過程1、數(shù)據(jù)庫定義實(shí)驗(yàn)(1) 定義數(shù)據(jù)庫采用中文字符集創(chuàng)建名為TCHP的數(shù)據(jù)庫。CREATE DATABASE TPCH ENCODING=GBK;(2) 定義模式在數(shù)據(jù)庫TPCH中創(chuàng)建名為SALES的模式。Create SCHEMA Sales;(3) 定義基本表在TPCH數(shù)據(jù)庫的Sales模式中創(chuàng)建8個(gè)基本表。/*設(shè)置當(dāng)前會(huì)話的搜索路徑為sales模式、public模式,基本表就會(huì)自動(dòng)創(chuàng)建在sales模式下。*/SET SEARCH_PATH TO Sales, Public;CREATE TA

7、BLE Region(regionkey 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

8、VARCHAR(40),nationkey 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

9、 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 VARCHAR(25),address VARCHAR(40),nationkey INTEGER REFERENCE

10、S Nation(nationkey),phone 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(or

11、derkey INTEGER REFERENCES 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)

12、,PRIMARY KEY(orderkey,linenumber),FOREIGN KEY(Partkey,suppkey) REFERENCES PartSupp(partkey,suppkey);2、數(shù)據(jù)基本查詢(1)單表查詢(實(shí)現(xiàn)投影操作)查詢供應(yīng)商的名稱、地址和聯(lián)系電話。SELECTE name,address,phone FROMSupplier;(2)單表查詢(實(shí)現(xiàn)選擇操作)查詢最近一周內(nèi)提交的總價(jià)大于1000元的訂單的編號(hào)、顧客編號(hào)等訂單的所有信息。SELECT *FROM Sales.Orders WHERE CURRENT_DATE-orderdata1000;(3)不帶分組

13、過濾條件的分組統(tǒng)計(jì)查詢統(tǒng)計(jì)每個(gè)顧客的訂購金額SELECT C.custkey ,SUM(O.totalprice)FROM customer C,Orders OWHERE C.custkey=O.custkeyGROUP BY C.custkey;(4) 帶分組過濾條件的分組統(tǒng)計(jì)查詢查詢訂單平均金額超過1000元的顧客編號(hào)及其姓名SELECT C.custkey,MAX(C.name)FROM Customer C,Orders OWHERE C.custkey=O.custkeyGROUP BY C.custkey;HAVING AVG(O.totalprice)1000;(5) 表單自身

14、連接查詢查詢與“金倉集團(tuán)”在同一個(gè)國家的供應(yīng)商編號(hào)、名稱和地址信息。SELECT F.suppkey,F.name,F(xiàn).addressFROM Supplier F,Supplier S WHERE F.nationkey=S.nationkey AND S.name=金倉集團(tuán);(6) 兩表連接查詢(普通連接)查詢供應(yīng)價(jià)格大于零售價(jià)格的零件名、制造商名、零售價(jià)格和供應(yīng)價(jià)格。SELECT P.name,P.mfgr,P.retailprice,PS.supplycostFROM Part P,Partsupp PSWHERE P.retailpricePS.supplycost;(7) 兩表連接

15、查詢(自然連接)查詢供應(yīng)價(jià)格大于零售價(jià)格的零件名、制造商名、零售價(jià)格和供應(yīng)價(jià)格。SELECT P.name,P.mfgr,P.retailprice,PS.supplycostFROM Part P,Partsupp PSWHERE P.partkey=PS.partkey AND P.retailpricePS.supplycost;(8)三表連接查詢查詢顧客“蘇舉庫”訂購的訂單編號(hào)、總價(jià)及其訂購的零件編號(hào)、數(shù)量和明細(xì)價(jià)格。SELECT O.orderkey,O.totalprice,L.partkey,L.quantity,L.extendedpriceFROM Custom C,Orde

16、rs O,Lineitem LWHERE C.custkey=O.custkey AND O.orderkey=L.orderkey AND C.name=蘇舉庫;3、數(shù)據(jù)高級(jí)查詢實(shí)驗(yàn)(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 AND L.partkey=PS.partkey AND L.sup

17、pkey=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=海大 AND P.name=船舶模擬駕駛艙);(2)單層EXISTS嵌套查詢查詢沒有購買過“海大”制造的“船舶模擬駕駛艙”的顧客。

18、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.partkey ANDp.mfgr=海大 AND P.name=船舶模擬駕駛艙);(3)雙層EXISTS嵌套查詢查詢至少購買過顧客“張三”購買過的全部

19、零件的顧客姓名。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 * FROM Orders OC,Lineitem LC WHERE CA.custkey=LC.custkey AND OC.orderkey=LC.orderkey AND LB.suppkey=LC.suppk

20、ey 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.custkey=B.custkey AND C.nationkey=N.nationkey AND N.name=中國;(5)集合查詢(交)查詢顧客“張三”和“李四”都訂購過的全部零件的信息。SELECT P.*FROM

21、 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.name=李四;INTERSECTION SELECT P.*FROM Customer C,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 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=P

23、S.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.orderkey=L.orderkey AND L.partkey=PS.partkey AND L.suppkey=PS.suppkey AND PS.partkey=P.partkey AND C.name=李四;(7)集合查詢(差)顧客“張三”訂購過而“李四”沒訂購過的零件的信息。SELECT

24、 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=張三;EXCEPTSELECT P.*FROM Customer C,Orders O,Lineitem L,PartSupp PS,Part P WHERE C.cuskey=O.custkey AND O

25、.orderkey=L.orderkey AND L.partkey=PS.partkey AND L.suppkey=PS.suppkey AND PS.partkey=P.partkey AND C.name=李四;4、數(shù)據(jù)更新實(shí)驗(yàn)(1)INSERT基本語句(插入全部列的數(shù)據(jù))插入一條顧客記錄,要求每列都給一個(gè)合理的值。INSERT INTO CustomerVALUES (30,張三,北京市,40,010-51001199,0.00,Northeast,VIP Customer);(2)INSERT基本語句(插入部分列的數(shù)據(jù)) 插入一條訂單記錄,給出必要的幾個(gè)字段值。INSERT INT

26、O Lineitem(orderkey,Linenumber,partkey,suppkey,quantity,shipdate)VALUES(862,ROUND(RANDOM()*100,0,479,1,10,2012-3-6);/*RANDOM()函數(shù)為隨機(jī)小數(shù)生成函數(shù),ROUND()為四舍五入函數(shù)*/(3)批量數(shù)據(jù)INSERT語句 創(chuàng)建一個(gè)新的顧客表,把所有中國籍顧客插入到新的顧客表中。CREATE TABLE NewCustmoer AS SELECT * FROM Customer WITH NO DATA;/*WITH NO DATA子句使得SELECT查詢只生成一個(gè)結(jié)果模式,不查

27、詢出實(shí)際數(shù)據(jù)*/INSERT INTO NewCustomer/*批量插入SELECT 語句查詢結(jié)果到NewCustomer表中*/SELECT C.*FROM Costomer C,Nation NWHERE C.nationkey=N.nationkey AND N.name=中國; 創(chuàng)建一個(gè)顧客購物統(tǒng)計(jì)表,記錄每個(gè)顧客及其購物總數(shù)和總價(jià)等信息。CREATE TABLE ShoppingStat(custkey INTEGER, quantity REAL, totalprice REAL);INSERT INTO ShoppingStatSELECT C.custkey,Sum(L.qu

28、antity),Sum(O.totalprice)/*對(duì)分組后的數(shù)據(jù)求總和*/FROM Customer C,Order O,Lineitem LWHERE C.custkey=O.custkey AND O.orderkey=L.orderkeyGROUP BY C.custkey倍增零件表的數(shù)據(jù),多次重復(fù)執(zhí)行,直到總記錄數(shù)達(dá)到50萬為止。INSERT INTO PartSELECT partkey+(SELECT COUNT(*) FROM Part),name,mfgr,brand,type,size,container,retailprice,commentFROM Part;(4)U

29、PDATE語句(插入部分記錄的部分列值) “金倉集團(tuán)”供應(yīng)的所有零件的供應(yīng)成本價(jià)下降10%。UPDATE PartSuppSET supplycost=supplycost*0.9WHERE suppkey=(SELECT suppkey/*找出要修改的那些記錄*/ FROM Supplier WHERE name=金倉集團(tuán));(5)UPDATE語句(利用一個(gè)表中的數(shù)據(jù)修改另外一個(gè)表中的數(shù)據(jù)) 利用Part表中的零售價(jià)格來修改Lineitem中的extendedprice,其中extendedprice=Part.retailprice*quantity。UPDATE Lineitem LSE

30、T L.extendedprice=P.retailprice*L.quantityFROM Part PWHERE L.partkey=P.partkey;/*Lineitem表也可以直接與Part表相連接,而不需通過PartSupp連接*/(6)DELETE基本語句(刪除給定條件的所有記錄) 刪除顧客張三的所有訂單記錄。DELECT FROM Lineitem/*先刪除張三的訂單明細(xì)記錄*/WHERE orderkey IN(SELECT orderkey FROM Order O,Customer C WHERE O.custkey=C.custkey AND C.name=張三);DE

31、LECT FROM Order/*再刪除張三的訂單記錄*/WHERE custkey=(SELECT custkey FROM Customer WHERE name=張三);5、 視圖(1) 創(chuàng)建視圖(省略視圖列名) 創(chuàng)建一個(gè)“海大汽配”供應(yīng)商供應(yīng)的零件視圖V_DLMU_PartSupp1,要求列出供應(yīng)零件的編號(hào)、零件名稱、可用數(shù)量、零售價(jià)格、供應(yīng)價(jià)格和備注等信息。CREATE VIEW V_DLMU_PARTSUPP1 AS/*由SELECT子句目標(biāo)列組成視圖屬性*/SELECT P.partkey,P.name,PS.availqty,P.retailprice,PS.supplycos

32、t,P.commentFROM Part P,PartSupp PS,Supplier SWHERE P.partkey=PS.partkey AND S.suppkey=PS.suppkey AND S.name=海大汽配;(2) 創(chuàng)建視圖(不能省略列名的情況) 創(chuàng)建一個(gè)視圖V_CustAvgOrder,按顧客統(tǒng)計(jì)平均每個(gè)訂單的購買金額和零件數(shù)量,要求輸出 顧客編號(hào)、姓名,平均購買金額和平均購買零件數(shù)量。CREATE VIEW V_CustAvgOrder(custkey,cname,avgprice,avgquantity) ASSELECT C.custkey,MAX(C.name),A

33、VG(O.totalprice),AVG(L.quantity)FROM Customer C,Orders O,Lineitem LWHERE C.custkey=O.custkey AND L.orderkey=O.orderkeyGROUP BY C.custkey;(3) 創(chuàng)建視圖(WITH CHECK OPTION) 使用WITH CHECK OPTION,創(chuàng)建一個(gè)“海大汽配”供應(yīng)商供應(yīng)的零件視圖V_DLMU_PartSupp2,要求列出供應(yīng)零件的編號(hào)、可用數(shù)量和供應(yīng)價(jià)格等信息。然后通過該視圖分別增加、刪除和修改一條“海大汽配”零件供應(yīng)記錄,驗(yàn)證WITH CHECK OPTION是否

34、起作用。CREATE VIEW V_DLMU_PartSupp2ASSELECT 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_D

35、LMU_PartSupp2WHERE suppkey=58889;(4) 可更新的視圖(行列子集視圖) 使用WITH CHECK OPTION,創(chuàng)建一個(gè)“海大汽配”供應(yīng)商供應(yīng)的零件視圖V_DLMU_PartSupp4,要求列出供應(yīng)零件的編號(hào)、可用數(shù)量和供應(yīng)價(jià)格等信息。然后通過該視圖分別增加、刪除和修改一條“海大汽配”零件供應(yīng)記錄,驗(yàn)證該視圖是否是可更新的,并比較上述“(3)創(chuàng)建視圖”實(shí)驗(yàn)任務(wù)與本任務(wù)結(jié)果有何異同。CREATE VIEW V_DLMU_PartSupp3AS SELECT partkey,suppkey,availqty,supplycostFROM PartSuppWHERE

36、suppkey=(SELECT suppkeyFROM 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(100000,NULL,20,2000);(6) 刪除視圖(RESTRICT/

37、CASCADE) 創(chuàng)建顧客訂購零件明細(xì)視圖V_CustOrd,要求列出顧客編號(hào)、姓名、購買零件數(shù)、金額,然后在該視圖的基礎(chǔ)上,在創(chuàng)建(2)的視圖V_CustAvgOrder,然后使用RESTRICT選項(xiàng)和CASCADE選項(xiàng)刪除視圖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

38、=L.orderkey;CREATE VIEW V_CustAvgOrder(custkey,cname,avgqty,avgprice)ASSELECT custkey,MAX(cname),AVG(qty),AVG(extprice)FROM V_CustOrd/*在視圖V_CustOrd上再創(chuàng)建視圖*/GROUP BY custkey;DROP VIEW V_CustOrd RESTRICT;DROP VIEW V_CustOrd CASCADE;6、 索引(1) 創(chuàng)建唯一索引 在零件表的零件名稱字段上創(chuàng)建唯一索引。CREATE UNIQUE INDEX Idx_part_name ON

39、 Part(name);(2) 創(chuàng)建函數(shù)索引(對(duì)某個(gè)屬性的函數(shù)創(chuàng)建索引,稱為函數(shù)索引) 在零件表的零件名稱字段上創(chuàng)建一個(gè)零件名稱長度的函數(shù)索引。CREATE INDEX Idx_part_name_fun ON Part(LENGTH(name);(3)創(chuàng)建復(fù)合索引(對(duì)兩個(gè)及兩個(gè)以上的屬性創(chuàng)建索引,稱為復(fù)合索引) 在零件表的制造商和品牌兩個(gè)字段上創(chuàng)建一個(gè)復(fù)合索引。CREATE UNIQUE INDEX Idx_part_mfgr_brand ON Part(mfgr,brand);(4) *創(chuàng)建聚簇索引 在零件表的制造商字段上創(chuàng)建一個(gè)聚簇索引。CREATE UNIQUE INDEX Idx_p

40、art_mfgr ON Part(mfgr);CLUSTER Idx_part_mfgr ON Part;(5) 創(chuàng)建Hash索引 零件表的名稱字段上創(chuàng)建一個(gè)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)分析某個(gè)SQL查詢語句執(zhí)行時(shí)是否使用了索引EXPLAIN SELECT * FROM part WHERE name=零件;(

41、8) *驗(yàn)證索引效率 創(chuàng)建一個(gè)函數(shù)TestIndex,自動(dòng)計(jì)算sql查詢執(zhí)行的時(shí)間。 CREATE FUNCTION TestIndex(p_part_name CHAR(55) RETURN INTEGER AS/*自定義函數(shù)TestIndex():輸入?yún)?shù)為零件名稱,返回SQL查詢的執(zhí)行時(shí)間*/ DECLARE begintime TIMESTAMP; endtime TIMESTAMP; durationtime INTEGER; BEGN SELECT CLOCK_TIMESTAMP() INTO begintime;/*記錄查詢執(zhí)行的開始時(shí)間*/ PERFORM *FROM Part

42、 WHERE name=p_partname;/*執(zhí)行SQL查詢,不保存查詢結(jié)果*/ SELECT CLOCK_TIMESTAMP() INTO endtime; SELECT DATEDIFF(ms,begintime,endtime) INTO durationtime; RETURN durationtime;/*計(jì)算并返回查詢執(zhí)行時(shí)間,時(shí)間單位為毫秒ms*/ END; /*查看當(dāng)零件表Part數(shù)據(jù)模型比較小,并且無索引時(shí)的執(zhí)行時(shí)間*/ SELECT TestIndex(零件名稱); INSERT INTO Part/*不斷倍增零件表的數(shù)據(jù),直到50萬條記錄*/ SELECT partk

43、ey+(SELECT COUNT(*) FROM Part), Name,mfgr,brand,type,size,container,retailprice,comment FRPM Part;/*查看當(dāng)零件表Part數(shù)據(jù)模型比較大,但無索引時(shí)的執(zhí)行時(shí)間*/SELECT TestIndex(零件名稱);CREATE INDEX part_name ON Part(name);/*在零件表的零件名稱字段上創(chuàng)建索引*/*查看零件表Part數(shù)據(jù)規(guī)模比較大,有索引時(shí)的執(zhí)行時(shí)間*/SELECT TestIndex();四、實(shí)驗(yàn)心得通過本次實(shí)驗(yàn),我知道只有正確理解數(shù)據(jù)庫模式結(jié)構(gòu),才能正確設(shè)計(jì)數(shù)據(jù)庫查詢。

44、連接查詢是數(shù)據(jù)庫sql查詢中最重要的查詢,連接查詢的設(shè)計(jì)要特別注意,不同的查詢表達(dá),其查詢執(zhí)行的性能會(huì)有很大差別。正確地設(shè)計(jì)和執(zhí)行數(shù)據(jù)更新語句,確保正確地錄入數(shù)據(jù)和更新數(shù)據(jù),才能保證查詢的數(shù)據(jù)正確。當(dāng)數(shù)據(jù)更新失敗時(shí),一個(gè)主要原因是更新數(shù)據(jù)時(shí)違反了完整性約束。實(shí)驗(yàn)項(xiàng)目名稱:安全性語言實(shí)驗(yàn) 實(shí)驗(yàn)學(xué)時(shí): 2 同組學(xué)生姓名: 孟陳、陳曉雪、季佰軍 實(shí)驗(yàn)地點(diǎn): 1318 實(shí)驗(yàn)日期: 5.26 實(shí)驗(yàn)成績: 批改教師: 批改時(shí)間: 一、 實(shí)驗(yàn)?zāi)康?、 掌握自主存取控制缺陷的定義和維護(hù)方法。2、 掌握數(shù)據(jù)庫審計(jì)的設(shè)置和管理方法,以便監(jiān)控?cái)?shù)據(jù)庫操作,維護(hù)數(shù)據(jù)庫安全。二、 實(shí)驗(yàn)內(nèi)容和要求1、 定義用戶、角色,分配

45、權(quán)限給用戶、角色,回收權(quán)限,以相應(yīng)的用戶名登錄數(shù)據(jù)庫驗(yàn)證權(quán)限分配是否正確。選擇一個(gè)應(yīng)用場景,使用自主存取控制機(jī)制設(shè)置權(quán)限分配。可以采用兩種方案。方案一:采用SYSTEM超級(jí)用戶登錄數(shù)據(jù)庫,完成所有權(quán)限分配工作,然后用相應(yīng)用戶名登錄數(shù)據(jù)庫已驗(yàn)證權(quán)限分配正確性;方案二:采用SYSTEM用戶登錄數(shù)據(jù)庫創(chuàng)建3個(gè)部門經(jīng)理用戶,并分配相應(yīng)的權(quán)限,然后分別用3個(gè)經(jīng)理用戶名登錄數(shù)據(jù)庫,創(chuàng)建相應(yīng)部門的USER、ROLE,并分配相應(yīng)權(quán)限。2、打開數(shù)據(jù)庫審計(jì)開關(guān)。以具有審計(jì)權(quán)限的用戶登錄數(shù)據(jù)庫,設(shè)置審計(jì)權(quán)限,然后以普通用戶登錄數(shù)據(jù)庫,執(zhí)行相應(yīng)的數(shù)據(jù)操縱sql語句,驗(yàn)證相應(yīng)審計(jì)設(shè)置是否生效,最后在一具有審計(jì)權(quán)限的用戶

46、登錄數(shù)據(jù)庫,查看是否存在相應(yīng)的審計(jì)信息。三、實(shí)驗(yàn)過程1、自主存取控制實(shí)驗(yàn)(1)創(chuàng)建用戶 為采購、銷售和客戶管理等3個(gè)部門的經(jīng)理創(chuàng)建用戶標(biāo)識(shí),要求具有創(chuàng)建用戶或角色的權(quán)利。CREATE USER David WITH CREATEROLE PASSWORD 123456;CREATE USER Tom WITH CREATEROLE PASSWORD 123456;CREATE USER Kathy WITH CREATEROLE PASSWORD 123456;為采購、銷售和客戶管理等3個(gè)部門的職員創(chuàng)建用戶標(biāo)識(shí)和用戶口令。CREATE USER Jeffery WITH PASSWORD 12

47、3456;CREATE USER Jane WITH PASSWORD 123456;CREATE USER Mike WITH PASSWORD 123456;(2)創(chuàng)建角色并分配權(quán)限為各個(gè)部門分別創(chuàng)建一個(gè)查詢角色,并分配相應(yīng)的查詢權(quán)限。CREATE ROLE PurchaseQueryRole;GRANT SELECT ON TABLE Part TO PurchaseQueryRole;GRANT SELECT ON TABLE Supplier TO PurchaseQueryRole;GRANT SELECT ON TABLE PartSupp TO PurchaseQueryRol

48、e;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 CustomerQueryRo

49、le;為各個(gè)部門分別創(chuàng)建一個(gè)職員角色,對(duì)本部門信息具有查看、插入權(quán)限。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 SELECT,INSERT O

50、N 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 CustomerEmploy

51、eeRole;為各個(gè)部門創(chuàng)建一個(gè)經(jīng)理角色,相應(yīng)角色對(duì)本部門的信息具有完全控制權(quán)限,對(duì)其他部門的信息具有查詢權(quán)。經(jīng)理有權(quán)給本部門資源分配權(quán)限。CREATE ROLE PurchaseManagerRole WITH CREATEROLE;GRANT ALL ON TABLE Part TO PurchaseManagerRole;GRANT ALL ON TABLE Supplier TO PurchaseManagerRole;GRANT ALL ON TABLE PartSupp TO PurchaseManagerRole;GRANT SaleQueryRole TO PurchaseMa

52、nagerRole;GRANT CustomerQueryRole TO PurchaseManagerRole;CREATE ROLE SaleManagerRole WITH CREATEROLE;GRANT ALL ON TABLE Order TO SaleManagerRoleGRANT ALL ON TABLE Lineitem TO SaleManagerRoleGRANT SaleQueryRole TO SaleManagerRoleGRANT PurchaseQueryRole TO SaleManagerRoleCREATE ROLE CustomerManagerRol

53、e WITH CREATEROLE;GRANT ALL ON TABLE Customer TO CustomerManagerRoleGRANT ALL ON TABLE Nation TO CustomerManagerRoleGRANT ALL ON TABLE Region TO CustomerManagerRoleGRANT SaleQueryRole TO CustomerManagerRoleGRANT PurchaseQueryRole TO CustomerManagerRole(3)給用戶分配權(quán)限給部門經(jīng)理分配權(quán)限。GRANT PurchaseManagerRole TO

54、 David WITH ADMIN OPTION;GRANT SaleManagerRole TO Tom WITH ADMIN OPTION;GRANT CustomerManagerRole TO Kathy WITH ADMIN OPTION;給各部門職員分配權(quán)限GRANT PurchaseEmployeeRole TO Jeffery;GRANT SaleEmployeeRole TO Jane;GRANT CustomerEmployeeRole TO Mike;(4)回收角色或用戶權(quán)限收回客戶經(jīng)理角色的銷售信息查看權(quán)限。REVOKE SaleQueryRole FROM Custo

55、merManagerRole;回收MIKE的客戶部門職員權(quán)限。REVOKE CustomerEmployeeRole FROM Mike;(5)驗(yàn)證權(quán)限分配正確性以David用戶名登錄數(shù)據(jù)庫,驗(yàn)證采購部門經(jīng)理的權(quán)限SELECT * FROM Part;DELETE * FROM Order;回收MIKE的客戶部門職員權(quán)限SELECT * FROM Customer;SELECT * FROM Part;2、審計(jì)實(shí)驗(yàn)(1)審計(jì)開關(guān)顯示當(dāng)前審計(jì)開關(guān)狀態(tài)SHOW AUDIT_TRAIL;打開審計(jì)開關(guān)SET AUDIT_TRAIL TO ON;(2)數(shù)據(jù)庫操作審計(jì)對(duì)客戶信息表上的刪除操作設(shè)置審計(jì)。AU

56、DIT DELETE ON Sales.Customer BY ACCESS;以普通用戶登錄,執(zhí)行sql語句。DELETE Sales.Customer WHERE custkey=1011;查看數(shù)據(jù)庫對(duì)象審計(jì)信息,驗(yàn)證審計(jì)設(shè)置是否生效。SELECT * FROM SYS_AUDIT_OBJECT;(3)語句級(jí)審計(jì)對(duì)表定義的更改語句ALTER設(shè)置審計(jì)AUDIT ALTER TABLE BY ACCESS;查看所有數(shù)據(jù)庫所有語句級(jí)審計(jì)設(shè)置,驗(yàn)證審計(jì)設(shè)置是否生效SELECT * FROM SYS_STMT_AUDIT_OPTS;以普通用戶登錄,執(zhí)行sql語句,驗(yàn)證審計(jì)設(shè)置是否生效ALTER TAB

57、LE Customer ADD COLUMN tt INT;查看所有審計(jì)信息SELECT * FROM SYS_AUDIT_TRAIL;四、實(shí)驗(yàn)心得通過本次實(shí)驗(yàn),知道了定義用戶、角色,分配權(quán)限給用戶、角色,回收權(quán)限,并以相應(yīng)的用戶名登陸數(shù)據(jù)庫驗(yàn)證權(quán)限分配是否正確的方法。并且知道了數(shù)據(jù)庫審計(jì)的目的和方法。做實(shí)驗(yàn)的同時(shí),對(duì)sql語句有了更熟練的運(yùn)用。實(shí)驗(yàn)項(xiàng)目名稱:完整性語言實(shí)驗(yàn) 實(shí)驗(yàn)學(xué)時(shí): 2 同組學(xué)生姓名: 孟陳、陳曉雪、季佰軍 實(shí)驗(yàn)地點(diǎn): 1318 實(shí)驗(yàn)日期: 6.2 實(shí)驗(yàn)成績: 批改教師: 批改時(shí)間: 一、 實(shí)驗(yàn)?zāi)康?、 掌握實(shí)體完整性的定義和維護(hù)方法;2、 掌握參照完整性的定義和維護(hù)方法;

58、3、 掌握用戶自定義完整性的定義和維護(hù)方法;二、 實(shí)驗(yàn)內(nèi)容和要求1、定義實(shí)體完整性,刪除實(shí)體完整性。能夠?qū)懗鰞煞N方式定義實(shí)體完整性的SQL語句:創(chuàng)建表時(shí)定義實(shí)體完整性、創(chuàng)建表后定義實(shí)體完整性。設(shè)計(jì)SQL語句驗(yàn)證完整性約束是否起作用。2、定義參照完整性,定義參照完整性的違規(guī)處理,刪除參照完整性。寫出兩種方式定義參照完整性的SQL語句:創(chuàng)建表時(shí)定義參照完整性、創(chuàng)建表后定義參照完整性。3、針對(duì)具體應(yīng)用語義,選擇NULL/NOT NULL、DEFAULT、UNIQUE、CHECK等,定義屬性上的約束條件。三、實(shí)驗(yàn)過程1、實(shí)體完整性實(shí)驗(yàn)(1)創(chuàng)建表時(shí)定義實(shí)體完整性(列級(jí)實(shí)體完整性)定義供應(yīng)商表的實(shí)體完整

59、性。CREATE TABLE Supplier( suppkey INSERT CONSTRAINT PK_supplier PRIMARY KEY, name CHAR(25), address VARCHAR(40), nationkey INSERT, phone CHAR(15), acctbal REAL, comment VARCHAR(101);(2)創(chuàng)建表時(shí)定義實(shí)體完整性(表級(jí)實(shí)體完整性)定義供應(yīng)商表的實(shí)體完整性。CREATE TABLE Supplier( suppkey INSERT, name CHAR(25), address VARCHAR(40), nationkey I

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!