DB2 - 表



表是由資料庫管理器維護的邏輯結構。在表中,每個垂直塊稱為列(元組),每個水平塊稱為行(實體)。以列和行的形式儲存的資料集合稱為表。在表中,每一列都有不同的資料型別。表用於儲存永續性資料。

表型別

  • 基本表:它們儲存永續性資料。基本表有不同種類,包括
    • 常規表:通用表,帶索引的常用表是通用表。
    • 多維聚簇表 (MDC):這種型別的表在多個鍵上進行物理聚簇,用於維護大型資料庫環境。DB2 pureScale 不支援此類表。
    • 插入時間聚簇表 (ITC):類似於 MDC 表,行按插入表中的時間進行聚簇。它們可以是分割槽表。它們也不支援 pureScale 環境。
    • 範圍聚簇表 (RCT):這種型別的表提供快速直接的資料訪問。這些表實現為順序聚簇。表中的每個記錄都有一個記錄 ID。此類表用於資料與表中的一列或多列緊密聚簇的情況。此類表也不支援 DB2 pureScale。
    • 分割槽表:這種型別的表用於資料組織模式,其中表資料被分成多個儲存物件。可以向分割槽表新增、附加和分離資料分割槽。您可以將來自一個表的多資料分割槽儲存在一個表空間中。
    • 時間表:資料庫中表的歷史記錄儲存在時間表中,例如以前進行的修改的詳細資訊。
  • 臨時表:對於不同的資料庫操作的臨時工作,您需要使用臨時表。臨時表 (DGTTs) 不會出現在系統目錄中,XML 列不能用於建立的臨時表。
  • 物化查詢表:MQT 可用於提高查詢效能。這些型別的表由一個查詢定義,該查詢用於確定表中的資料。

建立表

以下語法建立表

語法:[建立新表]

db2 create table <schema_name>.<table_name>
(column_name column_type....) in <tablespace_name>   

示例:我們在“professional”模式下建立一個表來儲存“員工”詳細資訊。該表具有“id、name、jobrole、joindate、salary”欄位,並且該表資料將儲存在表空間“ts1”中。

db2 create table professional.employee(id int, name 
varchar(50),jobrole varchar(30),joindate date, 
salary double) in ts1    

輸出

DB20000I The SQL command completed successfully.    

列出表詳細資訊

以下語法用於列出表詳細資訊

語法:[檢視已建立的帶有模式的表的列表]

db2 select tabname, tabschema, tbspace from syscat.tables    

示例:[檢視當前資料庫中的表列表]

db2 select tabname, tabschema, tbspace from syscat.tables     

輸出

TABNAME      TABSCHEMA     TBSPACE 
------------ ------------- -------- 
EMPLOYEE     PROFESSIONAL    TS1  


 1 record(s) selected.     

列出表中的列

以下語法列出表中的列

語法:[查看錶的列和資料型別]

db2 describe table <table_name>    

示例:[查看錶“employee”的列和資料型別]

db2 describe table professional.employee     

輸出

             Data type                   Column 
Column name  schema    Data type name    Length    Scale Nulls 
------ ----- --------- ----------------- --------- ----- ------ 
ID           SYSIBM    INTEGER             4         0     Yes 
NAME         SYSIBM    VARCHAR             50        0     Yes 
JOBROLE      SYSIBM    VARCHAR             30        0     Yes 
JOINDATE     SYSIBM    DATE                4         0     Yes 
SALARY       SYSIBM    DOUBLE              8         0     Yes  

  5 record(s) selected.   

隱藏列

您可以隱藏表的整個列。如果您呼叫“select * from”查詢,則隱藏列不會返回到結果表中。當您將資料插入表中時,沒有列列表的“INSERT”語句不期望任何隱式隱藏列的值。這些型別的列在物化查詢表中被高度引用。這些型別的列不支援建立臨時表。

建立帶隱藏列的表

以下語法建立帶隱藏列的表

語法:[建立帶隱藏列的表]

db2 create table <tab_name> (col1 datatype,col2 datatype 
implicitly hidden)    

示例:[建立帶隱藏列“phone”的“customer”表]

db2 create table professional.customer(custid integer not 
null, fullname varchar(100), phone char(10) 
implicitly hidden)     

在表中插入資料值

以下語法在表中插入值

語法:[將值插入表中]

db2 insert into <tab_name>(col1,col2,...)
 values(val1,val2,..)    

示例:[在“customer”表中插入值]

db2 insert into professional.customer(custid, fullname, phone) 
values(100,'ravi','9898989')


db2 insert into professional.customer(custid, fullname, phone) 
values(101,'krathi','87996659')


db2 insert into professional.customer(custid, fullname, phone) 
values(102,'gopal','768678687')

輸出

DB20000I  The SQL command completed successfully.

從表中檢索值

以下語法從表中檢索值

語法:[從表中檢索值]

db2 select * from <tab_name>    

示例:[從“customer”表中檢索值]

db2 select * from professional.customer 

輸出

CUSTID      FULLNAME 
----------- ------------------------ 
        100 ravi
		
        101 krathi
		
        102 gopal  
		
  3 record(s) selected. 

從包括隱藏列的表中檢索值

以下語法從選定列中檢索值

語法:[從表中檢索選定的隱藏列值]

db2 select col1,col2,col3 from <tab_name>    

示例:[從表中檢索選定列值結果]

db2 select custid,fullname,phone from professional.customer  

輸出

CUSTID  FULLNAME    PHONE 
------- ---------   ------------ 
100     ravi        9898989
 
101     krathi      87996659 

102     gopal       768678687 

  3 record(s) selected. 

如果要檢視隱藏列中的資料,則需要執行“DESCRIBE”命令。

語法:

db2 describe table <table_name> show detail     

示例

db2 describe table professional.customer show detail     

輸出

Column name     Data type schema     Data type name  Column
           column    Partitionkey  code 
                                       Length   Scale    Nulls     
number     sequence      page     Hidden      Default 
--------------- -------------------- --------------- -------- ----
---- -------- ---------- ------------- -------- ----------- ------ 
---  
CUSTID          SYSIBM               INTEGER         4        0 
No       0          0         0        No 
FULLNAME        SYSIBM               VARCHAR         100      0
Yes      1          0        1208     No     

PHONE           SYSIBM               CHARACTER       10       0     
Yes      2          0             1208     Implicitly  
  
3 record(s) selected.  

更改表列的型別

您可以使用以下“alter”命令修改表結構

語法:

db2 alter table <tab_name> alter column <col_name> set data type <data_type>     

示例:[將“employee”表的“id”列的資料型別從“int”修改為“bigint”]

db2 alter table professional.employee alter column id set data type bigint      

輸出:

DB20000I The SQL command completed successfully.    

更改列名

您可以如下所示更改列名

語法:[將表的列名從舊名稱修改為新名稱]

db2 alter table <tab_name> rename column <old_name> to <new_name>     

示例:[將“customers”表中的列名從“fullname”修改為“custname”。]

db2 alter table professional.customer rename column fullname to custname       

刪除表

要刪除任何表,您需要使用以下“DROP”命令

語法:

db2 drop table <tab_name>     

示例:[從資料庫中刪除customer表]

db2 drop table professional.customers       

要刪除表的整個層次結構(包括觸發器和關係),您需要使用“DROP TABLE HIERARCHY”命令。

語法:

db2 drop table hierarchy <tab_name>

示例:[刪除表“customer”的整個層次結構]

db2 drop table hierarchy professional.customers       
廣告