程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> ORACLE實驗二

ORACLE實驗二

編輯:Oracle教程

ORACLE實驗二


實驗二:數據操縱

實驗學時:4學時

實驗類型:綜合型

實驗要求:必修

一、實驗目的

1、掌握SQL數據查詢語句;

2、掌握SQL聚集函數的使用;

3、掌握SQL插入、修改、刪除語句的使用。

二、實驗內容

1.工程項目采購數據庫,在實驗3.2的基礎上插入樣例數據並完成下列操作:

(1) 求向工程J1提供零件的供應商的編號。

(2) 求向工程J1提供零件P1的供應商的編號。

(3) 求向工程J1提供紅色零件的供應商的編號。

(4) 求沒有使用天津供應商提供的紅色零件的工程號。

(5) 求至少使用了供應商S1所提供的全部零件的工程號。

(6) 統計各個供應商供應的零件總數。

(7) 求至少使用了3種以上零件的工程號。

(8) 把所有紅色零件的顏色改為粉紅色。

(9) 將向工程J1提供零件P1的供應商S1改為S2提供。

(10) 刪除全部紅色零件以及相應的供應-使用記錄。

2.產品價格數據庫,在實驗3.3的基礎上插入樣例數據並完成下列操作

(1) 列出速度至少是150的那些PC機的型號。

(2) 哪些廠家生產的LAPTOP配置的硬盤不低於1。

(3) 找出由生產廠B所生產的全部產品的型號和價格。

(4) 找出所有的彩色激光打印機的型號。

(5) 找出生產運行速度至少是450MC的PC的廠商。

(6) 找出價格最高的打印機。

(7) 找出每一個生產廠商的PC機的最高價格。

(8) 找出至少生產三種不同型號PC機的廠商。

(9) 廠商A兼並廠商B,把所有B廠商生產的產品改成由廠商A生產。

(10) 刪除所有不生產打印機的廠商生產的LAPTOP機。

三、實驗原理、方法和手段

在實驗3定義的關系模式的基礎上,使用SQL數據操作語句完成數據的查詢和更新操作。在查詢和更新時要注意查詢的優化策略。

四、實驗組織運行要求

本實驗為綜合型實驗,采用集中授課形式,學生集中上機操作。具體要求如下:

1、學生在進行實驗前必須進行充分的預習,熟悉實驗內容;

2、教師在學生實驗過程中予以必要的輔導,學生獨立完成實驗。

五、實驗條件

1、提供一台具有WINDOWS 98/2000/NT/XP操作系統的計算機;

2、Oracle8.0以上設計環境。

六、實驗步驟

類同實驗三。

七、思考題

實驗比較IN與Exists兩種子查詢的區別。

八、實驗報告

1.實驗預習

在實驗前每位同學都需要對本次實驗進行認真的預習,並寫好預習報告,在預習報告中要寫出實驗目的、要求、簡要的實驗步驟,形成一個操作提綱。

2.實驗記錄

學生開始實驗時,應該將記錄本放在近旁,將實驗中所做的每一步操作、所得結果及相關條件如實地記錄下來。

3.實驗報告

主要內容包括實驗中的查詢語句、數據更新語句、運行結果以及對操作過程中出現錯誤的分析總結,回答思考題,給出實驗結論。

九、其它說明

學生嚴格遵守實驗室的各項規章制度,配合和服從實驗室人員管理。

經過試驗 我們也得到了實驗的結果

注意這個兩個SQL實驗腳本是基於實驗一中的兩個數據庫的

代碼如下,進過驗證 實驗沒有錯誤 主要的是雙NOT EXISTS 詳細的解答見我的博客另一章節

--2.1---------------------------------------------------------------------------------------
select SNO FROM SPJ
WHERE JNO='J1';

select SNO FROM SPJ
WHERE JNO='J1'AND PNO='P1';

select SPJ.SNO FROM SPJ,P
WHERE SPJ.JNO='J1'AND SPJ.PNO=P.PNO AND COLOR='紅';

SELECT DISTINCT SPJ.JNO FROM SPJ,S,P
WHERE SPJ.SNO=S.SNO AND SPJ.PNO=P.PNO
      AND S.CITY!='天津' AND P.COLOR!='紅';
      
SELECT DISTINCT JNO
FROM  J
WHERE NOT EXISTS
   (
      SELECT * 
      FROM SPJ SPJ1
      WHERE SPJ1.sno='S1' AND NOT EXISTS
      (
        SELECT * 
        FROM SPJ SPJ2
        WHERE SPJ2.pno= SPJ1.pno AND SPJ1.jno= J.jno
      )
   );
      
SELECT SPJ.SNO,COUNT(*) FROM SPJ
GROUP BY SPJ.SNO;


SELECT SPJ.JNO FROM SPJ
GROUP BY SPJ.JNO
HAVING COUNT(*) >=3;

UPDATE  P
SET COLOR='粉紅'
WHERE COLOR='紅';

UPDATE SPJ
SET SNO='S2'
WHERE SNO='S1' AND JNO='J1' AND PNO='P1';

DELETE SPJ
WHERE SPJ.PNO IN 
            (
              SELECT P.PNO FROM p
              WHERE P.COLOR='紅' 
            );
            
DELETE  P
WHERE P.COLOR='紅';

--2.2---------------------------------------------------------------------------------
SELECT MODEL
FROM PC
WHERE SPEED >= 150;

SELECT DISTINCT PRODUCT.MAKER FROM PRODUCT,LAPTOP
WHERE PRODUCT.MODEL=LAPTOP.MODEL AND LAPTOP.HD >= 1.0;

SELECT MAKER,PRODUCT.MODEL,PRICE
FROM PRODUCT,PC
WHERE PRODUCT.MAKER='B' AND PRODUCT.model=PC.model
UNION
(
SELECT MAKER,PRODUCT.MODEL,PRICE
FROM PRODUCT,LAPTOP
WHERE PRODUCT.MAKER='B' AND PRODUCT.model=LAPTOP.model
)
UNION
(SELECT MAKER,PRODUCT.MODEL,PRICE
FROM PRODUCT,PRINTER
WHERE PRODUCT.MAKER='B' AND PRODUCT.model=PRINTER.model
);


SELECT MODEL FROM PRINTER
WHERE COLOR='TRUE';

SELECT DISTINCT PRODUCT.MAKER
FROM PRODUCT,PC
WHERE TYPE='PC' AND PRODUCT.MODEL=PC.MODEL AND SPEED>450;

SELECT  * FROM PRINTER 
WHERE PRICE >= ALL
(
  SELECT PRICE  FROM PRINTER
);

SELECT MODEL,PRICE 
FROM PRINTER
WHERE PRICE= 
(
  SELECT MAX(PRICE) FROM PRINTER
);

SELECT DISTINCT MAKER,MAX(PRICE)
FROM PRODUCT ,PC
WHERE PRODUCT.MODEL=PC.MODEL AND TYPE='PC'
GROUP BY MAKER;

SELECT DISTINCT MAKER,COUNT(*) FROM PRODUCT
WHERE TYPE='PC'
GROUP BY MAKER
HAVING COUNT(*)>=3;

UPDATE PRODUCT
SET MAKER='B'
WHERE MAKER='A';

DELETE PRODUCT P1
WHERE P1.TYPE='LAPTOP' AND EXISTS 
(
  SELECT * FROM PRODUCT P2
  WHERE P2.TYPE='Printer'
  AND P1.MODEL=P2.MODEL
);

ROLLBACK;

如有不當之處還請多多指教...

本人勞動成果,還請轉載署名出處。。。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved