面向對象數據庫設計與應用 04 - 數據表操作與查詢


一、實驗目的

  1. 本實驗,要求利用SQL代碼實現並掌握記錄的OML操作,重點在於面向對象OML句型的進一步學習和深層次的掌握;
  2. 在理解實驗難點的基礎上,即:面向對象的表查詢,記錄的更新操作,再深入拓展並鞏固SQL代碼句型語法的使用規則。在進行復合條件查詢和模糊查詢的同時,要理解關系型數據庫與面向對象數據庫的相同之處以及區別,特別是涉及對象字段參照的用法。

       

 

二、實驗內容

實驗背景導入:

公司已經完成數據表的完整性與數據庫對象安全性的設置,接下來就要進行相關測試,但對於測試前需要為系統填充一些初始化的數據記錄,所以就要進行記錄DML操作。

①    更新單條記錄。將“勁霸西服”由“推薦”商品轉為“熱點”商品,需要完成對該商品狀態的更改。

②      更新多條記錄。現將所有商品的折扣調整為0.8,為並將所有的進貨日             期調整2010年10月1日。

③    刪除單條記錄。商品號為040002的商品已售完,並且以后也不考慮再進貨,需要在商品信息表中清除該商品的信息。

④    刪除所有記錄。刪除用戶表中的所有信息。

⑤    使用復合條件查詢。需要了解商品類別為01,並且商品單價在2500元以上,的商品信息,要求以漢字標題顯示商品號,商品名稱,商品類別和價格。

⑥    模糊查詢。知道一個商品的商品名稱中包含有“520”字樣,要求查詢該       商品的商品號、商品名稱、商品單價和商品折扣。

 

 

 

三、實驗平台

軟件:WORD、Oracle

   

 

 

四、實驗步驟

①更新單條記錄。將“勁霸西服”由“推薦”商品轉為“熱點”商品,更改狀態。

Insert into RD_COMMODITY_TYPES (COMMODITY_TYPE_ID,STATUS,COMMODITY_TYPE) values ('0003','推薦','服裝');

Insert into C##RD.RD_GOODS (GOOD_ID,DISCOUNT,GOODS,UNIT_PRICE,PURCHASE_DATE,GOOD_TYPE) values ('0003','0.85','勁霸西服',165,'2017-32-23', (select ref(a) from RD_COMMODITY_TYPES a where COMMODITY_TYPE_ID='0003'));select GOOD_ID,GOODS,deref(GOOD_TYPE),(select STATUS from RD_COMMODITY_TYPES where RD_COMMODITY_TYPES.COMMODITY_TYPE_ID='0003') from RD_GOODS where GOOD_TYPE=(select ref(a) from RD_COMMODITY_TYPES a where COMMODITY_TYPE_ID='0003');

select GOOD_ID,GOODS,deref(GOOD_TYPE),(select STATUS from RD_COMMODITY_TYPES where RD_COMMODITY_TYPES.COMMODITY_TYPE_ID='0003') from RD_GOODS where GOOD_TYPE=(select ref(a) from RD_COMMODITY_TYPES a where COMMODITY_TYPE_ID='0003');

 

update RD_COMMODITY_TYPES set STATUS='熱點' where COMMODITY_TYPE_ID='0003';

select GOOD_ID,GOODS,deref(GOOD_TYPE),(select STATUS from RD_COMMODITY_TYPES where RD_COMMODITY_TYPES.COMMODITY_TYPE_ID='0003') from RD_GOODS where GOOD_TYPE=(select ref(a) from RD_COMMODITY_TYPES a where COMMODITY_TYPE_ID='0003');

 


  

②更新多條記錄。將所有商品的折扣調整為0.8,將所有的進貨日期調整2010年10月1日

select * from RD_GOODS;

update RD_GOODS set  DISCOUNT='0.80',PURCHASE_DATE='2010-10-01';

select * from RD_GOODS;

 


  

③刪除單條記錄。商品號為040002的商品已售完,在商品表中清除該商品的信息。

update RD_GOODS set  GOOD_ID='040002' where GOODS='勁霸西服';

select * from RD_GOODS;

 

delete from RD_GOODS where GOOD_ID='040002';

select * from RD_GOODS;

 


  

④刪除所有記錄。刪除用戶表中的所有信息。

select * from RD_MEMBERS;

 

delete from RD_MEMBERS;

select * from RD_MEMBERS;

 


  

⑤使用復合條件查詢。需要了解商品類別為01,並且商品單價在2500元以上,的商品信息,要求以漢字標題顯示商品號,商品名稱,商品類別和價格。

