關於數據庫建表時字段數據類型


基礎:

char、varchar、text和nchar、nvarchar、ntext的區別

1、CHAR。CHAR存儲定長數據很方便,CHAR字段上的索引效率級高,比如定義char(10),那么不論你存儲的數據是否達到了10個字節,都要占去10個字節的空間,不足的自動用空格填充。

 

2、VARCHAR。存儲變長數據,但存儲效率沒有CHAR高。如果一個字段可能的值是不固定長度的,我們只知道它不可能超過10個字符,把它定義為 VARCHAR(10)是最合算的。VARCHAR類型的實際長度是它的值的實際長度+1。為什么“+1”呢?這一個字節用於保存實際使用了多大的長度。從空間上考慮,用varchar合適;從效率上考慮,用char合適,關鍵是根據實際情況找到權衡點。

 

3、TEXT。text存儲可變長度的非Unicode數據,最大長度為2^31-1(2,147,483,647)個字符。

 

4、NCHAR、NVARCHAR、NTEXT。這三種從名字上看比前面三種多了個“N”。它表示存儲的是Unicode數據類型的字符。我們知道字符中,英文字符只需要一個字節存儲就足夠了,但漢字眾多,需要兩個字節存儲,英文與漢字同時存在時容易造成混亂,Unicode字符集就是為了解決字符集這種不兼容的問題而產生的,它所有的字符都用兩個字節表示,即英文字符也是用兩個字節表示。nchar、nvarchar的長度是在1到4000之間。和char、varchar比較起來,nchar、nvarchar則最多存儲4000個字符,不論是英文還是漢字;而char、varchar最多能存儲8000個英文,4000個漢字。可以看出使用nchar、nvarchar

數據類型時不用擔心輸入的字符是英文還是漢字,較為方便,但在存儲英文時數量上有些損失。

 

進一步學習:

char、varchar、text、ntext、bigint、int、smallint、tinyint和bit的區別及數據庫的數據類型

 

Varchar 對每個英文(ASCII)字符都占用2個字節,對一個漢字也只占用兩個字節

char 對英文(ASCII)字符占用1個字節,對一個漢字占用2個字節Varchar 的類型不以空格填滿,比如varchar(100),但它的值只是"qian",則它的值就是"qian"而char 不一樣,比如char(100),它的值是"qian",而實際上它在數據庫中是"qian "(qian后共有96個空格,就是把它填滿為100個字節)。由於char是以固定長度的,所以它的速度會比varchar快得多!但程序處理起來要麻煩一點,要用trim之類的函數把兩邊的空格去掉!

ntext

可變長度 Unicode 數據的最大長度為 230 - 1 (1,073,741,823) 個字符。存儲大小是所輸入字符個數的兩倍(以字節為單位)。ntext 在 SQL-92 中的同義詞是 national text。

 

text

服務器代碼頁中的可變長度非 Unicode 數據的最大長度為 231-1 (2,147,483,647) 個字符。當服務器代碼頁使用雙字節字符時,存儲量仍是 2,147,483,647 字節。存儲大小可能小於 2,147,483,647 字節(取決於字符串)。

bigint:從-2^63(-9223372036854775808)到2^63-1(9223372036854775807)的整型數據,存儲大小為 8 個字節。

 

int:從-2^31(-2,147,483,648)到2^31-1(2,147,483,647)的整型數據,存儲大小為 4 個字節。

 

smallint:從-2^15(-32,768)到2^15-1(32,767)的整數數據,存儲大小為 2 個字節。

 

tinyint:從0到255的整數數據,存儲大小為 1 字節。

 

bit:1或0的整數數據,存儲大小為 1 字節。

Unicode 數據

 

在 Microsoft SQL Server 2000 中,傳統上非 Unicode 數據類型允許使用由特定字符集定義的字符。字符集是在安裝 SQL Server 時選擇的,不能更改。使用 Unicode 數據類型,列可存儲由 Unicode 標准定義的任何字符,包含由不同字符集定義的所有字符。Unicode 數據類型需要相當於非 Unicode 數據類型兩倍的存儲空間。

 

Unicode 數據使用 SQL Server 中的 nchar、varchar 和 ntext 數據類型進行存儲。對於存儲來源於多種字符集的字符的列,可采用這些數據類型。當列中各項所包含的 Unicode 字符數不同時(至多為 4000),使用 nvarchar 類型。當列中各項為同一固定長度時(至多為 4000 個 Unicode 字符),使用 nchar 類型。當列中任意項超過 4000 個 Unicode字符時,使用 ntext 類型。

 

說明:SQL Server 的 Unicode 數據類型是基於 SQL-92 標准中的國家字符數據類型。SQL-92 使用前綴字符 n 標識這些數據類型及其值。

 

數據類型:

數據類弄是數據的一種屬性,表示數據所表示信息的類型。任何一種計算機語言都定義了自己的數據類型。當然,不同的程序語言都具有不同的特點,所定義的數據類型的各類和名稱都或多或少有些不同。SQL Server 提供了 25 種數據類型:

·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

·Timestamp

·Uniqueidentifier

·Text

·Image

·Ntext

 

(1)二進制數據類型

二進制數據包括 Binary、Varbinary 和 Image.

Binary 數據類型既可以是固定長度的(Binary),也可以是變長度的。

Binary[(N)] 是 n 位固定的二進制數據。其中,n 的取值范圍是從 1 到 8000。其存儲窨的大小是 n + 4 個字節。

Varbinary[(N)] 是 n 位變長度的二進制數據。其中,n 的取值范圍是從 1 到 8000。其存儲窨的大小是 n + 4個字節,不是 n 個字節。

在 Image 數據類型中存儲的數據是以位字符串存儲的,不是由 SQL Server 解釋的,必須由應用程序來解釋。例如,應用程序可以使用 BMP、TIEF、GIF 和 JPEG 格式把數據存儲在 Image 數據類型中。

(2)字符數據類型

字符數據的類型包括 Char,Varchar 和 Text。

字符數據是由任何字母、符號和數字任意組合而成的數據。

Varchar 是變長字符數據,其長度不超過 8KB。Char 是定長字符數據,其長度最多為 8KB。超過 8KB 的ASCII 數據可以使用Text 數據類型存儲。例如:因為 Html 文檔全部都是 ASCII 字符,並且在一般情況下長度超過 8KB,所以這些文檔可以 Text 數據類型存儲在 SQL Server 中。

(3)Unicode 數據類型

Unicode 數據類型包括 Nchar,Nvarchar 和Ntext。

在 Microsoft SQL Server 中,傳統的非 Unicode 數據類型允許使用由特定字符集定義的字符。在 SQL Server 安裝過程中,允許選擇一種字符集。使用 Unicode 數據類型,列中可以存儲任何由Unicode 標准定義的字符。在 Unicode 標准中,包括了以各種字符集定義的全部字符。使用Unicode 數據類型,所占的空間是使用非 Unicode 數據類型所占用的空間大小的兩倍。

在 SQL Server 中,Unicode 數據以 Nchar、Nvarchar 和 Ntext 數據類型存儲。使用這種字符類型存儲的列可以存儲多個字符集中的字符。當列的長度變化時,應該使用 Nvarchar 字符類型,這時最多可以存儲 4000 個字符。當列的長度固定不變時,應該使用 Nchar 字符類型,同樣,這時最多可以存儲 4000 個字符。當使用 Ntext 數據類型時,該列可以存儲多於 4000 個字符。

(4)日期和時間數據類型

日期和時間數據類型包括 Datetime 和 Smalldatetime 兩種類型。

日期和時間數據類型由有效的日期和時間組成。例如,有效的日期和時間數據包括"4/01/98 12:15:00:00:00 PM"和"1:28:29:15:01 AM 8/17/98"。前一個數據類型是日期在前,時間在后一個數據類型是霎時間在前,日期在后。在 Microsoft SQL Server 中,日期和時間數據類型包括Datetime 和 Smalldatetime 兩種類型時,所存儲的日期范圍是從 1753 年 1 月 1 日開始,到 9999 年12 月 31 日結束(每一個值要求 8 個存儲字節)。使用 Smalldatetime 數據類型時,所存儲的日期范圍是 1900 年 1 月 1日 開始,到 2079 年 12 月 31 日結束(每一個值要求 4 個存儲字節)。

日期的格式可以設定。設置日期格式的命令如下:

Set DateFormat {format | @format _var|

其中,format | @format_var 是日期的順序。有效的參數包括 MDY、DMY、YMD、YDM、MYD 和 DYM。在默認情況下,日期格式為 MDY。

例如,當執行 Set DateFormat YMD 之后,日期的格式為年 月 日 形式;當執行 Set DateFormat DMY 之后,日期的格式為 日 月有年 形式

(5)數字數據類型

數字數據只包含數字。數字數據類型包括正數和負數、小數(浮點數)和整數 。

整數由正整數和負整數組成,例如 39、25、0-2 和 33967。在 Micrsoft SQL Server 中,整數存儲的數據類型是 Int,Smallint 和 Tinyint。Int 數據類型存儲數據的范圍大於 Smallint 數據類型存儲數據的范圍,而 Smallint 據類型存儲數據的范圍大於 Tinyint 數據類型存儲數據的范圍。使用 Int 數據狗昔存儲數據的范圍是從 -2 147 483 648 到 2 147 483 647(每一個值要求 4個字節存儲空間)。使用 Smallint 數據類型時,存儲數據的范圍從 -32 768 到 32 767(每一個值要求2個字節存儲空間)。使用 Tinyint 數據類型時,存儲數據的范圍是從0 到255(每一個值要求1個字節存儲空間)。

精確小婁數據在 SQL Server 中的數據類型是 Decimal 和 Numeric。這種數據所占的存儲空間根據該數據的位數后的位數來確定。

在SQL Server 中,近似小數數據的數據類型是 Float 和 Real。例如,三分之一這個分數記作。3333333,當使用近似數據類型時能准確表示。因此,從系統中檢索到的數據可能與存儲在該列中數據不完全一樣。

(6)貨幣數據表示正的或者負的貨幣數量 。在 Microsoft SQL Server 中,貨幣數據的數據類型是Money 和 Smallmoney。Money 數據類型要求 8 個存儲字節,Smallmoney 數據類型要求 4 個存儲字節。

(7)特殊數據類型

特殊數據類型包括前面沒有提過的數據類型。特殊的數據類型有3種,即 Timestamp、Bit 和 Uniqueidentifier。

Timestamp 用於表示SQL Server 活動的先后順序,以二進投影的格式表示。Timestamp 數據與插入數據或者日期和時間沒有關系。

Bit 由 1 或者 0 組成。當表示真或者假、ON 或者 OFF 時,使用 Bit 數據類型。例如,詢問是否是每一次訪問的客戶機請求可以存儲在這種數據類型的列中。

Uniqueidentifier 由 16 字節的十六進制數字組成,表示一個全局唯一的。當表的記錄行要求唯一時,GUID是非常有用。例如,在客戶標識號列使用這種數據類型可以區別不同的客戶。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM