歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

《數(shù)據(jù)庫系統(tǒng)原理》實驗報告

  • 資源ID:17746268       資源大?。?span id="ldpzbhj" class="font-tahoma">279.41KB        全文頁數(shù):45頁
  • 資源格式: DOC        下載積分:9.9積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要9.9積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。

《數(shù)據(jù)庫系統(tǒng)原理》實驗報告

學(xué) 生 實 驗 報 告(理工類)課程名稱:數(shù)據(jù)庫系統(tǒng)原理 專業(yè)班級: 14軟件工程1班 學(xué)生學(xué)號: 1412101055 學(xué)生姓名: 孟祥輝 所屬院部: 軟件工程學(xué)院 指導(dǎo)教師: 麻春艷 20 15 20 16 學(xué)年 第 二 學(xué)期 金陵科技學(xué)院教務(wù)處制實驗報告書寫要求實驗報告原則上要求學(xué)生手寫,要求書寫工整。若因課程特點需打印的,要遵照以下字體、字號、間距等的具體要求。紙張一律采用A4的紙張。實驗報告書寫說明實驗報告中一至四項內(nèi)容為必填項,包括實驗?zāi)康暮鸵?;實驗儀器和設(shè)備;實驗內(nèi)容與過程;實驗結(jié)果與分析。各院部可根據(jù)學(xué)科特點和實驗具體要求增加項目。填寫注意事項(1)細致觀察,及時、準(zhǔn)確、如實記錄。(2)準(zhǔn)確說明,層次清晰。(3)盡量采用專用術(shù)語來說明事物。(4)外文、符號、公式要準(zhǔn)確,應(yīng)使用統(tǒng)一規(guī)定的名詞和符號。(5)應(yīng)獨立完成實驗報告的書寫,嚴(yán)禁抄襲、復(fù)印,一經(jīng)發(fā)現(xiàn),以零分論處。實驗報告批改說明實驗報告的批改要及時、認真、仔細,一律用紅色筆批改。實驗報告的批改成績采用百分制,具體評分標(biāo)準(zhǔn)由各院部自行制定。實驗報告裝訂要求實驗批改完畢后,任課老師將每門課程的每個實驗項目的實驗報告以自然班為單位、按學(xué)號升序排列,裝訂成冊,并附上一份該門課程的實驗大綱。實驗項目名稱:數(shù)據(jù)庫定義與操作語言 實驗學(xué)時: 2 同組學(xué)生姓名: 孟陳、陳曉雪、季佰軍 實驗地點: 1318 實驗日期: 5.19 實驗成績: 批改教師: 批改時間: 一、實驗?zāi)康?、理解和掌握數(shù)據(jù)庫DDL語言,能夠熟練地使用SQL DDL語句創(chuàng)建、修改和刪除數(shù)據(jù)庫、模式和基本表。2、掌握SQL冊亨徐設(shè)計基本規(guī)范,熟練運用SQL語言實現(xiàn)數(shù)據(jù)基本查詢,包括單表查詢、分組統(tǒng)計查詢和連接查詢3、掌握SQL嵌套查詢和集合查詢等, 各種高級查詢的設(shè)計方法等.4、熟悉數(shù)據(jù)庫的數(shù)據(jù)更新操作,能夠使用sql語句對數(shù)據(jù)庫進行數(shù)據(jù)的插入、修改、刪除操作。5、熟悉sql語言有關(guān)系圖的操作,能夠熟練使用sql語言來創(chuàng)建需要的視圖,定義數(shù)據(jù)庫外模式,并能使用所創(chuàng)建的視圖實現(xiàn)數(shù)據(jù)管理。6、掌握所以設(shè)計原則和技巧,能夠創(chuàng)建合適的索引以提高數(shù)據(jù)庫查詢、統(tǒng)計分析效率。二、實驗內(nèi)容和要求1、理解和掌握SQL DDL語句的語法,特別是各種參數(shù)的具體含義和使用方法;使用sql語句創(chuàng)建、修改和刪除數(shù)據(jù)庫、模式和基本表。掌握sql語句常見語法錯誤的調(diào)試方法。2、針對TPC-H數(shù)據(jù)庫設(shè)計各種單表查詢sql語句、分組統(tǒng)計查詢語句;設(shè)計單個表針對自身的連接查詢,涉及多個表的連接查詢。理解和掌握sql查詢語句各個子句的特點和作用,按照sql程序設(shè)計規(guī)范寫出具體的sql查詢語句,并調(diào)試通過。3、針對TPC-H數(shù)據(jù)庫,證券分析用戶查詢要求,設(shè)計各種嵌套查詢和集合查詢。4、針對TPC-H數(shù)據(jù)庫設(shè)計單元主唱入、批量數(shù)據(jù)插入、修改數(shù)據(jù)和刪除數(shù)據(jù)的sql語句。理解和掌握insert、update、delete語法結(jié)構(gòu)的各個組成成分,結(jié)合嵌套sql子查詢,分別設(shè)計幾個不同形式的插入、修改和刪除數(shù)據(jù)的語句,并調(diào)試成功。5、針對給定的數(shù)據(jù)庫模式,以及相應(yīng)的應(yīng)用要求,創(chuàng)建視圖和帶WITH CHECK OPTION的視圖,并驗證視圖WITH CHECK OPTION選項的有效性。理解和掌握試圖消解執(zhí)行原理,掌握可更新視圖和不可更新視圖的區(qū)別。6、針對給定的數(shù)據(jù)庫模式和具體應(yīng)用需求,創(chuàng)建唯一索引、函數(shù)索引、復(fù)合索引等;修改索引;刪除索引。設(shè)計相應(yīng)的sql查詢驗證索引有效性,學(xué)習(xí)利用EXPLAIN命令分析sql查詢是否使用了所創(chuàng)建的索引,并能夠分析其原因,執(zhí)行sql查詢并估算索引提高查詢效率的百分比,要求實驗數(shù)據(jù)達到10萬條記錄以上的數(shù)據(jù)量,以便驗證所以效果.三、實驗過程1、數(shù)據(jù)庫定義實驗(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個基本表。/*設(shè)置當(dāng)前會話的搜索路徑為sales模式、public模式,基本表就會自動創(chuàng)建在sales模式下。*/SET SEARCH_PATH TO Sales, Public;CREATE TABLE 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 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 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 REFERENCES 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(orderkey 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),PRIMARY KEY(orderkey,linenumber),FOREIGN KEY(Partkey,suppkey) REFERENCES PartSupp(partkey,suppkey);2、數(shù)據(jù)基本查詢(1)單表查詢(實現(xiàn)投影操作)查詢供應(yīng)商的名稱、地址和聯(lián)系電話。SELECTE name,address,phone FROMSupplier;(2)單表查詢(實現(xiàn)選擇操作)查詢最近一周內(nèi)提交的總價大于1000元的訂單的編號、顧客編號等訂單的所有信息。SELECT *FROM Sales.Orders WHERE CURRENT_DATE-orderdata<7 AND totalprice >1000;(3)不帶分組過濾條件的分組統(tǒng)計查詢統(tǒng)計每個顧客的訂購金額SELECT C.custkey ,SUM(O.totalprice)FROM customer C,Orders OWHERE C.custkey=O.custkeyGROUP BY C.custkey;(4) 帶分組過濾條件的分組統(tǒng)計查詢查詢訂單平均金額超過1000元的顧客編號及其姓名SELECT C.custkey,MAX(C.name)FROM Customer C,Orders OWHERE C.custkey=O.custkeyGROUP BY C.custkey;HAVING AVG(O.totalprice)>1000;(5) 表單自身連接查詢查詢與“金倉集團”在同一個國家的供應(yīng)商編號、名稱和地址信息。SELECT F.suppkey,F.name,F(xiàn).addressFROM Supplier F,Supplier S WHERE F.nationkey=S.nationkey AND S.name=金倉集團;(6) 兩表連接查詢(普通連接)查詢供應(yīng)價格大于零售價格的零件名、制造商名、零售價格和供應(yīng)價格。SELECT P.name,P.mfgr,P.retailprice,PS.supplycostFROM Part P,Partsupp PSWHERE P.retailprice>PS.supplycost;(7) 兩表連接查詢(自然連接)查詢供應(yīng)價格大于零售價格的零件名、制造商名、零售價格和供應(yīng)價格。SELECT P.name,P.mfgr,P.retailprice,PS.supplycostFROM Part P,Partsupp PSWHERE P.partkey=PS.partkey AND P.retailprice>PS.supplycost;(8)三表連接查詢查詢顧客“蘇舉庫”訂購的訂單編號、總價及其訂購的零件編號、數(shù)量和明細價格。SELECT O.orderkey,O.totalprice,L.partkey,L.quantity,L.extendedpriceFROM Custom C,Orders O,Lineitem LWHERE C.custkey=O.custkey AND O.orderkey=L.orderkey AND C.name=蘇舉庫;3、數(shù)據(jù)高級查詢實驗(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.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=海大 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.partkey 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 * 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 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 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.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=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.orderkey=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.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.orderkey=L.orderkey AND L.partkey=PS.partkey AND L.suppkey=PS.suppkey AND PS.partkey=P.partkey AND C.name=李四;4、數(shù)據(jù)更新實驗(1)INSERT基本語句(插入全部列的數(shù)據(jù))插入一條顧客記錄,要求每列都給一個合理的值。INSERT INTO CustomerVALUES (30,張三,北京市,40,010-51001199,0.00,Northeast,VIP Customer);(2)INSERT基本語句(插入部分列的數(shù)據(jù)) 插入一條訂單記錄,給出必要的幾個字段值。INSERT INTO Lineitem(orderkey,Linenumber,partkey,suppkey,quantity,shipdate)VALUES(862,ROUND(RANDOM()*100,0,479,1,10,2012-3-6);/*RANDOM()函數(shù)為隨機小數(shù)生成函數(shù),ROUND()為四舍五入函數(shù)*/(3)批量數(shù)據(jù)INSERT語句 創(chuàng)建一個新的顧客表,把所有中國籍顧客插入到新的顧客表中。CREATE TABLE NewCustmoer AS SELECT * FROM Customer WITH NO DATA;/*WITH NO DATA子句使得SELECT查詢只生成一個結(jié)果模式,不查詢出實際數(shù)據(jù)*/INSERT INTO NewCustomer/*批量插入SELECT 語句查詢結(jié)果到NewCustomer表中*/SELECT C.*FROM Costomer C,Nation NWHERE C.nationkey=N.nationkey AND N.name=中國; 創(chuàng)建一個顧客購物統(tǒng)計表,記錄每個顧客及其購物總數(shù)和總價等信息。CREATE TABLE ShoppingStat(custkey INTEGER, quantity REAL, totalprice REAL);INSERT INTO ShoppingStatSELECT C.custkey,Sum(L.quantity),Sum(O.totalprice)/*對分組后的數(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ù)達到50萬為止。INSERT INTO PartSELECT partkey+(SELECT COUNT(*) FROM Part),name,mfgr,brand,type,size,container,retailprice,commentFROM Part;(4)UPDATE語句(插入部分記錄的部分列值) “金倉集團”供應(yīng)的所有零件的供應(yīng)成本價下降10%。UPDATE PartSuppSET supplycost=supplycost*0.9WHERE suppkey=(SELECT suppkey/*找出要修改的那些記錄*/ FROM Supplier WHERE name=金倉集團);(5)UPDATE語句(利用一個表中的數(shù)據(jù)修改另外一個表中的數(shù)據(jù)) 利用Part表中的零售價格來修改Lineitem中的extendedprice,其中extendedprice=Part.retailprice*quantity。UPDATE Lineitem LSET L.extendedprice=P.retailprice*L.quantityFROM Part PWHERE 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=(SELECT custkey FROM Customer WHERE name=張三);5、 視圖(1) 創(chuàng)建視圖(省略視圖列名) 創(chuàng)建一個“海大汽配”供應(yīng)商供應(yīng)的零件視圖V_DLMU_PartSupp1,要求列出供應(yīng)零件的編號、零件名稱、可用數(shù)量、零售價格、供應(yīng)價格和備注等信息。CREATE VIEW V_DLMU_PARTSUPP1 AS/*由SELECT子句目標(biāo)列組成視圖屬性*/SELECT P.partkey,P.name,PS.availqty,P.retailprice,PS.supplycost,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)建一個視圖V_CustAvgOrder,按顧客統(tǒng)計平均每個訂單的購買金額和零件數(shù)量,要求輸出 顧客編號、姓名,平均購買金額和平均購買零件數(shù)量。CREATE VIEW V_CustAvgOrder(custkey,cname,avgprice,avgquantity) ASSELECT C.custkey,MAX(C.name),AVG(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)建一個“海大汽配”供應(yīng)商供應(yīng)的零件視圖V_DLMU_PartSupp2,要求列出供應(yīng)零件的編號、可用數(shù)量和供應(yīng)價格等信息。然后通過該視圖分別增加、刪除和修改一條“海大汽配”零件供應(yīng)記錄,驗證WITH CHECK OPTION是否起作用。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_DLMU_PartSupp2WHERE suppkey=58889;(4) 可更新的視圖(行列子集視圖) 使用WITH CHECK OPTION,創(chuàng)建一個“海大汽配”供應(yīng)商供應(yīng)的零件視圖V_DLMU_PartSupp4,要求列出供應(yīng)零件的編號、可用數(shù)量和供應(yīng)價格等信息。然后通過該視圖分別增加、刪除和修改一條“海大汽配”零件供應(yīng)記錄,驗證該視圖是否是可更新的,并比較上述“(3)創(chuàng)建視圖”實驗任務(wù)與本任務(wù)結(jié)果有何異同。CREATE VIEW V_DLMU_PartSupp3AS SELECT partkey,suppkey,availqty,supplycostFROM PartSuppWHERE 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/CASCADE) 創(chuàng)建顧客訂購零件明細視圖V_CustOrd,要求列出顧客編號、姓名、購買零件數(shù)、金額,然后在該視圖的基礎(chǔ)上,在創(chuàng)建(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;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 Part(name);(2) 創(chuàng)建函數(shù)索引(對某個屬性的函數(shù)創(chuàng)建索引,稱為函數(shù)索引) 在零件表的零件名稱字段上創(chuàng)建一個零件名稱長度的函數(shù)索引。CREATE INDEX Idx_part_name_fun ON Part(LENGTH(name);(3)創(chuàng)建復(fù)合索引(對兩個及兩個以上的屬性創(chuàng)建索引,稱為復(fù)合索引) 在零件表的制造商和品牌兩個字段上創(chuàng)建一個復(fù)合索引。CREATE UNIQUE INDEX Idx_part_mfgr_brand ON Part(mfgr,brand);(4) *創(chuàng)建聚簇索引 在零件表的制造商字段上創(chuàng)建一個聚簇索引。CREATE UNIQUE INDEX Idx_part_mfgr ON Part(mfgr);CLUSTER Idx_part_mfgr ON Part;(5) 創(chuàng)建Hash索引 零件表的名稱字段上創(chuàng)建一個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查詢語句執(zhí)行時是否使用了索引EXPLAIN SELECT * FROM part WHERE name=零件;(8) *驗證索引效率 創(chuàng)建一個函數(shù)TestIndex,自動計算sql查詢執(zhí)行的時間。 CREATE FUNCTION TestIndex(p_part_name CHAR(55) RETURN INTEGER AS/*自定義函數(shù)TestIndex():輸入?yún)?shù)為零件名稱,返回SQL查詢的執(zhí)行時間*/ DECLARE begintime TIMESTAMP; endtime TIMESTAMP; durationtime INTEGER; BEGN SELECT CLOCK_TIMESTAMP() INTO begintime;/*記錄查詢執(zhí)行的開始時間*/ PERFORM *FROM Part WHERE name=p_partname;/*執(zhí)行SQL查詢,不保存查詢結(jié)果*/ SELECT CLOCK_TIMESTAMP() INTO endtime; SELECT DATEDIFF(ms,begintime,endtime) INTO durationtime; RETURN durationtime;/*計算并返回查詢執(zhí)行時間,時間單位為毫秒ms*/ END; /*查看當(dāng)零件表Part數(shù)據(jù)模型比較小,并且無索引時的執(zhí)行時間*/ SELECT TestIndex(零件名稱); INSERT INTO Part/*不斷倍增零件表的數(shù)據(jù),直到50萬條記錄*/ SELECT partkey+(SELECT COUNT(*) FROM Part), Name,mfgr,brand,type,size,container,retailprice,comment FRPM Part;/*查看當(dāng)零件表Part數(shù)據(jù)模型比較大,但無索引時的執(zhí)行時間*/SELECT TestIndex(零件名稱);CREATE INDEX part_name ON Part(name);/*在零件表的零件名稱字段上創(chuàng)建索引*/*查看零件表Part數(shù)據(jù)規(guī)模比較大,有索引時的執(zhí)行時間*/SELECT TestIndex();四、實驗心得通過本次實驗,我知道只有正確理解數(shù)據(jù)庫模式結(jié)構(gòu),才能正確設(shè)計數(shù)據(jù)庫查詢。連接查詢是數(shù)據(jù)庫sql查詢中最重要的查詢,連接查詢的設(shè)計要特別注意,不同的查詢表達,其查詢執(zhí)行的性能會有很大差別。正確地設(shè)計和執(zhí)行數(shù)據(jù)更新語句,確保正確地錄入數(shù)據(jù)和更新數(shù)據(jù),才能保證查詢的數(shù)據(jù)正確。當(dāng)數(shù)據(jù)更新失敗時,一個主要原因是更新數(shù)據(jù)時違反了完整性約束。實驗項目名稱:安全性語言實驗 實驗學(xué)時: 2 同組學(xué)生姓名: 孟陳、陳曉雪、季佰軍 實驗地點: 1318 實驗日期: 5.26 實驗成績: 批改教師: 批改時間: 一、 實驗?zāi)康?、 掌握自主存取控制缺陷的定義和維護方法。2、 掌握數(shù)據(jù)庫審計的設(shè)置和管理方法,以便監(jiān)控數(shù)據(jù)庫操作,維護數(shù)據(jù)庫安全。二、 實驗內(nèi)容和要求1、 定義用戶、角色,分配權(quán)限給用戶、角色,回收權(quán)限,以相應(yīng)的用戶名登錄數(shù)據(jù)庫驗證權(quán)限分配是否正確。選擇一個應(yīng)用場景,使用自主存取控制機制設(shè)置權(quán)限分配??梢圆捎脙煞N方案。方案一:采用SYSTEM超級用戶登錄數(shù)據(jù)庫,完成所有權(quán)限分配工作,然后用相應(yīng)用戶名登錄數(shù)據(jù)庫已驗證權(quán)限分配正確性;方案二:采用SYSTEM用戶登錄數(shù)據(jù)庫創(chuàng)建3個部門經(jīng)理用戶,并分配相應(yīng)的權(quán)限,然后分別用3個經(jīng)理用戶名登錄數(shù)據(jù)庫,創(chuàng)建相應(yīng)部門的USER、ROLE,并分配相應(yīng)權(quán)限。2、打開數(shù)據(jù)庫審計開關(guān)。以具有審計權(quán)限的用戶登錄數(shù)據(jù)庫,設(shè)置審計權(quán)限,然后以普通用戶登錄數(shù)據(jù)庫,執(zhí)行相應(yīng)的數(shù)據(jù)操縱sql語句,驗證相應(yīng)審計設(shè)置是否生效,最后在一具有審計權(quán)限的用戶登錄數(shù)據(jù)庫,查看是否存在相應(yīng)的審計信息。三、實驗過程1、自主存取控制實驗(1)創(chuàng)建用戶 為采購、銷售和客戶管理等3個部門的經(jīng)理創(chuàng)建用戶標(biāo)識,要求具有創(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個部門的職員創(chuàng)建用戶標(biāo)識和用戶口令。CREATE USER Jeffery WITH PASSWORD 123456;CREATE USER Jane WITH PASSWORD 123456;CREATE USER Mike WITH PASSWORD 123456;(2)創(chuàng)建角色并分配權(quán)限為各個部門分別創(chuàng)建一個查詢角色,并分配相應(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 PurchaseQueryRole;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 CustomerQueryRole;為各個部門分別創(chuàng)建一個職員角色,對本部門信息具有查看、插入權(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 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;為各個部門創(chuàng)建一個經(jīng)理角色,相應(yīng)角色對本部門的信息具有完全控制權(quán)限,對其他部門的信息具有查詢權(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 PurchaseManagerRole;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 CustomerManagerRole 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 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 CustomerManagerRole;回收MIKE的客戶部門職員權(quán)限。REVOKE CustomerEmployeeRole FROM Mike;(5)驗證權(quán)限分配正確性以David用戶名登錄數(shù)據(jù)庫,驗證采購部門經(jīng)理的權(quán)限SELECT * FROM Part;DELETE * FROM Order;回收MIKE的客戶部門職員權(quán)限SELECT * FROM Customer;SELECT * FROM Part;2、審計實驗(1)審計開關(guān)顯示當(dāng)前審計開關(guān)狀態(tài)SHOW AUDIT_TRAIL;打開審計開關(guān)SET AUDIT_TRAIL TO ON;(2)數(shù)據(jù)庫操作審計對客戶信息表上的刪除操作設(shè)置審計。AUDIT DELETE ON Sales.Customer BY ACCESS;以普通用戶登錄,執(zhí)行sql語句。DELETE Sales.Customer WHERE custkey=1011;查看數(shù)據(jù)庫對象審計信息,驗證審計設(shè)置是否生效。SELECT * FROM SYS_AUDIT_OBJECT;(3)語句級審計對表定義的更改語句ALTER設(shè)置審計AUDIT ALTER TABLE BY ACCESS;查看所有數(shù)據(jù)庫所有語句級審計設(shè)置,驗證審計設(shè)置是否生效SELECT * FROM SYS_STMT_AUDIT_OPTS;以普通用戶登錄,執(zhí)行sql語句,驗證審計設(shè)置是否生效ALTER TABLE Customer ADD COLUMN tt INT;查看所有審計信息SELECT * FROM SYS_AUDIT_TRAIL;四、實驗心得通過本次實驗,知道了定義用戶、角色,分配權(quán)限給用戶、角色,回收權(quán)限,并以相應(yīng)的用戶名登陸數(shù)據(jù)庫驗證權(quán)限分配是否正確的方法。并且知道了數(shù)據(jù)庫審計的目的和方法。做實驗的同時,對sql語句有了更熟練的運用。實驗項目名稱:完整性語言實驗 實驗學(xué)時: 2 同組學(xué)生姓名: 孟陳、陳曉雪、季佰軍 實驗地點: 1318 實驗日期: 6.2 實驗成績: 批改教師: 批改時間: 一、 實驗?zāi)康?、 掌握實體完整性的定義和維護方法;2、 掌握參照完整性的定義和維護方法;3、 掌握用戶自定義完整性的定義和維護方法;二、 實驗內(nèi)容和要求1、定義實體完整性,刪除實體完整性。能夠?qū)懗鰞煞N方式定義實體完整性的SQL語句:創(chuàng)建表時定義實體完整性、創(chuàng)建表后定義實體完整性。設(shè)計SQL語句驗證完整性約束是否起作用。2、定義參照完整性,定義參照完整性的違規(guī)處理,刪除參照完整性。寫出兩種方式定義參照完整性的SQL語句:創(chuàng)建表時定義參照完整性、創(chuàng)建表后定義參照完整性。3、針對具體應(yīng)用語義,選擇NULL/NOT NULL、DEFAULT、UNIQUE、CHECK等,定義屬性上的約束條件。三、實驗過程1、實體完整性實驗(1)創(chuàng)建表時定義實體完整性(列級實體完整性)定義供應(yīng)商表的實體完整性。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)建表時定義實體完整性(表級實體完整性)定義供應(yīng)商表的實體完整性。CREATE TABLE Supplier( suppkey INSERT, name CHAR(25), address VARCHAR(40), nationkey I

注意事項

本文(《數(shù)據(jù)庫系統(tǒng)原理》實驗報告)為本站會員(jun****875)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

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

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


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