關(guān)于數(shù)據(jù)庫建表時(shí)字段數(shù)據(jù)類型_第1頁
關(guān)于數(shù)據(jù)庫建表時(shí)字段數(shù)據(jù)類型_第2頁
關(guān)于數(shù)據(jù)庫建表時(shí)字段數(shù)據(jù)類型_第3頁
關(guān)于數(shù)據(jù)庫建表時(shí)字段數(shù)據(jù)類型_第4頁
關(guān)于數(shù)據(jù)庫建表時(shí)字段數(shù)據(jù)類型_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、char 、 varchar 、 text 、 ntext 、bigint 、 int 、 smallint 、tinyint 和 bit 的區(qū)別及數(shù)據(jù)庫的數(shù)據(jù)類型基礎(chǔ):char 、varchar 、text 和 nchar 、nvarchar 、ntext 的區(qū)別1、CHAR CHAF存儲(chǔ)定長數(shù)據(jù)很方便,CHAR字段上的索引效率級高, 比如定義 char(10) ,那么不論你存儲(chǔ)的數(shù)據(jù)是否達(dá)到了 10 個(gè)字節(jié), 都要占去 10個(gè)字節(jié)的空間 ,不足的自動(dòng)用空格填充。2、VARCHAR存儲(chǔ)變長數(shù)據(jù),但存儲(chǔ)效率沒有 CHAF高。如果一個(gè)字 段可能的值是不固定長度的,我們只知道它不可能超過 10 個(gè)

