第一部份 Overview of DB2
t
- connect to
user using - get connection state
- connect reset or terminate
- list applications [show detail] (顯示目前所有的連線)
- force application (num[,num…]) (中斷num號的連線)
- force application all (中斷所有連線)
- list tables [for {user | all | system | schema}] [show detail]
- describe {選取陳述式 | {table | indexes for table name} [show detail] }
第二部份 SQL指令
1.字串函數
- lcase(string) 轉換成小寫
- ucase(string) 轉換成大寫
- cast(string as datatype) 轉換成不同的資料型態
- char(input) 將input轉換成字串
- length(string) 回傳字串長度
- substr(string,m[,n]) 截取串列中字串
- concat(str1, str2) 字串的連結
- ltrim(string) 左側空白字元截斷
- rtrim(string) 右側空白字元截斷
- replace(string, ‘old’, ’new’) 以new取代字串中所有old
- coalesce(expr1,expr2) 若expr1為null時,則以expr2處理
2.數值函數
- round(expr,p) 以四捨五入的方式表示十進制並包含精度,若p>0則表示小數點的精準度(小數下一位),若p<0則表示整數位的精準度(整數位本身),round(45.923,1) => 45.9,round(45.923,-1) => 50
- trunc(expr,p) 以捨去的方式表示十進制並包含精度
- mod(m,n) 求餘數。m為分母,n為分子
- abs(expr) 取絕對值
- sqrt(expr) 求平方根 sqrt(4) => 2
3.時間函數
- year 傳回日期的年份
- month 傳回日期的月份
- monthname 傳回日期的月份全名
- week 傳回日期在一年中第幾週
- dayname 傳回星期幾
- dayofweek 傳回星期幾(數字)
- day 傳回日期在該月份中的第幾天
- days 傳回日期在一年中的第幾天
- dayofyear 傳回日期在一年中的第幾天(數字)
- quarter 傳回日期在一年中的第幾季
- date 傳回日期
- time 傳回時間
- timestamp 傳回時間擢記(年月日時分秒微秒)
4.trigger 的建立
t Trigger的事件
(1).insert
(2).update
(3).delete
t Trigger的種類
(1).事件前(before trigger)
a.可以檢查輸入資料是否正確。
b.可以設定及修改輸入直欄的資料。
c.可以中止命令的執行。
(2).事件後(after trigger)
a.可以對其他表格作insert、update及delete等動作。
b.可以撰寫一個以上的程序。
trigger的建立-before tirgger範例
create trigger test_trigger_1
no cascade
before insert on test
referencing new as newrow
for each row mode db2sql
set newrow.seq=(select table_seq from seq where table_name=‘test’)
trigger的建立-after tirgger範例
create test_trigger_2
after insert on test
referencing new as newrow
for each row mode db2sql
begin atomic
update seq
set seq.table_seq=newrow.seq
where seq.table_name=‘test’;
end
5.view 的建立
view 是一個由表格所衍生出來的虛擬表格。
Ex1.
create view emp_high_pay as
select empno, firstnme, lastname, workdept, hiredate, bonus
from employee where bonus>500
Ex2.
create view low_bonus_dept (dept, min_bonus) as
select workdept,min(bonus)
from employee group by workdept
第三部份 資料的搬運
1.EXPORT Utility
tEXPORT Utility 語法
EXPORT TO file-name OF file-type {DEL|ASC|IXF|WSF}
[METHOD N (column names…)]
MESSAGES log-file-name
SQL-COMMEND
•
- File-name:匯出之檔案名稱,附檔名同file-type。
- File-type:匯出之檔案格式,有DEL、ASC、IXF及WSF四種匯出之檔案格式。
- METHOD N (column names…):指定欄位名稱;這個選項只對IXF與WSF格式有效。
- Log-file-name:log之檔案名稱。
- SQL-COMMENT:一般的查詢指令。
2.IMPORT Utility
tIMPORT Utility 語法
IMPORT FROM file-name OF file-type
{DEL|ASC|IXF|WSF}
[[METHOD L(start end…)]|[METHOD N(column name…)]| [METHOD P(column num…)]]
[COMMITCOUNT num] [RESTARRTCOUNT num]
MESSAGES log-file-name
{INSERT|INSERT_UPDATE|REPLACE|CREATE|REPLACE_CREATE} INTO table-name
t
- File-name:匯入之檔案名稱,附檔名同file-type。
- File-type:匯入之檔案格式,有DEL、ASC、IXF及WSF四種匯入之檔案格式。
- METHOD L(start end…):指定每個欄位的起始與結束位置。只適用於ASC格式的檔案。
- METHOD N (column names…):指定欄位名稱;這個選項只適用IXF格式。
- METHOD P(column num…):指定欄位的號碼;只適用於IXF與DEL格式。
- COMMITCOUNT num:指定commitcount數 。
- RESTARRTCOUNT num:指定要從資料檔的第幾筆資料列開始匯入資料。
- INSERT 新增模式:匯入的方式以INSERT INTO子句來新增資料至要匯入的表格中,若匯入的資料已存在表格中時,那匯入公用程式就會忽略這些資料。
- INSERT_UPDATE 新增-修改模式:與INSERT模式不同之處在於如果已有存在的資料時,那匯入公用程式就會以UPDATE來更新PK以外的其欄位的DATA。
- REPLACE 覆寫模式:與INSERT或INSERT_UPDATE完全不相同,匯入公用程式會先將表格中所有橫列先用DELETE刪除後再INSERT INTO新增資料(所有現存的資料列會被刪除)。
- CREATE 建立模式:當使用IXF檔案格式時,*.IXF檔案會記錄著表格的結構與資料,當匯入的表格中若不存在時,可以使用IXF格式的檔案來建立表格的結構並且將DATA一同新增到表格中。
- REPLACE_CREATE 覆寫-建立模式 :若表格不存在時,其方式和CREATE模式相同,若表格存在時那就會使用REPLACE的方式將表格中資料先DELETE刪除再INSERT INTO新增資料表格中。
3.LOAD Utility
LOAD Utility—範例
LOAD FROM "d:/db2 share/data/employee.ixf"
OF IXF
MESSAGES "d:/db2 share/log/employee.txt"
insert INTO emptmp
set constraints for emptmp immediate checked
LOAD Utility-- LOAD與IMPORT異同
tLOAD
1.表格必須存在。
2.將資料準備成資料頁讀入。
3.不會記錄到交易日誌。
4.表格上若有constraint,在load後需要用set integrity指令將不符合規則的資料列剔除。
5.若表格有trigger,在load當中,是不會觸發的。
tIMPORT
1.若輸入為ixf格式,表格可不存在。
2.一筆一筆insert到表格中。
3.會記錄到交易日誌。
4.表格上若有constraint,在執行import時,每一筆都會經過檢查。
5.若表格有trigger,import時會觸發trigger。
沒有留言:
張貼留言