天天看點

DB2指令與操作

1、資料操作語言(DML:select,delete,insert,update)

    <1>查詢資料庫目錄:

             db2 list db directory

    <2>查詢資料庫中表

           db2 list tables 目前使用者

           db2 list tables for all 所有表

         db2 list tables for schema schemaname 指定模式的表

    <3>顯示表結構

           db2 describe table tablename

    <4>插入資料

           db2 insert into tablename(字段名,字段名...) values (與字段名一一對應的值)

           db2 insert into tablename1(字段1,字段2,字段3...)

         select 字段1,字段2,字段3...from tablename2 + 查詢條件

    <5>更改表或視圖資料

           db2 update tablename/viewname set 字段名1='',字段2='',...+查詢條件

    <6>删除資料

             db2 delete from tablename where + 條件  

    <7>導入資料

          db2 "import from E:\name.txt of del insert into tableName"

          db2 "import from E:\name.ixf of ixf commitcount 5000 insert /create/replace into tableName"

          db2 "load client from D:\xx.txt of del insert/replace into tabName"(不需要寫日志,但插入前表必須存在;不能create table)

          db2 "load client from D:\xx.txt of del restart/terminate into tabName" 當導入資料出現問題被強行中斷時,此表會被加鎖,通過此指令可以解鎖

    <8>導出資料

             db2 "export to E:\name.txt of del select * from tableName"

             db2 "export to E:\name.txt of del MODIFIED BY NOCHARDEL select * from tableName"(導出不帶分号的資料)

         導出表結構和資料

             db2 "export to E:\name.ixf of ixf MODIFIED BY NOCHARDEL select * from tableName"

             db2 "export to E:\name.ixf of ixf MODIFIED BY NOCHARDEL select * from tableName fetch first (取數+UNM) rows only"(取固定條數)

         導出表結構

             db2look -d dbName -e -t tableName -o D:\xxx.sql(path) -i userName -w password

             db2look -d dbName -z tabSchema -e -c -i userName -w password -o + 路徑名

         導出存儲過程結構

             db2 "export to xxx.sql of del select text from syscat.procedures where procname='大寫存儲過程名'"

    <9>查詢表狀态

          db2 load query table + tableName

    <10>查詢目前表資料量(資料入庫時)

          db2 select count(1) from tab with ur

    <11>修改目前表名、模式名

          db2 rename table tab1 to tab2

2、資料定義語言(DDL:create,alter)

    <1>建立或删除執行個體

       db2icrt instance_name/db2idrop -f instance_name

       linux:db2icrt -u user_id instance_name

    <2>建立視圖、表、模式

     db2 create view/table/schema

     建立指定使用者的模式

     db2 create schema schName AUTHORIZATION userName

     db2 create schema AUTHORIZATION userName(沒有指定模式名時,模式名隐含為使用者名userName)

      定義含有預設值的表

     db2 create table tableName(column1 資料類型,column2 資料類型 default '預設值')

     基于已存在的表

     db2 create table clone_tablename like tablename

     db2 create table clone_tablename as (select * from tablename) definition only

     建立物化查詢表(MQT)

     create table new_table_name as (select * from table_name) data initially deferred refresh deferred;

     refresh table new_table_name;

     注意:物化表類似一個查詢,沒有真正形成表,類型顯示為Query。但它完全可以當表來用。

                  建立表并指定其索引表空間

                         db2 create table(.....) in userspace1 INDEX in userspace2

                         (userspace1是表所在空間,userspace2是表上索引所在空間)

    <3>建立視圖

           db2 create view viewname

                as select 字段名1,字段名2...from table where + 條件

         with check option 規定一種限制:通過視圖插入或更新的每一行都必須符合視圖的定義,如:

         create view emp_view2(empno,empname,deptno) as (select id,name,dept from employee where dept=10)with check option

         當此視圖用于更新資料或插入新值時,with check option 限制了dept列的輸入值

    <4>修改表(列,主鍵,唯一限制,檢查限制)

   1)添加新列 alter table tablename ADD COLUMN columnname 資料類型

   2)添加限制

   3)修改表中字段 alter table tablename alter columnname set data type 資料類型

   4) 添加主鍵 alter table tablename add primary key(c1,c2)

    <5>删除模式、表、視圖

      drop schema schName <CASCADE|RESTRICT>

      CASCADE(級聯)表示删除模式的同時删除該模式中所有的資料庫對象

      RESTRICT(限制)表示該模式下定義了資料庫對象時,限制删除;沒有任何資料庫對象時才能删除

   <6>重新組織表及其索引

      重組表資料  reorg table tableName index indexName(根據索引)

      重組表索引  reorg indexes all for table tableName

   <7>重新收集表及其索引統計資訊

      runstats on table tableName for indexes all(跑批前重新收集所用表資訊可以提高效率)

   <8>DB2自動增長主鍵方法

      IDENTITY列

        generated always as identity(start with 1,increment by 1)将一個字段指定為自增長型字段,放在資料類型後。

      SEQUENCE對象(序列)

3、資料控制語言(DCL:grant,revoke)

    将表的特權授予使用者

    grant select,update,delete on table tableName to user userName with grant option

    将包特權授予同組

    grant control on package packageName on group groupName with grant option

DB2指令集合:http://blog.csdn.net/guopengzhang/archive/2009/11/06/4774692.aspx

DB2指令不求人:http://lavasoft.blog.51cto.com/62575/30849

繼續閱讀