資料庫系統概論第 九章 表格異動處理   上一頁   

9-7 表格異動整合運用

內容:

  • 9-7 表格異動整合運用

    • 9-7-1 暫存資料表的運用

    • 9-7-2 範例研討:查詢學生修課成績

  • 9-8 綜合練習

9-7-1 暫存資料表的運用

在第六章我們介紹了『子查詢』與『合併查詢』的整合運用,但發現其中最大困難是合併後的『動態資料表』,必須立即連接子查詢或與其他資料表(或動態資料表)合併,有時候真的很難連結。如果我們能產生暫時資料表,並將查詢後的動態資料表儲存起來,對於查詢語句就會比較好編寫,尤其在資料庫程式設計方面就會簡單許多。當查詢運作完成後,再將這些暫存資料表刪除即可。

9-7-2 範例研討:查詢學生修課成績

(A) 程式功能:Ex9_7

請查詢90211302 同學這學期修讀了幾門課,印出課程名稱與分數。

(B) 系統分析:

此題目在第七章(Ex7_2) 練習過,利用混合查詢的缺點是必須及時連結臨時表格,如果我們產生一些暫存資料表來承接臨時表格的結果,就能解決此問題。我們依照下圖資料的流程,一步一步將結果存入暫存資料表。

(C) 程式範例:

  • 步驟 1首先須由 select_course 表內查詢出該學生修了那些課,以及成績,並建立 temp1 = {open_course_ID, final},將查詢結果存入其中。

Create Table temp1 AS

            Select open_course_ID, final

            From select_course

            Where student_ID = "90211302";

Select *

From temp1;

  • 步驟 2接著,將 open_course temp1 表格合併,查詢出該生修課的課程編碼(course_ID) 與成績,並產生 temp2 表將其結果存入,如下:

Create Table temp2 AS

             Select course_ID, final

              From temp1 as A, open_course as B

             Where A.open_course_ID =B.open_course_ID;

Select *

From temp2;

  • 步驟 3接著將 temp2 all_course 表格合併,查詢出課程名稱與修課成績。最後將 temp1 temp2 兩表格刪除,如下:

Select course_name, final

From temp2 as A, all_course as B

where A.course_ID = B.course_ID;

Drop table temp1;

Drop table temp2;

(D) 歸納完整程式:吾人將步驟 1 到步驟 3 的程式片段歸納如下:

create table temp1 as

       select open_course_ID, final

       from select_course

       where student_ID = "90211302";

      

create table temp2 as

       select A.course_ID, B.final

       from open_course as A, temp1 as B

       where A.open_course_ID = B.open_course_ID;

 

select course_name, final

from temp2 as C, all_course as D

where C.course_ID = D.course_ID;

 

drop table temp1;

drop table temp2;

9-8 綜合練習

請利用暫時資料表與混合查詢之整合運用,製作下列題目:

    1. 請查詢『進四資二丙』這學期開了哪些課程,請依照課程名稱、必選修、學分數與授課教師之順序印出。

    2. 請查詢粘添壽老師這學期所開的課程,請依照班級名稱、課程名稱、必選修、學分數等順序印出。

    3. 請查詢資訊管理系這學期開了哪些課程,請依課程名稱、班級名稱、授課教師、必選修與學分數之順序印出。

翻轉工作室:粘添壽

 

資料庫系統概論(含邏輯設計)

 

 

翻轉電子書系列: