db2使用命令

1:創建數據庫

CREATE DATABASE sam_1 AUTOMATIC STORAGE  YES  ON '/home/db2inst1/db2data' USING CODESET UTF-8 TERRITORY CN;

2:啓動數據庫

db2start

3:關閉數據庫

db2stop

4:連接數據庫

CONNECT TO sam_1 USER db2inst1 USING pwd;

5:斷開數據庫

DISCONNECT sam_1

6:查詢某個實例下的所有數據庫

list db directory

7:創建表空間

create tablespace <tablespace_name> pagesize <4k或8k或16k或32k>

8:查看數據庫中存在的表空間

 list tablespaces

9:查看錶空間詳細信息

list tablespaces show detail

10:查看錶空間對應的容器信息

list tablespace containers for <tablespace_id>

11:在表空間中創建表

create table <table_name>(字段1 類型 狀態,字段2類型 狀態。。。) in <tablespace_name>

12:DB2支持的數據類型

» Data Types

     » Numeric

         » Integer

             » SMALLINT    -32768~32767(精度爲5的兩字節的整型)

             » INTEGER     -2147483648~2147483647(精度爲10的4字節的整型)

» BIGINT     -9223372036854775808~9223372036854775807(精度爲19的8字節整型)

         » DECIMAL

» DECIMAL    (小數點的位置是由該DECIMAL數的精度和規模決定,規模是該數的小數部分個數,其不能爲負數和大於精度;最大精度爲31)

         » FloatingPoint

» REAL      -3.402E+38~-1.175E-37或10175E-37~3.402E+38(單精度浮點數是一個實數的32位近似值)

» DOUBLE/FLOAT   (雙精度浮點數是一個實數的64位近似值)

     » String

         » CharacterString

             » SingleByte

» CHAR   (字符串的長度是有序字節數;長度已分配好就固定了,其長度從1~254)

                 » VARCHAR   (32672字節長)

                 » LONGVARCHAR  (32700字節長)

                 » CLOB        2G字節長(2147483647字節長)

             » DoubleByte

                 » GRAPHIC

                 » VARGRAPHIC

                 » LONGVARGRAPHIC

                 » DBCLOB

         » BinaryString

             » BLOB

     » Datetime

         » DATE

         » TIME

         » TIMESTAMP

     » XML

13:在DB2數據庫中如何將整型轉換爲字符型

在DB2中可以用函數char()來轉換。

14:修改表結構,刪除表

增加一列

alter table <table_name> add <字段><類型> <狀態>

修改一列

alter table <table_name>alter COLUMN <字段>  set data type <類型> <狀態>

刪除一列

alter table <table_name>drop COLUMN <字段>

刪除表

drop table <table_name>

注:對錶進行任何操作都不被允許,提示SQLSTATE=57016 SQLCODE=-668 ,原因碼 "7"的錯誤:SQL0668N Operation not allowed for reason code "7" on table XXX.
解決方法爲:執行命令:reorg table XXX;即可。

15:向表中添加數據

根據字段插入數據

insert into <table_name>(字段1,字段2,字段3…) values(value1,value2,value3…)

插入整張表的數據

insert into <table_name> values(value1,value2,value3…)

16:查詢表中數據

查詢表中所有數據

select * from <table_name>

根據條件查詢

select * from <table_name>where 字段名=‘條件‘

            例:select * from test_table where name=’zhangsan’

        注:條件要是某一字段所包含的完整信息。

模糊查詢

select * from <table_name>where 字段名=‘%%’

            例:select * from test_table where name=’zhang’

        注:模糊查詢的條件,只要寫明某一字段所包含內容的部分信息。

查詢表中前10條記錄

select * from <table_name>fetch friest 10 rows only

查詢表中的某一字段

select 字段名 from <table_name>

對查詢結果排序(asc升序,desc降序)

select * from class order by<asc或desc>

整型,日期類型的字段可以制定範圍,用between

select * from <table_name>where born between ‘2009-05-04’and ‘2010-0608’

17:更新表中數據

update <table_name> set 字段名=‘新內容‘ where字段名=’條件‘

18:刪除表中數據

刪除表中所有數據

delete from <table_name>

根據條件刪除表中的信息

delete from <table_name> where 字段名=‘條件‘

19:顯示當前用戶所有表

list tables

20:顯示系統中所有表

list tables for system

21:查詢表的結構信息

describe table <table_name>

22:查看錶的詳細信息

select * from syscat.tables where tabname=’<table_name>’

23:查看錶的約束

select * from syscat.checkd wheretabname=<table_name>

24:查看錶的引用完整約束

select * from syscat.referenecs where tabname=<tb_name>

25:索引(用於在查詢數據時,加快查詢速度

創建唯一索引

create UNIQUE index <index_name> on <table_name>(字段)

         注:在某個字段上創建唯一索引,即插入時,該字段不能重複。

刪除索引

     drop index <index_name>

26:索引使用技巧與數據庫性能調優

查詢語句中,對於字符串型的字段,一定要用單引號括起來,對於整型不要用引號,對於日期型的字段,目前暫無定論,是否會對性能有影響.可進一步跟蹤。

儘量不要用in子句,那樣的話無法使用索引,導致查詢效率低下,可以改用UNION來連接多個查詢.這樣可以提高效率。

多個查詢條件,應該將過濾多的帶索引的字段的條件放在前面。

查詢條件中儘量用等號,不要用大於,小於等,那樣可能會用不上索引。

在全部查詢出所有結果時,要求帶上條件1=1,可以避免使用索引,提高效率。

27:創建視圖,刪除與使用

» 創建

     » create view <view_name> as select <字段> from <table_name>

» 使用

     » select * from <view_name>

» 刪除

     » drop view <view_name>

28:創建存儲過程,刪除與使用

» 創建存儲過程

     » CREATE PROCEDURE get_avage_age

    --在存儲過程中設置變量

    @class_namechar(10),

    @CheckDate[datetime]

AS

BEGIN

    --在存儲過程中添加方法

    Select age fromstudent where class=@class_name and born<@CheckDate

END

» 執行存儲過程

     » DECLARE@return_value int

 

EXEC @return_value=get_avage_age

@class_name =’gaosan’

@CheckDate = ‘2009-01-01’

 

SELECT  ‘Return Value’= @return_value

GO

» 刪除存儲過程

     » Drop procedure get_avage_age

29:創建觸發器,使用觸發器,修改觸發器,刪除觸發器

» CREATE TRIGGER trigger_1

         ON class

        AFTER DELETE

        AS

       BEGIN

             --在觸發器中創建方法

Delete from student where student.class not in (selectclass from class)

       END

 

» 注:此觸發器的功能是:當class表有刪除操作時,同步student表中的記錄,將不存在的班級的記錄全部刪除。

   » 使用觸發器

        » 先要去掉class表中的約束

            »alter table student drop CONSTRAINT FK_CLASS

        » 根據條件查詢student和class表。

            »select * from student where class=’chuyi’

            » select * from class where class=’chuyi’

        » 根據條件刪除class表中的信息。

            »delete from class where class=’chuyi’

        » 執行觸發器之後,再次根據條件查詢student和class表中的信息。

            »select * from student where class=’chuyi’

            »select * from class where class=’chuyi’

        » 現在可以看到student表中的記錄也被更新了。

        » 修改觸發器

            » ALTER TRIGGER trigger_1

                        ON  class

                   AS

                   BEGIN

Delect from student where student.class not in (selectclass from class)

END

        » 刪除觸發器

            » Drop trigger trigger_1

30:約束

» 約束是在修改一個表,或增加一個表記錄時,規定表的各個字段之間必須滿足的關係。

» ALTER TABLE student ADD CONSTRAINT age_negativeCHECK (student.age >= 0)

    » 約束是表結構的一部分內容,此例的約束是檢查年齡字段不要爲負值。

        » update student set age=-1   //將會報錯

    » 刪除一個約束:

        » alter table student dropconstraint age_negative

31:主鍵,外鍵

» 主鍵

» 表通常具有包含唯一標識表中每一行的值的一列或一組列。這樣的一列或多列稱爲表的主鍵 (PK),用於強制表的實體完整性。在創建或修改表時,您可以通過定義 PRIMARYKEY 約束來創建主鍵。

» 一個表只能有一個 PRIMARY KEY 約束,並且 PRIMARY KEY 約束中的列不能接受空值。由於 PRIMARY KEY 約束可保證數據的唯一性,因此經常對標識列定義這種約束。

» create table test_table(number int DEFAULT 23PRIMARY KEY),name varchar(25) not null DEFAILT ‘abc’

» 先將原來主鍵刪除,再建聯合主鍵

» alter table test_table ADD CONSTRAINTconstraint_1 PRIMARY KEY(number,name)  在兩個字段上建立聯合主鍵

» 外鍵

» 外鍵 (FK) 是用於建立和加強兩個表數據之間的鏈接的一列或多列。當創建或修改表時可通過定義FOREIGN KEY 約束來創建外鍵。

     » 在外鍵引用中,當一個表的列被引用作爲另一個表的主鍵值的列時,就在兩表之間創建了鏈接。這個列就成爲第二個表的外鍵。

» ALTER TABLE student ADD CONSTRAINT FK_classFOREIGN KEY(class) REFERENCES class(class)

  » 刪除外鍵

        »alter table student dropCONSTRAINT FK_CLASS

  » 建立外鍵時,要注意幾點:外鍵在外表中要是主鍵或索引. 兩個表的此字段名稱最好一樣.其他注意事項,項目參考相關數據庫的聯機幫助文檔.例如:外鍵在外表中重新生成,或重新組織後,或外鍵的索引被刪除後,引起的後果.需要仔細調試

32:事務

» 一個完整的事務就是其中的每個操作要麼都完成,要麼都不做.回到事務開始前的狀態。

   » begin TRANSACTION

    » ALTER INDEX idx_class on class REBUILD

    » select * from class

    » dbcommit TRANSACTION

» 需要注意的是,不同的數據庫,事務的開始,結束語法可能不一樣.例如:在informix中是:begin work和commit。

33:鎖

» 常見的情況是:分爲表鎖和行鎖

» 加鎖與解鎖

» 排它鎖(獨佔鎖)與共享鎖

» 鎖加在一個事務中讀取或修改的行,以防止各種事務併發使用資源。例,如果一個排它鎖被一個事務加在某一表的某一行上,在這個鎖被釋放前,其他事務都不可修改這一行。

» 在事務內加鎖。

»SET TRANSACTION ISOLATION LEVELREPEATABLE REAO

    » BEGIN TRANSACTION

» select * from student with (rowlock) where id=1waitfor delay ’00:00:10’

» COMMIT TRANSACTION

» select * from student with (rowlock)where id=1

» update student set name=’efgh’ whereid=1

» 運行結果顯示:兩次查詢的內容將會不同。而更新語句會等到事務結束時,纔會得到提交。

» update student set name=’efgh’where id=4:此條更新語句會立即得到執行,因爲被鎖的行不是id=4的記錄。

» 如果rowlock換成TABLOCK或HOLDLOCK,則第二條語句也會等待。TABLOCKX:是排它鎖。

34:導出數據

» export to <文件名.類型> of <文件類型> select * from <table_name>

35:導入數據

» import from <文件名.類型> of <文件類型> insert into <table_name>

36:執行sql腳本

db2 -tvf <路徑/文件名>

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章