update RD_COMMODITY_TYPES set COMMODITY_TYPE='02';

Insert into RD_COMMODITY_TYPES (COMMODITY_TYPE_ID,STATUS,COMMODITY_TYPE) values ('0004','推薦','01');

Insert into C##RD.RD_GOODS (GOOD_ID,DISCOUNT,GOODS,UNIT_PRICE,PURCHASE_DATE,GOOD_TYPE) values ('0004','0.8','直升飛機',165000,'2017-32-23', (select ref(a) from RD_COMMODITY_TYPES a where COMMODITY_TYPE_ID='0004'));

Insert into C##RD.RD_GOODS (GOOD_ID,DISCOUNT,GOODS,UNIT_PRICE,PURCHASE_DATE,GOOD_TYPE) values ('0005','0.95','520鋼鐵膠水',165,'2017-32-23', (select ref(a) from RD_COMMODITY_TYPES a where COMMODITY_TYPE_ID='0004'));

Insert into C##RD.RD_GOODS (GOOD_ID,DISCOUNT,GOODS,UNIT_PRICE,PURCHASE_DATE,GOOD_TYPE) values ('0006','0.45','華人牌手機',23450,'2017-32-23', (select ref(a) from RD_COMMODITY_TYPES a where COMMODITY_TYPE_ID='0004'));

select * from RD_GOODS;

 

select GOOD_ID "商品號", GOODS "商品名稱",(select COMMODITY_TYPE from RD_COMMODITY_TYPES where RD_COMMODITY_TYPES.COMMODITY_TYPE='01') "商品類別", UNIT_PRICE "價格" from RD_GOODS where (select COMMODITY_TYPE from RD_COMMODITY_TYPES where RD_COMMODITY_TYPES.COMMODITY_TYPE='01')='01' and UNIT_PRICE > 2500;

 


  

⑥模糊查詢。知道一個商品的商品名稱中包含有“520”字樣,要求查詢該商品的商品號、商品名稱、商品單價和商品折扣。

select * from RD_GOODS;

 

select GOOD_ID,GOODS,UNIT_PRICE,DISCOUNT from RD_GOODS where GOODS like'%520%';

 


  

 

 

五、運行結果

①更新單條記錄

 

圖5-1 單條數據更新前

 

 

圖5-2 單條數據更新后

 

 

②更新多條記錄

 

圖5-3 多條數據更新前

 

 

圖5-4 多條數據更新后

 

 

 

 

 

③刪除單條記錄

 

圖5-5 單條記錄刪除前

 

 

圖5-6 單條記錄刪除后

 

 

 

 

 

④刪除所有記錄

 

圖5-7 所有記錄刪除前

 

 

圖5-8 所有記錄刪除后

 

 

 

 

 

⑤使用復合條件查詢

 

圖5-9 復合條件查詢前

 

 

圖5-10 復合條件查詢后

 

 

 

 

 

⑦    模糊查詢

 

圖5-11 模糊查詢前

 

 

圖5-12 模糊查詢后

 

 

 

 

 

六、實驗總結

通過實驗,相關總結和經驗收獲,可分點總結如下:

  1. 在本實驗使用復合條件查詢的時候,根據以往SqlServer的經驗,用[]把中文列名包圍住或者采用“as ‘ 別名’”的方式,執行語句仍然報錯,而經過在網上找了一些資料,才發現,Oracle的中文列別名要用 "" 雙引符號括起來;
  2. 模糊查詢操作,簡單的方式就是字符匹配操作可以使用通配符 “%” 和 “_”,其中,%:表示任意個字符,包括零個;  

          i.      _:表示一個任意字符。再次復習了SqlServer的相關知識點;

  1. 對於本實驗中的部分操作需求,由於沒有絕佳的跨實驗准備或最吻合的匹配度,所以在進行操作時,都必須事先進行數據准備,這也就是為什么本實驗的實驗步驟中,明明題目需求可以使用一條SQL來完成,從而列舉了多條的原因;
  2. 本實驗在操作和實驗結果記錄的過程中,都采用了對比的方法,以實驗前和經過需求處理后進行對比,突出表現操作需求的實驗效果;
  3. 經過本實驗,利用SQL代碼實現並初步掌握了記錄的OML操作,對於面向對象OML句型的進一步學習和深層次掌握的實驗重點,也有了一定的認識;
  4. 面向對象數據庫沒有關系型數據庫的主、外鍵,從理論體系上來說,邏輯層面較為簡化。但是經過本實驗似乎才發現,在SQL操作層面,但凡涉及對象表參照來說,往往要比關系型數據庫復雜些許。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM