DB2傻瓜1000問(二)

litterbaby發表於2007-04-01
DB2傻瓜1000問(二)[@more@]

101、 什麼是資料庫分割槽組?
資料庫分割槽組是一個或者多個資料庫分割槽的集合。透過資料庫分割槽的分組,能夠在一個分割槽組的級別進行資料庫操作,而不是在單一的分割槽進行。這樣能夠使得操作更為簡便。

102、 如何建立資料庫分割槽組?
CREATE DATABASE PARTITION GROUP

103、 預設新增的分割槽組都是那些?
在建立資料庫的時候,有三個分割槽組被預設新增:
IBMCATGROUP
IBMTEMPGROUP
IBMDEFAULTGROUP

104、 IBMCATGROUP分割槽組是什麼?
這個分割槽組只是DB2的目錄表空間SYSCATSPACE在裡面。只是含有一個分割槽,這個分割槽就是執行CREATE DATABASE命令的分割槽上。

105、 IBMTEMPGROUP分割槽組是什麼?
所有分割槽的系統臨時表空間的分割槽組。

106、 IBMDEFAULTGROUP分割槽組是什麼?
所有分割槽的使用者表空間的分割槽組。

107、 表空間是如何管理分類的?
在V8有兩種表空間的分類:
系統管理表空間
資料庫管理表空間
在V9新新增了一種管理方式:DMS 的自動儲存(Automatic Storage With DMS)

108、 什麼是系統管理的空間(System-Managed Space,SMS)?
由作業系統的檔案系統管理器分配和管理空間。在 DB2 9 之前,如果不帶任何引數建立資料庫或表空間,就會導致所有表空間作為 SMS 物件建立。就是說V8中這種型別是預設模式。

109、 什麼是資料庫管理表空間Database-Managed Space,DMS?
由資料庫管理程式控制儲存空間。這種表空間本質上是一種特殊用途的檔案系統實現,可以最好地滿足資料庫管理程式的需要。

110、 什麼是DMS 的自動儲存(Automatic Storage With DMS)?
自動儲存實際上不是一種單獨的表空間型別,而是一種處理 DMS 儲存的不同方式。DMS 容器需要比較多的維護(見後面的一節),在 DB2 V8.2.2 中引入了自動儲存,作為簡化空間管理的方式。

111、 三種各有什麼特點?
特性 SMS DMS 自動儲存
是否分段(Striping)? 是 是 是
預設型別 Version 8 無 Version 9
物件管理 作業系統 DB2 DB2
空間分配 按需增長/收縮 預先分配;大小可以收縮和增長,但是需要 DBA 干預。 預先分配;可以自動增長。
管理的簡便性 最好;很少需要調優,甚至不需要 好,但是需要一些調優(例如, EXTENTSIZE PREFETCHSIZE) 最好;很少需要調優,甚至不需要
效能 非常好 最好;可透過利用原始容器多獲得 5% 到 10% 的收益 最好;但是,可以不使用原始容器
表空間最大大小 64GB(4K 頁面) 2TB(4K 頁面) 2TB(4K 頁面)


112、 基於資料型別表空間是如何分類的?
有三類:
regular
large
temparory
其中臨時有兩種:系統臨時和使用者臨時

113、 新增表空間的頁的大小?
頁的大小可以是4K、8K、16K、32K

114、 新增資料庫的時候預設新增的表空間是那些?
SYSCATSPACE
TEMPSPACE1
USERSPACE1

115、 新增資料庫的時候預設新增的快取池名叫什麼?
IBMDEFAULTBP

116、 DB2資料庫資料型別是如何分類的?
內建資料型別和使用者定義型別

117、 內建資料庫資料型別有那些?
數值型
字元型
日期時間
資料連線型

118、 數值型如何分類的?
Small integer (SMALLINT)
2 個位元組 -32,768 到 32,767的整數

Integer (INT or INTEGER)
4 個位元組 -2,147,483,648 到 2,147,483,647的整數

Big integer (BIGINT)
8 個位元組 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 的整數

DECIMAL/NUMERIC
需要指定精度 (p,表示總的位數)和小數位 (s,表示小數點右邊的位數)
資料庫中需要的儲存空間依賴於精度,按照公式 p/2 +1 計算。所以 DECIMAL(10,2) 需要 10/2 + 1 (即 6)位元組。

