一般來說,數據存儲在 DB2 中的關系表中。每個表由許多列和行組成。表列是在創建表期間定義的。還可以在創建表之後添加或刪除它們。表中存儲的數據需要與數據列定義保持一致。每個表可以有多個索引和視圖。
視圖(view) 就像是一個邏輯表,它由一個 SELECT 語句從一個或多個表或視圖獲得的結果集組成。與關系表不同,視圖中的數據不需要物理地存儲在硬盤上。當查詢視圖時就會獲取數據。除了在系統編目中存儲它的定義之外,視圖不使用物理空間。在創建視圖之後,可以使用數據操縱語言(Data Manipulation Language,DML)查詢視圖,甚至更新視圖。視圖提供了靈活的數據訪問功能,可以訪問一個表的子集或者來自多個表的結果集的聯結,同時隱藏了基表中數據的復雜性。
為了提供數據庫對象(比如表、索引和視圖)的邏輯視圖,使用一個或多個模式對它們進行分類。模式(schema) 是數據庫對象的一個邏輯分類。可以使用相同或不同的模式創建多個數據庫對象。例如,在表空間 SYSCATSPACE 中,所有基本系統表和索引都分組在同一個模式 SYSIBM 中。基本編目表和索引的所有視圖分組在模式 SYSCAT 或 SYSSTAT 中。
這個練習演示如何創建模式、表和視圖:
1、在 Control Center 中,點擊 All Databases > HELLOWLD > Schemas。看一下在創建數據庫時 DB2 創建的現有模式。點擊右下方窗口中的 Create New Schema。
2、在 Create Schema 向導中,輸入 HWLD 作為新的模式名稱。使用默認的 Authorization Name。點擊 OK 運行 CREATE SCHEMA 命令。同樣,點擊 Show SQL 就會看到實際的 DB2 命令。在命令完成之後,檢查 HWLD 是否顯示在模式視圖中。
3、在創建對象時,指定它應該屬於的模式。如果沒有顯式地指定模式名,那麼在默認情況下會使用用戶 ID 作為模式,但條件是用戶應該具有 IMPLICIT_SCHEMA 特權(本系列中的下一個教程將詳細討論特權)。參見 參考資料 中對整個 Hello World 系列的鏈接。
4、為了創建表,在 Control Center 窗口的左邊選擇 All Databases > HELLOWLD > Tables。在右下方的窗口中點擊 Create New Table。Create New Table 向導窗口啟動,它會帶領您執行創建表的步驟。
5、在 Create Table 向導中,首先從下拉菜單中選擇 HWLD 作為模式名。輸入 AUTHOR 作為表名。輸入描述性的注釋。點擊 Next。
6、在 Columns 頁面上,點擊 Add 為 AUTHOR 表添加列。在 Add Column 頁面上,指定 AUTHOR_NAME 作為列名,VARCHAR 作為數據類型,長度為 50。點擊 OK。
7、點擊 Add 添加第二個列,AUTHOR_ID 作為列名,數據類型是 Integer。點擊 OK。再添加第三個列,MODULE_NAME 作為列名,數據類型是 CHARACTER,長度是 20。點擊 OK。
8、應該會在 Columns 頁面上看到這三列。
圖 14. 創建表 —— 列
9、點擊 Next。顯示 Data Partitions 頁面。
10、數據分區(Data partitioning) 是 DB2 9 中的一個新特性,它允許跨多個表空間對大型表進行分區。點擊 Next 跳過這一步,因為 AUTHOR 表不是分區表。
11、在 Table spaces 頁面上,選擇 TBSP_DATA1 作為表空間。選擇 Use Separate Index Space,並選擇 TBSP_INDEX1 作為索引表空間。還可以為任何大對象指定單獨的表空間,但是這裡不需要這樣做。點擊 Next。
12、如果沒有看到 TBSP_DATA1 或 TBSP_INDEX1,那麼取消 Create Table 向導並確保從 Control Center 刷新表空間視圖。
13、此時不用定義任何主鍵或惟一鍵、維或約束。在後續頁面上一直點擊 Next,直到到達 Summary 頁面。
14、使用 Summary 頁面上的 Show SQL 查看實際的 Create Table 命令。點擊 Finish 創建 HWLD.AUTHOR 表。
15、應該會看到 DB2 Message 窗口(DB20000),這表示命令已經順利完成,沒有錯誤。關閉消息窗口。
16、在 Control Center Tables 視圖中,點擊剛才創建的 AUTHOR 表,在顯示窗口中應該會看到表的列定義、模式和創建者。
圖 15. Control Center —— Tables 視圖
16、在檢查 HWLD.AUTHOR 表之後,添加另一個列,AUTHOR_DOC。讓它成為 XML 列,因為要在這個 XML 列中直接存儲 XML 文檔。
17、右鍵單擊 AUTHOR,從菜單中選擇 Alter,Alter Table 向導打開。點擊 Add 啟動 Add Column 向導。
18、在 Add Column 向導中,輸入 AUTHOR_DOC 作為列名,選擇 XML 作為數據類型。選擇 Nullable,表示這個列可以包含 NULL 值。點擊 OK。
19、檢查 Alter Table 向導,確認已經添加了一個新的 XML 列。有一個選項可以將表數據存儲為壓縮格式,如果空間是個大問題或者表數據很大,那麼可以考慮使用這個選項。在這裡,數據保存為非壓縮格式。點擊 OK 讓 ALTER TABLE 完成操作。應該會返回消息 DB20000。關閉消息窗口。
在 Control Center 中,選擇 Table > Author,應該會看到數據類型為 XML 的第四個列。
20、為了創建基於 Author 表的視圖,選擇 Control Center > All Databases > HWLD > Views > Create New View。Create View 向導會帶領您執行創建視圖的步驟。
在 Create View 向導中,選擇 HWLD 作為視圖模式,輸入 DB2_AUTHOR 作為視圖名。
21、將 SQL 語句替換為以下語句:
(AUTHOR_NAME, MODULE_NAME)
AS
SELECT AUTHOR_NAME, MODULE_NAME FROM HWLD.AUTHOR WHERE MODULE_NAME='DB2 UDB'
22、檢查選項應該選擇 None,使視圖屬性為只讀。點擊 OK 創建視圖 DB2_AUTHOR。
23、在 Control Center 中,選擇 DB2_AUTHOR 視圖,看看屏幕右下方面板中的視圖定義。
圖 16. 視圖 —— 顯示相關對象
24、點擊 Show Related Objects。在 Show Related 頁面上,點擊 Tables 選項卡。顯示這個視圖的基表的相關信息。點擊 Close。