2、字符, 把它定義為VARCHAR(1(是最合算的。VARCHA類型的實(shí)際長度是它 的值的實(shí)際長度 +1。為什么“+1”呢?這一個(gè)字節(jié)用于保存實(shí)際使用 了多大的長度。從空間上考慮,用 varchar 合適;從效率上考慮,用 char 合適,關(guān)鍵是根據(jù)實(shí)際情況找到權(quán)衡點(diǎn)。3、TEXT。 text 存儲(chǔ)可變長度的非 Unicode 數(shù)據(jù),最大長度為2八31-1(2,147,483,647) 個(gè)字符。4、NCHA、NVARCHARNTEXT這三種從名字上看比前面三種多了個(gè)“ N'。它表示存儲(chǔ)的是Uni code數(shù)據(jù)類型的字符。我們知道字符中, 英文字符只需要一個(gè)字節(jié)存儲(chǔ)就足夠了, 但漢字眾多,

3、 需要兩個(gè)字節(jié)存儲(chǔ),英文與漢字同時(shí)存在時(shí)容易造成混亂, Unicode 字符集就是為 了解決字符集這種不兼容的問題而產(chǎn)生的, 它所有的字符都用兩個(gè)字 節(jié)表示,即英文字符也是用兩個(gè)字節(jié)表示。 nchar 、nvarchar 的長度 是在 1 到 4000之間。和 char 、varchar 比較起來, nchar 、nvarchar 則最多存儲(chǔ) 4000 個(gè)字符,不論是英文還是漢字;而char 、varchar最多能存儲(chǔ) 8000個(gè)英文,4000個(gè)漢字??梢钥闯鍪褂?nchar 、nvarchar 數(shù)據(jù)類型時(shí)不用擔(dān)心輸入的字符是英文還是漢字, 較為方便, 但在存 儲(chǔ)英文時(shí)數(shù)量上有些損失。進(jìn)一步學(xué)

4、習(xí):char 、 varchar 、 text 、 ntext 、bigint 、 int 、 smallint 、tinyint 和 bit 的區(qū)別及數(shù)據(jù)庫的數(shù)據(jù)類型Varchar 對每個(gè)英文 (ASCII) 字符都占用 2 個(gè)字節(jié),對一個(gè)漢字也只 占用兩個(gè)字節(jié)char 對英文 (ASCII) 字符占用 1 個(gè)字節(jié),對一個(gè)漢字占用 2 個(gè)字節(jié) Varchar 的類型不以空格填滿,比如 varchar(100) ,但它的值只是 "qian", 則它的值就是 "qian" 而 char 不一樣,比如 char(100), 它的 值是"qian&q

5、uot;,而實(shí)際上它在數(shù)據(jù)庫中是"qian "(qian 后共有96個(gè)空 格,就是把它填滿為 100 個(gè)字節(jié) )。由于 char 是以固定長度的,所以 它的速度會(huì)比 varchar 快得多 ! 但程序處理起來要麻煩一點(diǎn),要用 trim 之類的函數(shù)把兩邊的空格去掉 !ntext可變長度 Unicode 數(shù)據(jù)的最大長度為 230 - 1 (1,073,741,823) 個(gè)字符。存儲(chǔ)大小是所輸入字符個(gè)數(shù)的兩倍(以字節(jié)為單位)。ntext在SQL-92 中的同義詞是 national text 。text服務(wù)器代碼頁中的可變長度非 Unicode 數(shù)據(jù)的最大長度為 231-1 (2

6、,147,483,647) 個(gè)字符。當(dāng)服務(wù)器代碼頁使用雙字節(jié)字符時(shí), 存儲(chǔ) 量仍是 2,147,483,647 字節(jié)。存儲(chǔ)大小可能小于 2,147,483,647 字 節(jié)(取決于字符串)。bigi nt:從-2八63(-9223372036854775808)到2八63-1(9223372036854775807)的整型數(shù)據(jù),存儲(chǔ)大小為 8 個(gè)字節(jié)。int :從-2八31(-2,147,483,648)到 2八31-1(2,147,483,647) 的整型數(shù)據(jù),存儲(chǔ)大小為 4 個(gè)字節(jié)。smallint :從-2八15(-32,768)至U 2八15-1(32,767)的整數(shù)數(shù)據(jù),存儲(chǔ)大小為 2

7、 個(gè)字節(jié)。tinyint :從 0 到 255 的整數(shù)數(shù)據(jù),存儲(chǔ)大小為 1 字節(jié)。bit :1 或 0 的整數(shù)數(shù)據(jù),存儲(chǔ)大小為 1 字節(jié)Unicode 數(shù)據(jù)在 Microsoft SQL Server 2000 中,傳統(tǒng)上非 Unicode 數(shù)據(jù)類型允 許使用由特定字符集定義的字符。字符集是在安裝 SQL Server 時(shí)選 擇的,不能更改。 使用 Unicode 數(shù)據(jù)類型,列可存儲(chǔ)由 Unicode 標(biāo) 準(zhǔn)定義的任何字符, 包含由不同字符集定義的所有字符。 Unicode 數(shù) 據(jù)類型需要相當(dāng)于非 Unicode 數(shù)據(jù)類型兩倍的存儲(chǔ)空間。Unicode 數(shù)據(jù)使用 SQL Server 中的 n

8、char 、varchar 和 ntext 數(shù) 據(jù)類型進(jìn)行存儲(chǔ)。 對于存儲(chǔ)來源于多種字符集的字符的列, 可采用這 些數(shù)據(jù)類型。當(dāng)列中各項(xiàng)所包含的 Unicode 字符數(shù)不同時(shí)(至多為 4000),使用 nvarchar 類型。當(dāng)列中各項(xiàng)為同一固定長度時(shí)(至多 為 4000 個(gè) Unicode 字符),使用 nchar 類型。當(dāng)列中任意項(xiàng)超過 4000 個(gè) Unicode 字符時(shí),使用 ntext 類型。說明: SQLServer 的 Unicode 數(shù)據(jù)類型是基于 SQL-92 標(biāo)準(zhǔn)中的國 家字符數(shù)據(jù)類型。 SQL-92 使用前綴字符 n 標(biāo)識這些數(shù)據(jù)類型及其值。數(shù)據(jù)類型:數(shù)據(jù)類弄是數(shù)據(jù)的一種

9、屬性, 表示數(shù)據(jù)所表示信息的類型。 任何一種 計(jì)算機(jī)語言都定義了自己的數(shù)據(jù)類型。 當(dāng)然,不同的程序語言都具有 不同的特點(diǎn),所定義的數(shù)據(jù)類型的各類和名稱都或多或少有些不同。SQL Server 提供了 25 種數(shù)據(jù)類型:Binary (N) Varbinary (N) Char (N) Varchar(N) Nchar(N) Nvarchar(N) Datetime Smalldatetime Decimal(p,s) Numeric(p,s) Float(N) Real Int Smallint Tinyint Money Smallmoney Bit Cursor Sysname Times

10、tampUniqueidentifier Text Image Ntext(1) 二進(jìn)制數(shù)據(jù)類型 二進(jìn)制數(shù)據(jù)包括 Binary 、Varbinary 和 Image.Binary 數(shù)據(jù)類型既可以是固定長度的 (Binary), 也可以是變長度的。Binary(N)是n位固定的二進(jìn)制數(shù)據(jù)。其中,n的取值范圍是從1到 8000。其存儲(chǔ)窨的大小是 n + 4 個(gè)字節(jié)。Varbinary(N)是n位變長度的二進(jìn)制數(shù)據(jù)。其中,n的取值范圍是從 1 到 8000 。其存儲(chǔ)窨的大小是 n + 4 個(gè)字節(jié),不是 n 個(gè)字節(jié)。 在 Image 數(shù)據(jù)類型中存儲(chǔ)的數(shù)據(jù)是以位字符串存儲(chǔ)的,不是由 SQL Server

11、 解釋的,必須由應(yīng)用程序來解釋。例如,應(yīng)用程序可以使用 BMP、TIEF、GIF 和 JPEG 格式把數(shù)據(jù)存儲(chǔ)在 Image 數(shù)據(jù)類型中。(2) 字符數(shù)據(jù)類型 字符數(shù)據(jù)的類型包括 Char , Varchar 和 Text 。 字符數(shù)據(jù)是由任何字母、符號和數(shù)字任意組合而成的數(shù)據(jù)。Varchar 是變長字符數(shù)據(jù),其長度不超過 8KB。 Char 是定長字符數(shù) 據(jù),其長度最多為8KB。超過8KB的ASCII數(shù)據(jù)可以使用Text數(shù) 據(jù)類型存儲(chǔ)。 例如: 因?yàn)?Html 文檔全部都是 ASCII 字符, 并且在一 般情況下長度超過8KB,所以這些文檔可以Text數(shù)據(jù)類型存儲(chǔ)在SQL Server 中。

12、(3) Unicode 數(shù)據(jù)類型Unicode 數(shù)據(jù)類型包括 Nchar,Nvarchar 和 Ntext 。在 Microsoft SQL Server 中,傳統(tǒng)的非 Unicode 數(shù)據(jù)類型允許使 用由特定字符集定義的字符。在 SQL Server 安裝過程中,允許選擇 一種字符集。 使用 Unicode 數(shù)據(jù)類型,列中可以存儲(chǔ)任何由 Unicode 標(biāo)準(zhǔn)定義的字符。在 Unicode 標(biāo)準(zhǔn)中,包括了以各種字符集定義的 全部字符。使用 Unicode 數(shù)據(jù)類型,所占的空間是使用非 Unicode 數(shù) 據(jù)類型所占用的空間大小的兩倍。在 SQL Server 中, Unicode 數(shù)據(jù)以 Nc

13、har 、Nvarchar 和 Ntext 數(shù) 據(jù)類型存儲(chǔ)。使用這種字符類型存儲(chǔ)的列可以存儲(chǔ)多個(gè)字符集中的字 符。當(dāng)列的長度變化時(shí),應(yīng)該使用 Nvarchar 字符類型,這時(shí)最多可 以存儲(chǔ) 4000 個(gè)字符。當(dāng)列的長度固定不變時(shí),應(yīng)該使用 Nchar 字 符類型,同樣,這時(shí)最多可以存儲(chǔ) 4000 個(gè)字符。當(dāng)使用 Ntext 數(shù) 據(jù)類型時(shí),該列可以存儲(chǔ)多于 4000 個(gè)字符。(4) 日期和時(shí)間數(shù)據(jù)類型日期和時(shí)間數(shù)據(jù)類型包括 Datetime 和 Smalldatetime 兩種類型。 日期和時(shí)間數(shù)據(jù)類型由有效的日期和時(shí)間組成。 例如,有效的日期和 時(shí)間數(shù)據(jù)包括 "4/01/98 12:

14、15:00:00:00 PM" 和"1:28:29:15:01 AM 8/17/98" 。前一個(gè)數(shù)據(jù)類型是日期在前, 時(shí)間在后一個(gè)數(shù)據(jù)類型是霎 時(shí)間在前,日期在后。在 Microsoft SQLServer 中,日期和時(shí)間數(shù) 據(jù)類型包括 Datetime 和 Smalldatetime 兩種類型時(shí),所存儲(chǔ)的日 期范圍是從 1753 年 1 月 1 日開始,到 9999 年 12 月 31 日結(jié)束 ( 每一個(gè)值要求 8 個(gè)存儲(chǔ)字節(jié) ) 。使用 Smalldatetime 數(shù)據(jù)類型時(shí), 所存儲(chǔ)的日期范圍是 1900 年 1 月 1 日 開始,到 2079 年 12 月

15、 31 日結(jié)束(每一個(gè)值要求 4 個(gè)存儲(chǔ)字節(jié) )。 日期的格式可以設(shè)定。設(shè)置日期格式的命令如下:Set DateFormat format | format _var|其中,format | format_var是日期的順序。有效的參數(shù)包括 MDY DMY YMD YDM MYD和DYM 在默認(rèn)情況下,日期格式為 MDY 例如,當(dāng)執(zhí)行Set DateFormat YMD之后,日期的格式為年 月曰形 式;當(dāng)執(zhí)行Set DateFormat DMY之后,日期的格式為 日月有年 形 式(5)數(shù)字?jǐn)?shù)據(jù)類型數(shù)字?jǐn)?shù)據(jù)只包含數(shù)字。 數(shù)字?jǐn)?shù)據(jù)類型包括正數(shù)和負(fù)數(shù)、 小數(shù)(浮點(diǎn)數(shù)) 和整數(shù)。整數(shù)由正整數(shù)和負(fù)整數(shù)組

16、成,例如 39 、25、 0-2 和 33967 。在 Micrsoft SQLServer 中,整數(shù)存儲(chǔ)的數(shù)據(jù)類型是 Int , Smallint 和 Tinyint。I nt數(shù)據(jù)類型存儲(chǔ)數(shù)據(jù)的范圍大于 Smallint 數(shù)據(jù)類型存 儲(chǔ)數(shù)據(jù)的范圍,而 Smallint 據(jù)類型存儲(chǔ)數(shù)據(jù)的范圍大于 Tinyint 數(shù)據(jù)類型存儲(chǔ)數(shù)據(jù)的范圍。使用 Int 數(shù)據(jù)狗昔存儲(chǔ)數(shù)據(jù)的范圍是從 -2 147 483 648 到 2 147 483 647 (每一個(gè)值要求 4 個(gè)字節(jié)存儲(chǔ)空 間)。使用 Smallint 數(shù)據(jù)類型時(shí), 存儲(chǔ)數(shù)據(jù)的范圍從 -32 768 到 32 767(每一個(gè)值要求 2 個(gè)字節(jié)存儲(chǔ)

17、空間)。使用 Tinyint 數(shù)據(jù)類型時(shí), 存儲(chǔ)數(shù)據(jù)的范圍是從 0 到 255(每一個(gè)值要求 1 個(gè)字節(jié)存儲(chǔ)空間)。 精確小婁數(shù)據(jù)在 SQL Server 中的數(shù)據(jù)類型是 Decimal 和 Numeric 。 這種數(shù)據(jù)所占的存儲(chǔ)空間根據(jù)該數(shù)據(jù)的位數(shù)后的位數(shù)來確定。在 SQL Server 中,近似小數(shù)數(shù)據(jù)的數(shù)據(jù)類型是 Float 和 Real 。例 如,三分之一這個(gè)分?jǐn)?shù)記作。 3333333,當(dāng)使用近似數(shù)據(jù)類型時(shí)能準(zhǔn) 確表示。因此,從系統(tǒng)中檢索到的數(shù)據(jù)可能與存儲(chǔ)在該列中數(shù)據(jù)不完 全一樣。( 6)貨幣數(shù)據(jù)表示正的或者負(fù)的貨幣數(shù)量。在 Microsoft SQLServer中,貨幣數(shù)據(jù)的數(shù)據(jù)類型是 Money和Smallmoney。Money數(shù)據(jù)類型要求 8 個(gè)存儲(chǔ)字節(jié), Smallmoney 數(shù)據(jù)類型要求 4 個(gè)存儲(chǔ)字 節(jié)。(7)特殊數(shù)據(jù)類型 特殊數(shù)據(jù)類型包括前面沒有提過的數(shù)據(jù)類型。 特殊的數(shù)據(jù)類型有 3 種, 即 Timestamp

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論