REAL/FLOAT
DOUBLE/FLOAT
REAL 和 DOUBLE 用來儲存數字的近似值。例如,非常小或非常大的科學計量值可以定義為 REAL。REAL 可以定義為具有 1 到 24 位之間的長度,需要 4 位元組的儲存空間。DOUBLE 可以定義為具有 25 到 53 位之間的長度,需要 8 位元組的儲存空間。FLOAT 可以視為 REAL 或 DOUBLE 的同義詞。

119、 字串資料型別是如何分類的?
Character (CHAR)
CHAR 或 CHARACTER 用來儲存最多 254 位元組的固定長度的字串

Variable character (VARCHAR)
用來儲存可變長度的字串。 VARCHAR 列的最大長度為 32,672 位元組。在資料庫中,VARCHAR 資料只佔用恰好所需的空間。

Long variable character (LONG VARCHAR)
Character large object (CLOB)
GRAPHIC
用來儲存固定長度的雙位元組字串。GRAPHIC 列的最大長度是 127 個字元。

VARGRAPHIC
用來儲存可變長度的雙位元組字串。VARGRAPHIC 列的最大長度是 16,336 個字元。

LONG VARGRAPHIC
Double-byte character large object (DBCLOB)
長資料型別的長度最大可以定義為 2GB。但是,需要的空間只是實際使用的空間。

120、 日期時間資料型別是如何分類的?
DB2 提供了三種儲存日期和時間的資料型別:

DATE
TIME
TIMESTAMP

121、 使用者定義資料型別是如何分類的?
有三種使用者自定義的資料型別:
1) 使用者定義的單值型別
2) 使用者定義的結構化型別
3) 使用者定義的引用型別

122、 什麼是使用者定義的單值型別?
基於內建型別定義新的資料型別。這個新型別具有該內建型別相同的功能,但可以使用它確保只比較相同型別的值。

123、 如何新增使用者定義的單值型別?
CREATE DISTINCT TYPE
例如
CREATE DISTINCT TYPE CANDOL AS DECIMAL(10,2) WITH COMPARISONS
CREATE DISTINCT TYPE USADOL AS DECIMAL(10,2) WITH COMPARISONS

124、 什麼是使用者定義的結構化型別?
建立由幾個內建型別列組成的型別。然後,可以在建立表時使用這個結構化型別。例如,可以建立一種名為 ADDRESS 的結構化型別,它包含表示街道號碼、街道名、城市之類的資料。然後在定義其他表(如職工表或者供應商表)時使用這種型別,因為這些表也需要同樣的資料。另外,結構化型別還可以在層次結構中有子型別。這就允許將屬於某一層次結構的物件儲存在資料庫中。

125、 如何新增使用者定義的結構化型別?
CREATE STRUCTURE TYPE

126、 什麼是使用者定義的引用型別?
在使用結構化型別時,可以使用引用型別定義對另一個表中行的引用。這些引用看起來與參照約束相似,然而,它們不強制表間有關係。表中的引用允許用不同的方法指定查詢。

127、 如何新增使用者定義的引用型別?
CREATE REFERENCE TYPE

128、 DB2資料庫上表是如何分類的?
DB2資料庫上表有永久表和臨時表之分:
永久表包括:
系統目錄表
使用者表

臨時表包括:
系統表
使用者表

129、 系統目錄表存放的內容是那些?
1) 所有資料庫物件的定義
2) 表和檢視列的資料型別
3) 約束定義
4) 物件許可權
5) 物件的依賴

130、 SYSIBM模式存放的內容是那些?
用於基礎系統目錄表

131、 SYSCAT模式存放的內容是那些?
用於系統目錄表檢視的定義

132、 SYSSTAT模式存放的內容是那些?
用於存放關於資料庫統計資訊的檢視

133、 預設情況下表存放的預設表空間的選擇是如何選擇的?
按照以下的順序來選擇:
1) IBMDEFAULTGROUP表空間是否存在
2) 有沒有使用者新增的表空間
3) 表空間USERSPACE1是否存在
4) 如果上面的都沒有的話,就會返回一個錯誤

134、 如何基於一個已經存在的表定義一個新表?
CREATE TABLE clone like tablename
或者
CREATE TABLE clone AS (SELECT * FROM tablename) DEFINITION ONLY

135、 如何新增一個表?
CREATE TABLE myemployees (
empID INT NOT NULL PRIMARY KEY,
empname VARCHAR(30) NOT NULL,
mngrID INT NOT NULL,
history CLOB)
IN datadms
INDEX IN indexdms
LONG IN largedms
最後三行是指定存放表空間的位置。

136、 如何新增一個新列?
ALTER TABLE myemployees ADD COLUMN address CHAR(45)

137、 如何刪除表?
DROP TABLE myemployees

138、 如何在表上設定預設值?
使用DEFAULT字句
CREATE TABLE company (
companyID INTEGER,
companyName VARCHAR(30),
city VARCHAR(20) DEFAULT 'TORONTO'
)

139、 如何如何使用預設值插入表?
有兩種方式,可以得到同樣的結果:
(1)INSERT INTO company (companyID, companyName, city)
VALUES ( 111 , 'cityOne' , DEFAULT)
(2)INSERT INTO company (companyID, companyName)
VALUES ( 111, 'cityOne' )

140、 如何在表上自動生成連續的數字?
使用CREATE TABLE語句中的GENERATED子句:
CREATE TABLE product (
productno INTEGER GENERATED ALWAYS AS
IDENTITY (START WITH 200 INCREMENT BY 1),
description VARCHAR(50) )
這時不能插入其他的值。因為使用了ALWAYS
如果使用GENERATED BY DEFAULT就可以自己主動插入值。
同時還可以這樣使用:
CREATE TABLE income (
empno INTEGER,
salary INTEGER,
taxRate DECIMAL(5,2),
netSalary DECIMAL(7,2) GENERATED ALWAYS AS (salary * (1 - taxRate))
)

INSERT INTO income (empno, salary, taxRate) VALUES (111, 50000, 0.3)

EMPNO SALARY TAXRATE NETSALARY
----------- ----------- ------- ---------
111 50000 0.30 35000.00

141、 如何使用唯一約束?
使用UNIQUE 或者 PRIMARY KEY
CREATE TABLE employ (
empID INT NOT NULL PRIMARY KEY,
name CHAR(30) ,
deptID INT NOT NULL UNIQUE
)

142、 如何新增檢查約束?
CREATE TABLE student (
student_ID INT NOT NULL PRIMARY KEY,
name VARCHAR(30) NOT NULL,
sex CHAR(1) NOT NULL
CONSTRAINT sex_check_const CHECK (sex in ('M ', 'F '))
)
或者
ALTER TABLE student
ADD CONSTRAINT sex_check_const CHECK (sex in ('M ', 'F '))

143、 如何關閉資料一致性?
SET INTEGRITY FOR student OFF

144、 使用索引的主要原因是什麼?
1、 提高查詢速度。
2、 在定義為唯一的時候,保證唯一性。

145、 檢視的分類?
可刪除檢視
可更新檢視
可插入檢視
只讀檢視

146、 如何新增資料庫分割槽組?
CREATE DATABASE PARTITION DROUP name ON DBPARTITIONNUMS( )

147、 如何修改資料庫分割槽組?
ALTER DATABASE PARTITION GROUP name ADD DBPARTITIONNUM ()

148、 如何列出資料庫分割槽組?
LIST DATABASE PARTITION GROUPS
LIST DATABASE PARTITION GROUPS SHOW DETAIL

149、 如何刪除資料庫分割槽組?
DROP DATABASE PARTITION GROUP name

資料庫安全
150、 資料庫安全應該如何定義?
1) 允許誰訪問例項和/或資料庫
2) 在哪裡以及如何檢驗使用者的密碼
3) 使用者被授予的許可權級別
4) 允許使用者執行的命令
5) 允許使用者讀取和/或修改的資料
6) 允許使用者建立、修改和/或刪除的資料庫物件

151、 DB2的安全機制有哪幾種?
DB2 中有三種主要的安全機制:
身份驗證(authentication)
授權(authorization)
特權(privilege)

152、 什麼是身份驗證?
身份驗證是使用者在嘗試訪問 DB2 例項或資料庫時遇到的第一種安全特性。DB2 身份驗證與底層作業系統的安全特性緊密協作來檢驗使用者 ID 和密碼。DB2 還可以利用 Kerberos 這樣的安全協議對使用者進行身份驗證。

153、 什麼是授權?
授權決定使用者和/或使用者組可以執行的操作以及他們可以訪問的資料物件。使用者執行高階資料庫和例項管理操作的能力由指派給他們的許可權決定。在 DB2 中有 5 種不同的許可權級別:SYSADM、SYSCTRL、SYSMAINT、DBADM 和 LOAD。

154、 什麼是特權?
特權的粒度比授權要細,可以分配給使用者和/或使用者組。特權定義使用者可以建立或刪除的物件。它們還定義使用者可以用來訪問物件(比如表、檢視、索引和包)的命令。DB2 9 中新增的一個概念是基於標籤的訪問控制(LBAC),它允許以更細的粒度控制誰有權訪問單獨的行和/或列。

155、 DB2身份驗證型別是那些?
SERVER
身份驗證在伺服器上進行。

SERVER_ENCRYPT
身份驗證在伺服器上進行。密碼在客戶機上進行加密,然後再傳送到伺服器。

CLIENT
身份驗證在客戶機上進行(例外情況見 處理不可信的客戶機)。

*KERBEROS
由 Kerberos 安全軟體執行身份驗證。

*KRB_SERVER_ENCRYPT
如果客戶機設定是 KERBEROS,那麼由 Kerberos 安全軟體執行身份驗證。否則使用 SERVER_ENCRYPT。

DATA_ENCRYPT
身份驗證在伺服器上進行。伺服器接受加密的使用者 ID 和密碼,並對資料進行加密。這個選項的操作方式與 SERVER_ENCRYPT 相同,但是資料也要加密。

DATA_ENCRYPT_CMP
身份驗證方式與 DATA_ENCRYPT 相同,但是允許不支援 DATA_ENCRYPT 的老式客戶機使用 SERVER_ENCRYPT 身份驗證進行連線。在這種情況下,資料不進行加密。如果進行連線的客戶機支援 DATA_ENCRYPT,就會進行資料加密,而不能降級到 SERVER_ENCRYPT 身份驗證。這個身份驗證型別只在伺服器的資料庫管理程式配置檔案中是有效的,而且在客戶機或閘道器例項上使用 CATALOG DATABASE 時是無效的。

GSSPLUGIN
身份驗證方式由一個外部 GSS-API 外掛決定。

GSS_SERVER_ENCRYPT
身份驗證方式由一個外部 GSS-API 外掛決定。在客戶機不支援伺服器的 GSS-API 外掛之一的情況下,使用 SERVER_ENCRYPT 身份驗證。

156、 如何在伺服器上設定身份驗證?
在資料庫伺服器上,在資料庫管理程式配置(DBM CFG)檔案中使用 AUTHENTICATION 引數設定身份驗證。請記住,DBM CFG 檔案是一個例項級配置檔案。因此,AUTHENTICATION 引數影響這個例項中的所有資料庫。
db2 update dbm cfg using authentication server_encrypt
db2stop
db2start

157、 如何在閘道器上設定身份驗證?
使用 catalog database 命令在閘道器上設定身份驗證。
db2 catalog database myhostdb at node nd1 authentication SERVER
db2 terminate

158、 如何在客戶機上設定身份驗證?
連線伺服器資料庫的客戶機
db2 catalog database sample at node nd1 authentication SERVER
連線主機資料庫的客戶機
db2 catalog database myhostdb at node nd1 authentication SERVER

159、 什麼是SYSADM許可權?
DB2 中的 SYSADM 許可權是最高許可權。對一個 DB2 例項擁有 SYSADM 許可權的使用者能夠對這個例項、這個例項中的任何資料庫以及這些資料庫中的任何物件發出任何 DB2 命令。

160、 如何設定SYSADM許可權?
SYSADM 許可權由 DBM CFG 檔案中的 SYSADM_GROUP 引數控制。可以將這個許可權授予某個組
db2 update dbm cfg using SYSADM_GROUP db2grp1

161、 什麼是SYSCRL許可權?
SYSCTRL 只是對例項執行所有的管理和維護命令,但是不能訪問資料庫中的任何資料。使用者可以對例項中的任何資料庫執行的命令示例如下:
db2start/db2stop
db2 create/drop database
db2 create/drop tablespace
db2 backup/restore/rollforward database
db2 runstats(針對任何表)
db2 update db cfg for database dbname

162、 如何獲得SYSCTRL許可權?
db2 update dbm cfg using SYSCTRL_GROUP group name

163、 什麼是SYSMAINT許可權?
SYSMAINT 使用者只能執行與維護相關的任務,比如:
db2start/db2stop
db2 backup/restore/rollforward database
db2 runstats(針對任何表)
db2 update db cfg for database dbname

164、 如何獲得SYSMAINT許可權?
db2 update dbm cfg using SYSMAINT_GROUP group name

165、 什麼是DBADM許可權?
DBADM 許可權是一個資料庫級許可權,而不是例項級許可權。
drop database
drop/create tablespace
backup/restore database
update db cfg for database db name
db2 create/drop table
db2 grant/revoke(任何特權)
db2 runstats(任何表)

166、 如何獲得DBADM許可權?
有三種:
1、db2 create database test
這個命令將資料庫 test 上的 DBADM 許可權隱式地授予發出此命令的使用者。
2、db2 connect to sample
db2 grant dbadm on database to user tst1
這個命令只能由 SYSADM 使用者發出;它向使用者 tst1 授予示例資料庫上的 DBADM 許可權。注意,在授予 DBADM 許可權之前,發出這個命令的使用者必須連線到示例資料庫。
3、db2 grant dbadm on database to group db2grp1
這個命令將 DBADM 許可權授予 db2grp1 組中的每個使用者。同樣,只有 SYSADM 使用者能夠發出這個命令。

167、 什麼是LOAD許可權?
LOAD 許可權是一個資料庫級許可權,所以它可以被分配給使用者和使用者組。顧名思義,LOAD 許可權允許使用者對錶發出 LOAD 命令。當用大量資料填充表時,LOAD 命令通常用來替代插入或匯入命令,它的速度更快。根據您希望執行的 LOAD 操作型別,僅僅擁有 LOAD 許可權可能還不夠。可能還需要表上的特定特權。
擁有 LOAD 許可權的使用者可以執行以下命令:
db2 quiesce tablespaces for table
db2 list tablespaces
db2 runstats(任何表)
db2 load insert(必須有表上的插入特權)
db2 load restart/terminate after load insert(必須有表上的插入特權)
db2 load replace(必須有表上的插入和刪除特權)
db2 load restart/terminate after load replace(必須有表上的插入和刪除特權)

168、 如何獲得LOAD許可權?
只有擁有 SYSADM 或 DBADM 許可權的使用者能夠對使用者或使用者組授予或撤消 LOAD 許可權。以下示例演示 LOAD 許可權如何允許我們的使用者使用 LOAD 命令將資料裝載進 sales 表中。假設已經發出了命令 db2 connect to sample。
1、
db2 grant load on database to user tst1
db2 grant insert on table sales to user tst1
有了 LOAD 許可權和插入特權,tst1 就可以對 sales 表發出 LOAD INSERT 或 LOAD RESTART,或者在 LOAD INSERT 之後發出 TERMINATE。
2、
db2 grant load on database to group grp1
db2 grant delete on table sales to group grp1
db2 grant insert on table sales to group grp1
有了 LOAD 許可權以及刪除和插入特權,grp1 的任何成員就可以對 sales 表發出 LOAD REPLACE 或 LOAD RESTART,或者在 LOAD REPLACE 之後發出 TERMINATE。

169、 特權是如何分類的?
特權分成兩類:
資料庫級特權(針對資料庫中的所有物件)
物件級特權(與特定的物件相關聯)。

170、 什麼是資料庫級特權?
1) CREATETAB: 使用者可以在資料庫中建立表。
2) BINDADD: 使用者可以使用 BIND 命令在資料庫中建立包。
3) CONNECT: 使用者可以連線資料庫。
4) CREATE_NOT_FENCED: 使用者可以建立 unfenced 使用者定義函式(UDF)。
5) IMPLICIT_SCHEMA: 使用者可以在資料庫中隱式地建立模式,而不需要使用 CREATE SCHEMA 命令。
6) LOAD: 使用者可以將資料裝載進表中。
7) QUIESCE_CONNECT: 使用者可以訪問處於靜默(quiesced)狀態的資料庫。
8) CREATE_EXTERNAL_ROUTINE: 使用者可以建立供應用程式和資料庫的其他使用者使用的過程。

171、 物件級許可權總結?
特權名稱 相關物件 描述
CONTROL 表、檢視、索引、包、別名、不同的型別、使用者定義函式、序列 提供對物件的全部許可權。擁有這種特權的使用者還可以向其他使用者授予或撤消對物件的特權。
DELETE 表、檢視 允許使用者從物件中刪除記錄。
INSERT 表、檢視 允許使用者透過 INSERT 或 IMPORT 命令將記錄插入物件中。
SELECT 表、檢視 提供使用選擇語句來檢視物件內容的能力。
UPDATE 表、檢視 允許使用者使用更新語句修改物件中的記錄。
ALTER 表 允許使用者使用更改語句更改物件定義。
INDEX 表 允許使用者使用建立索引語句在物件上建立索引。
REFERENCES 表 提供在物件上建立或刪除外來鍵約束的能力。
BIND 包 允許使用者重新繫結現有的包。
EXECUTE 包、過程、函式、方法 允許使用者執行包和例程。
ALTERIN 模式 允許使用者修改模式中的物件定義。
CREATEIN 模式 允許使用者在模式中建立物件。
DROPIN 模式 允許使用者刪除模式中的物件。

172、 模式特權是什麼?
1) CREATEIN 允許使用者在模式內建立物件。
2) ALTERIN 允許使用者更改模式內的物件。
3) DROPIN 允許使用者刪除模式內的物件。

173、 什麼是表空間特權?
USE OF TABLESPACE
允許使用者在特定表空間內建立表。這一特權無法用於 SYSCATSPACE 或任何系統臨時表空間。

174、 什麼是索引特權?
CONTROL
允許使用者刪除索引。

175、 什麼是例程特權?
EXECUTE
允許使用者執行使用者定義的函式。

176、 什麼是順序特權?
USAGE
允許使用者為順序物件使用 NEXTVAL 和 PREVVAL 表示式。

177、 列出資料庫許可權的系統編目檢視名是什麼?
SYSCAT.DBAUTH

178、 列出表和檢視許可權的系統編目檢視名是什麼?
SYSCAT.TABAUTH

179、 列出列許可權的系統編目檢視名是什麼?
SYSCAT.COLAUTH

180、 列出包許可權的系統編目檢視名是什麼?
SYSCAT.PACKAGEAUTH

181、 列出索引許可權的系統編目檢視名是什麼?
SYSCAT.INDEXAUTH


182、 列出模式許可權的系統編目檢視名是什麼?
SYSCAT.SCHEMAAUTH


183、 列出伺服器許可權的系統編目檢視名是什麼?
SYSCAT.PASSTHRUAUTH


184、 列出例程(函式,儲存過程)許可權的系統編目檢視名是什麼?
SYSCAT.ROUTINEAUTH

185、 什麼是基於標籤的訪問控制(LBAC)?
這個功能是DB2新增的一個概念,是為 DBA 提供了在表的行或列級限制讀/寫特權的能力。

186、 什麼是防火牆?
防火牆是一系列程式和硬體,位於閘道器伺服器上。用於防止沒有認證的連線到系統或者網路上。

187、 防火牆是如何分類的?
分成四類:
網路級別,包過濾,或者監視路由防火牆
典型程式級代理防火牆
關鍵級或者透明防火牆
SMLI防火牆

188、 DB2是如何進行資料加密的?
DB2可以對資料進行加密,主要透過三個函式來進行的:
加密函式
Encrypt (data-string-expression, password-string-expression, and hint-string-expression).

解密函式
Decrypt_Bin (encrypted-data, password-string-expression).

Decrypt_Char (encrypted-data, password-string-expression).


189、 如何進行行級加密?
-- Create emp table, set encryption password, and insert three rows:

