qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問 http://qaseven.github.io/

          跟屌絲大哥學(xué)DB2-第四課 數(shù)據(jù)類型 ,表 ,視圖,索引,模式,約束(一)

          (DiaoSiID)在我們建立表前 ,我們先要了解DB2中都有哪些數(shù)據(jù)類型,以便我們這些屌絲以后快速創(chuàng)建表。

          DB2 提供了一套豐富且靈活的數(shù)據(jù)型。DB2 附 INTEGER、CHAR DATE 等基本數(shù)據(jù)型。它提供了創(chuàng)建用的數(shù)據(jù)型(UDT)的工具,使用夠創(chuàng)復(fù)雜的非傳統(tǒng)的數(shù)據(jù)型,從而適應(yīng)當(dāng)今復(fù)雜環(huán)境。在定的情況下,用哪數(shù)據(jù)型取決于列中存儲(chǔ)的信息的型和范

          內(nèi)置的數(shù)據(jù)型分:數(shù)字、字符串、日期時(shí)間和 XML。

          的數(shù)據(jù)型分單值類型、結(jié)構(gòu)化型和引用型。

          數(shù)字?jǐn)?shù)據(jù)



          如上所示,數(shù)字?jǐn)?shù)據(jù)型又可分型在可以存儲(chǔ)的數(shù)字?jǐn)?shù)據(jù)的范和精度方面有所差異。


          • 整數(shù)SMALLINT、INTEGER BIGINT 用來(lái)存儲(chǔ)整數(shù)。例如,庫(kù)存數(shù)量可以定義為 INTEGER。SMALLINT 可以在 2 個(gè)字節(jié)中存儲(chǔ) -32,768 32,767 的整數(shù)。INTEGER 可以在 4 個(gè)字節(jié)中存儲(chǔ) -2,147,483,648 2,147,483,647 的整數(shù)。BIGINT 可以在 8 個(gè)字節(jié)中存儲(chǔ) -9,223,372,036,854,775,808 9,223,372,036,854,775,807 的整數(shù)。
          • 小數(shù)DECIMAL 用來(lái)存儲(chǔ)有小數(shù)部分的數(shù)字。要定義這個(gè)數(shù)據(jù)型,需要指定精度p,表示的位數(shù))和小數(shù)位s,表示小數(shù)點(diǎn)右的位數(shù))。定義為 DECIMAL(10,2) 的列可以保存的金最高可 99999999.99。數(shù)據(jù)庫(kù)中需要的存儲(chǔ)于精度,按照公式 p/2 +1 計(jì)算。所以 DECIMAL(10,2) 需要 10/2 + 1 (即 6)字節(jié)。
          • 浮點(diǎn)數(shù)REAL DOUBLE 用來(lái)存儲(chǔ)數(shù)字的近似。例如,非常小或非常大的科學(xué)計(jì)可以定義為 REAL。REAL 可以定義為具有 1 24 位之長(zhǎng)度,需要 4 節(jié)的存儲(chǔ)。DOUBLE 可以定義為具有 25 53 位之長(zhǎng)度,需要 8 節(jié)的存儲(chǔ)。FLOAT 可以視為 REAL DOUBLE 的同義詞

          字符串?dāng)?shù)據(jù)




          如上所示,DB2 儲(chǔ)字符數(shù)據(jù)或字符串提供了幾數(shù)據(jù)型。根據(jù)要存儲(chǔ)的字符串的大小和字符串中的數(shù)據(jù)來(lái)選擇數(shù)據(jù)型。

          下面的數(shù)據(jù)型用來(lái)存儲(chǔ)單節(jié)字符串:

          • CHAR CHARACTER 用來(lái)存儲(chǔ)最多 254 節(jié)的固定長(zhǎng)度的字符串。例如,制造商可以零件分配一個(gè) 8 字符長(zhǎng)度的標(biāo)識(shí)符,因此標(biāo)識(shí)符在數(shù)據(jù)庫(kù)中存儲(chǔ)為 CHAR(8) 型的列。
          • VARCHAR 用來(lái)存儲(chǔ)變長(zhǎng)度的字符串。例如,制造商用不同長(zhǎng)度的標(biāo)識(shí)符表示大量零件,因此標(biāo)識(shí)符存儲(chǔ)為 VARCHAR(100) 型的列。VARCHAR 列的最大長(zhǎng) 32,672 節(jié)。在數(shù)據(jù)庫(kù)中,VARCHAR 數(shù)據(jù)只占用恰好所需的空。

          下面的數(shù)據(jù)型用來(lái)存儲(chǔ)雙字節(jié)字符串:

          • GRAPHIC 用來(lái)存儲(chǔ)固定長(zhǎng)度的雙字節(jié)字符串。GRAPHIC 列的最大長(zhǎng)度是 127 個(gè)字符。
          VARGRAPHIC 用來(lái)存儲(chǔ)變長(zhǎng)度的雙字節(jié)字符串。VARGRAPHIC 列的最大長(zhǎng)度是 16,336 個(gè)字符。

           


          DB2 提供了存儲(chǔ)非常長(zhǎng)的字符串?dāng)?shù)據(jù)的數(shù)據(jù)型。所有長(zhǎng)字符串?dāng)?shù)據(jù)型都具有相似的特征。首先,在數(shù)據(jù)庫(kù)中此數(shù)據(jù)在物理上并沒有與行數(shù)據(jù)存儲(chǔ)在一起,意味著需要進(jìn)理才能訪問此數(shù)據(jù)。長(zhǎng)數(shù)據(jù)型的長(zhǎng)度最大可以定義為 2GB。但是,需要的空只是實(shí)際使用的空。長(zhǎng)數(shù)據(jù)型有:

          • LONG VARCHAR
          • CLOB(字符大對(duì)象)
          • LONG VARGRAPHIC
          • DBCLOB(雙字節(jié)字符大對(duì)象)
          • BLOB(二進(jìn)制大對(duì)象) 

          日期時(shí)間數(shù)據(jù)

          DB2 提供了三儲(chǔ)日期和時(shí)間的數(shù)據(jù)型:

          • DATE
          • TIME
          • TIMESTAMP 

          些數(shù)據(jù)型的在數(shù)據(jù)庫(kù)中存儲(chǔ)為內(nèi)部格式;但是應(yīng)用程序可以將其作字符串操。在些數(shù)據(jù)型之一時(shí),它被表示字符串。在更新些數(shù)據(jù)時(shí),將在引號(hào)中。

          DB2 提供了操日期時(shí)間值的內(nèi)置函數(shù)。例如,可以使用 DAYOFWEEK DAYNAME 函數(shù)判斷一個(gè)日期是星期幾。使用 DAYS 函數(shù)計(jì)算兩個(gè)日期之相差多少天。DB2 提供了特殊寄存器以根據(jù)時(shí)間-日期時(shí)鐘生成當(dāng)前日期、時(shí)間時(shí)間戳。例如,CURRENT DATE 返回一個(gè)表示系統(tǒng)上的當(dāng)前日期的字符串。

          日期和時(shí)間值的格式取決于在創(chuàng)建數(shù)據(jù)庫(kù)時(shí)指定的數(shù)據(jù)庫(kù)國(guó)家編碼。有幾可用的格式:ISO、USA、EUR 和 JIS。例如,如果數(shù)據(jù)庫(kù)使用 USA 格式,那日期的格式是 mm/dd/yyyy。在創(chuàng)應(yīng)用程序時(shí),可以使用 BIND 命令的 DATETIME 選項(xiàng)格式。

          TIMESTAMP 數(shù)據(jù)型只有一格式。字符串表示是 yyyy-mm-dd-hh.mm.ss.nnnnnn


          XML 數(shù)據(jù)

          DB2 提供了 XML 數(shù)據(jù)型來(lái)存儲(chǔ)格式良好的 XML 文檔。

          XML 列中的儲(chǔ)為與字符串?dāng)?shù)據(jù)型不同的內(nèi)部表示。要在 XML 數(shù)據(jù)型的列中存儲(chǔ) XML 數(shù)據(jù),需要使用 XMLPARSE 函數(shù)對(duì)數(shù)據(jù)進(jìn)轉(zhuǎn)換??梢允褂?span lang="EN-US"> XMLSERIALIZE 函數(shù)將 XML 數(shù)據(jù)型的值轉(zhuǎn)換為 XML 文檔的串行化字符串。DB2 提供了多其他的內(nèi)置函數(shù)來(lái)操 XML 數(shù)據(jù)型。

          的數(shù)據(jù)

          DB2 適合自己應(yīng)用程序的數(shù)據(jù)型。有三的數(shù)據(jù)型:

          • 單值類基于內(nèi)置型定新的數(shù)據(jù)型。個(gè)新型具有內(nèi)置型相同的功能,但可以使用它確保只比相同型的。例如,可以基于 DECIMAL(10,2) 一個(gè)加元型(CANDOL)和一個(gè)美元型(USADOL)。種類型都基于同一內(nèi)置型,但除非應(yīng)轉(zhuǎn)換函數(shù),否無(wú)法比。下面是創(chuàng) CANDOL USADOL UDT CREATE TYPE 語(yǔ)句:

          CREATE DISTINCT TYPE CANDOL AS DECIMAL(10,2) WITH COMPARISONS

          CREATE DISTINCT TYPE USADOL AS DECIMAL(10,2) WITH COMPARISONS

           

          DB2 動(dòng)生成函數(shù)來(lái)執(zhí)行基本型和單值類型之強(qiáng)轉(zhuǎn)換,動(dòng)生成用于比較單值類實(shí)例的比操作符。下列語(yǔ)示了如何創(chuàng) CANDOL 型列的表,以及如何使用 CANDAL 強(qiáng)轉(zhuǎn)換函數(shù)向表中插入數(shù)據(jù):

          CREATE TABLE ITEMs (ITEMID CHAR(5), PRICE CANDOL )

          INSERT INTO ITEMs VALUES('ABC11',CANDOL(30.50) ) 

                   

          XML 數(shù)據(jù)

          DB2 提供了 XML 數(shù)據(jù)型來(lái)存儲(chǔ)格式良好的 XML 文檔。

          XML 列中的儲(chǔ)為與字符串?dāng)?shù)據(jù)型不同的內(nèi)部表示。要在 XML 數(shù)據(jù)型的列中存儲(chǔ) XML 數(shù)據(jù),需要使用 XMLPARSE 函數(shù)對(duì)數(shù)據(jù)進(jìn)轉(zhuǎn)換??梢允褂?span lang="EN-US"> XMLSERIALIZE 函數(shù)將 XML 數(shù)據(jù)型的值轉(zhuǎn)換為 XML 文檔的串行化字符串。DB2 提供了多其他的內(nèi)置函數(shù)來(lái)操 XML 數(shù)據(jù)型。

          的數(shù)據(jù)

          DB2 適合自己應(yīng)用程序的數(shù)據(jù)型。有三的數(shù)據(jù)型:

          • 單值類基于內(nèi)置型定新的數(shù)據(jù)型。個(gè)新型具有內(nèi)置型相同的功能,但可以使用它確保只比相同型的。例如,可以基于 DECIMAL(10,2) 一個(gè)加元型(CANDOL)和一個(gè)美元型(USADOL)。種類型都基于同一內(nèi)置型,但除非應(yīng)轉(zhuǎn)換函數(shù),否無(wú)法比。下面是創(chuàng) CANDOL USADOL UDT CREATE TYPE 語(yǔ)句:

          CREATE DISTINCT TYPE CANDOL AS DECIMAL(10,2) WITH COMPARISONS

          CREATE DISTINCT TYPE USADOL AS DECIMAL(10,2) WITH COMPARISONS

           

          DB2 動(dòng)生成函數(shù)來(lái)執(zhí)行基本型和單值類型之強(qiáng)轉(zhuǎn)換動(dòng)生成用于比較單值類實(shí)例的比操作符。下列語(yǔ)示了如何創(chuàng) CANDOL 型列的表,以及如何使用 CANDAL 強(qiáng)轉(zhuǎn)換函數(shù)向表中插入數(shù)據(jù):

          CREATE TABLE ITEMs (ITEMID CHAR(5), PRICE CANDOL )

          INSERT INTO ITEMs VALUES('ABC11',CANDOL(30.50) ) 

                   

          • 結(jié)構(gòu)化型:創(chuàng)建由幾個(gè)內(nèi)置型列成的型。然后,可以在創(chuàng)建表時(shí)使用個(gè)結(jié)構(gòu)化型。例如,可以創(chuàng)建一 ADDRESS 結(jié)構(gòu)化型,它包含表示街道號(hào)、街道名、城市之的數(shù)據(jù)。然后在定其他表(如工表或者供應(yīng)商表)時(shí)使用這種類型,因為這些表也需要同的數(shù)據(jù)。另外,結(jié)構(gòu)化可以在結(jié)構(gòu)中有子型。就允將屬于某一結(jié)構(gòu)的對(duì)象存儲(chǔ)在數(shù)據(jù)庫(kù)中。
          • 的引用型:在使用結(jié)構(gòu)化時(shí),可以使用引用型定義對(duì)另一個(gè)表中行的引用。些引用看起來(lái)與參照束相似,然而,它強(qiáng)制表關(guān)系。表中的引用允用不同的方法指定查詢。

          結(jié)構(gòu)化和引用型是高級(jí);里的信息只作為對(duì)這型的介。

           

          OK  屌絲大哥精心為你準(zhǔn)備的DB2數(shù)據(jù)類型 怎么樣 還滿意吧 用戶定義類型 確實(shí)很給力 不過(guò)用到時(shí)候較少
          下來(lái)屌絲大哥為大家?guī)?lái)表的逆襲
          首先 屌絲大哥帶領(lǐng)眾屌絲連接DB2
          首先 啟動(dòng)DB2 
          db2start
          db2 connect to DiaoSi user diaosi using diaosipassword
          有些屌絲可能不明白怎么連接 哥來(lái)解釋  db2 connect to 數(shù)據(jù)庫(kù)名稱 user 用戶名稱 using 密碼

          所有數(shù)據(jù)都存儲(chǔ)在數(shù)據(jù)庫(kù)的表中。 由不同數(shù)據(jù)型的一列或多列成。數(shù)據(jù)存儲(chǔ)在行(或稱為記錄)中。

          表是使用 CREATE TABLE SQL 語(yǔ)句定的。DB2 提供了一個(gè)用來(lái)創(chuàng)建表的 GUI 工具 DB2 Control Center,個(gè)工具可以根據(jù)指定的信息創(chuàng)建一個(gè)表。它生成 CREATE TABLE SQL 語(yǔ)句,以后可以在腳本或應(yīng)用程序中使用個(gè)語(yǔ)句。

          個(gè)數(shù)據(jù)庫(kù)都有一表,稱統(tǒng)編目表(system catalog tables,它保存關(guān)于數(shù)據(jù)庫(kù)中所有對(duì)象的信息。DB2 基系統(tǒng)編目表提供了視圖。數(shù)據(jù)庫(kù)中定個(gè)表在視圖 SYSCAT.TABLES 中都有相應(yīng)的一行。數(shù)據(jù)庫(kù)個(gè)表的一列在 SYSCAT.COLUMNS 中都有相應(yīng)的一行。可以用 SELECT 語(yǔ)句像看數(shù)據(jù)庫(kù)中的任何其他表一樣查視圖;但是,不能使用 INSERTUPDATE DELETE 語(yǔ)句。在執(zhí)行數(shù)據(jù)定義語(yǔ)言(DDL語(yǔ)句(比如 CREATE)和其他操作(比如 RUNSTATS時(shí)些表會(huì)自動(dòng)更新。

          創(chuàng)建表


           

          使用 CREATE TABLE SQL 語(yǔ)句在數(shù)據(jù)庫(kù)中定一個(gè)表。下面的語(yǔ)創(chuàng)建一個(gè)簡(jiǎn)單的名 BOOKS 的表,表包含三列:

          CREATE TABLE Diaosi ( DiaoSiID INTEGER,

                                 Diaosi  NAME VARCHAR(100),

                               muer CHAR(10) )

           

          可以使用 CREATE TABLE SQL 語(yǔ)創(chuàng)建與數(shù)據(jù)庫(kù)中另一個(gè)表或視圖相似的表:

          CREATE TABLE MYmuer LIKE BalckMUer



          個(gè)語(yǔ)創(chuàng)建一個(gè)與原始表或視圖具有相同列的表。新表的列具有與原始表或視圖中的列相同的名稱、數(shù)據(jù)型和可空屬性。可以指定復(fù)制其他屬性(比如列默認(rèn)值標(biāo)識(shí)屬性)的子句。

          選項(xiàng)可用于 CREATE TABLE 語(yǔ)句(將在下面介新概念時(shí)討論)。CREATE TABLE SQL 語(yǔ)句的詳細(xì)信息可以在 SQL Reference 中找到(請(qǐng) 參考)。

          創(chuàng)建了表之后,有幾方法可以在其中填充數(shù)據(jù)。INSERT 語(yǔ)句允向表中插入一行或幾行數(shù)據(jù)。DB2 提供了一些實(shí)用程序插入來(lái)自文件的大量數(shù)據(jù)。IMPORT 實(shí)用程序使用 INSERT 語(yǔ)句插入行。它是向數(shù)據(jù)庫(kù)中加少量數(shù)據(jù)而設(shè)計(jì)的。LOAD 實(shí)用程序用于加大量數(shù)據(jù),它將行直接插入到數(shù)據(jù)庫(kù)中的數(shù)據(jù)頁(yè),因此比 IMPORT 實(shí)用程序要快得多。

          在數(shù)據(jù)庫(kù)中存儲(chǔ)

          表存儲(chǔ)在數(shù)據(jù)庫(kù)表空 中。表空間擁有分配的物理空。在創(chuàng)建表之前必創(chuàng)建表空。

          創(chuàng)建表時(shí),可以 DB2 把表放在默認(rèn)的表空內(nèi),也可以指定表應(yīng)該駐留在哪個(gè)表空內(nèi)。下面的 CREATE TABLE 語(yǔ)句將  DiaoSiS 
          表放在 
           DiaoSiINFO 表空內(nèi):

          CREATE TABLE DiaoSiS(

                                          DiaoSiID INTEGER,

                                 Diaosi  NAME VARCHAR(100),

                               muer CHAR(10) )

                       IN DiaoSiINFO



          修改表

          可以使用 ALTER TABLE SQL 語(yǔ)句更改表的某些特征。例如,可以添加或除:

          • 一個(gè)或多個(gè)惟一性或參照
          • 一個(gè)或多個(gè)檢查約

          下面的語(yǔ)句向   DiaoSi 表中添加一個(gè)列   DiaoSiTYPE  

          ALTER TABLE DiaoSi ADD DiaoSiTYPE CHAR(1)

           

            


          posted on 2012-12-06 23:12 順其自然EVO 閱讀(365) 評(píng)論(0)  編輯  收藏 所屬分類: DB2

          <2012年12月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 元氏县| 花莲县| 鄂尔多斯市| 五家渠市| 朝阳市| 包头市| 米脂县| 钟山县| 建宁县| 瑞金市| 长治市| 荣昌县| 博客| 万源市| 六枝特区| 和平区| 宜丰县| 嘉善县| 曲沃县| 柏乡县| 大关县| 鄢陵县| 明溪县| 紫云| 香格里拉县| 石泉县| 应城市| 广河县| 涞水县| 黄冈市| 昌邑市| 山阴县| 韩城市| 永川市| 西盟| 开化县| 新野县| 西充县| 南投市| 临沧市| 麻阳|