create table emp (ssn varchar(124) for bit data);
set encryption password ='DNTTEAM';
insert into emp (ssn) values(encrypt('111-11-1111'));
insert into emp (ssn) values(encrypt('222-22-2222'));
insert into emp (ssn) values(encrypt('333-33-3333'));
-- Select data from emp table:

select ssn from emp

SSN
-----------------------------------------------------------------
x'0010F0FF0333D5A034E989260E4F99ED59070DD69B6E3C1B'
x'005EA2FF0333D5A05F167D1BC1E9EAD33D7D4987B57D5670'
x'00EE12FF0333D5A06174133D8E3A22756382F84B48F4DD05'

-- Set encryption password:

set encryption password ='DNTTEAM';
select decrypt_char(ssn) as ssn from emp;

SSN
-----------
111-11-1111
222-22-2222
333-33-3333


190、 DB2的一些特殊的暫存器都是那些?
CURRENT DATE
CURRENT ISOLATION
CURRENT LOCK TIMEOUT
CURRENT PACKAGE PATH
CURRENT PATH
CURRENT SCHEMA
CURRENT TIME
CURRENT TIMESTAMP
SESSION_USER
SYSTEM_USER
USER

191、 如何顯示暫存器的值?
VALUES special_register

SELECT CURRENT ISOLATION FROM sysibm.sysdummy1

192、 如何設定暫存器的值?
SET CURRENT ISOLATION RR

193、 如何提取記錄的前幾個記錄資料?
SELECT語句中使用FETCH FIRST n ROWS ONLY

194、 如何顯示記錄的行數?
使用函式ROWNUMBER() OVER()
例如:
SELECT ROWNUMBER() OVER() AS rowid, firstnme, lastname FROM employee
這個函式和Oracle中的偽列rownum相同。
同時還是有區別,區別就是over的使用。在這裡面可以排序:例如:
SELECT rowid, firstnme, lastname
FROM ( SELECT ROWNUMBER() OVER( ORDER BY salary, comm ) AS rowid,
firstnme, lastname
FROM employee) AS temp
WHERE rowid > 30

195、 什麼是DB2的轉換表?
在DB2中表被插入、更新或者刪除的時候,DB2維護一個或者多個內部臨時表作為轉換表。可以使用NEW TABLE和OLD TABLE來指定轉換表。
例如:
SELECT empno, firstnme, lastname FROM employee WHERE workdept = 'A00';
DELETE FROM employee WHERE workdept = 'A00';
可以將這兩個語句寫成一個語句:
SELECT empno, firstnme, lastname FROM OLD TABLE (DELETE FROM employee WHERE workdept = 'A00');

196、 DB2資料遷移使用的檔案格式都是那些?
1) 定界ASCII (DEL)
2) 非定界ASCII (ASC)
3) PC版本的一致交換格式(PC/IXF)
4) Worksheet format (WSF)
5) Cursor

資料的匯出
197、 如何進行匯出資料?
使用export進行資料的匯出,類似於Oracle的LOAD。
EXPORT TO filename OF {IXF | DEL | WSF}
[LOBS TO lob-path [ {,lob-path} ... ] ][LOBFILE lob-file [ {,lob-file} ... ] ]
[XML TO xml-path [ {,xml-path} ... ] ][XMLFILE filename [ {,filename} ... ] ]
[MODIFIED BY {filetype-mod ...}][XMLSAVESCHEMA]
[METHOD N ( column-name [ {,column-name} ... ] )] [MESSAGES message-file]
{select-statement | XQUERY xquery-statement |
HIERARCHY {STARTING sub-table-name |
(sub-table-name [{, sub-table-name} ...])} [WHERE ...] }
filetype-mod:
NODOUBLEDEL、LOBSINFILE、CHARDELx、COLDELx、DLDELx、DECPLUSBLANK、
DECPTx、DATESISO、1、2、3、4、CODEPAGE=x、STRIPLZEROS 和 NOCHARDEL


198、 如何修改每一列之間的間隔符?
modified by coldel; 使用;為列之間的間隔符

199、 如何將字串使用’’來引用起來?
modified by chardel''

200、 如何改變日期格式?
timestampformat="yyyy.mm.dd hh:mm"

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/222350/viewspace-908088/,如需轉載,請註明出處,否則將追究法律責任。

相關文章