說說SQL Server的資料類型

來源:互聯網
上載者:User

標籤:

以SQL Server為例,SQL Server的資料類型總共有33種,歸納為一下類別:

精確數字 Unicode字串
近似數字 二進位字串
日期和時間 其他資料類型
字串  

 

1、數字資料類型1.1 整數資料類型
資料類別 範圍 儲存
bigint -2的63次方到2的63次方-1 8位元組
int -2的31次方到2的31次方-1 4位元組
smallint -2的15次方到2的15次方-1 2位元組
tinyint 0~255 1位元組
int資料類型是主要的整數資料類型,而超過int的儲存範圍,將用bigint進行儲存。只有當參數運算式為bigint類型時,函數返回是bigint,SQL Server不會自動將其他整數資料類型提升為bigint。 1.2小數資料類型decimal 和 numeric 是帶固定精度和小數位元的數值資料類型。其文法是decimal【(p【,s】)】和numeric【(p【,s】)】(p:精度,該精度是1~38範圍內的數值,預設為18,s:小數位元,必須是0~p之間的值,預設小數位元為0,儲存大小基於精度而變化)。固定精度和小數位元。使用最大精度時,有效值從-10的38次方+1到10的38次方-1.numeric在功能上等價於decimal。 1.3貨幣類型貨幣類型有專門的money和smallmoney兩種,這兩種資料類型精確到他們所代表的貨幣單位的萬分之一。
資料類型 範圍 儲存大小
money -2的63次方到2的63次方-1 8位元組
smallmoney -2的31次方到2的31次方-1 4位元組
 1.4近似數字float和real這兩種資料類型用於表示浮點數值資料的大致資料類型,浮點數據為近似值。也因此,並非所有資料範圍內的所有值都可以精確地表示,所以稱為近似數字。
資料類型 範圍 儲存大小
float -1.79E+308~-2.23E-308以及2.23E-308~1.79E+308 取決於n的值,例如float(50)
real -3.40E+38~1.18E-38、0以及1.18E-38~3.40E+38 4位元組
 float類型文法是:float【(n)】。n為用於儲存float數值尾數的位元(以科學計數法表示)。因此可以確定精度和儲存大小。n應是在1~53之間的某個數,n的預設值為53.當n的取值範圍是1~24時,精度為7位元,儲存大小為4位元組。當n的取值範圍為25~53時,精度是15位元,儲存大小為8位元組。real的ISO同義字為float(24). 1.5bit類型        bit類型的取值範圍為1、0或NULL的整數資料類型。bit列的儲存依據儲存大小不同而不同。
        字串值TRUE和FALSE可以轉換為以下bit值,TRUE轉換為1,FALSE轉換為0. 2、字元資料類型 字元資料類型共計6種,又分為字串和Unicode字串兩類:    字串包括char、varchar、text;
    Unicode字串包含nchar、nvarchar、ntext。
 N“string”表示string是個Unicode字串。Unicode常量被解釋為Unicode資料,並且不適用字碼頁進行計算。Unicode常量確實有定序,主要用來控制比較和區分大小。Unicode資料中的每個字元都使用兩個位元組來儲存,而一般字元資料則使用一個位元組來儲存。 char為定長字串,而varchar是變長字串。但是不管是定長還是變長字串,都應該有一個容量。char【(n)】固定長度,長度為n個位元組,n的取值範圍是1~8000.而相比於varchar【(n|max)】可變長度,n的取值範圍是1~8000.max指示最大儲存大小是231-1位元組。儲存大小是輸入資料的實際長度加2個位元組,所以輸入資料的長度可以是0個字元。 注意:1.如果網站支援多語言,請考慮使用Unicode nchar或者nvarchar資料類型,以最大消除字元轉換問題。如果使用char或varchar,建議a、如果列資料項目的大小一致,則使用char;b、如果列資料項目的大小差異相當大,則使用varchar,c、如果列資料項目大小相差很大,而且大小可能超過8000位元組,則使用varchar(max)。2.當定序字碼頁使用雙位元組字元時,儲存大小任然為n個位元組,那麼儲存的字元就要除以2,例如varchar(10)只能放5個字元。3.如果儲存的是漢字,最好使用Unicode字串類型。4.如果資料量比較大,不建議使用text或者nchar類型,而是使用varchar(max)或者是nvarchar(max).5.如果列資料項目的大小總有差異,就使用varchar,因為定長就是在如果不足規定的位元時就使用空格填充。 3、日期和時間資料類型
資料類型 格式 範圍 精確度 儲存大小
time hh:mm:ss[.nnnnnnn] 00:00:00.0000000~23:59:59.9999999 100納秒 3~5位元組
date YYYY-MM-DD 0001-01-01~9999-12-31 1天 3位元組
smalldatetime YYYY-MM-DD hh:mm:ss 1900-01-01~2079-06-06 1分鐘 4位元組
datetime YYYY-MM-DD hh:mm:ss[.nnn] 1754-01-01~9999-12-31 0.00333秒 8位元組
datetime2 YYYY-MM-DD hh:mm:ss[.nnnnnnn] 0001-01-01 00:00:00.000000~9999-12-31
23:59:59.9999999
100納秒 6~8位元組
datetimeoffset YYYY-MM-DD hh:mm:ss[.nnnnnnn]
[+|-]hh:mm
0001-01-01 00:00:00.000000~9999-12-31
23:59:59.9999999
100納秒 8~19位元組
 4、位元據類型 位元據類型提供了將檔案存入資料庫的可能。在日常編程中,可以將檔案轉換為二進位然後再存入資料庫中,片、檔案等等。但是這不是推薦用法。最好使用varbinary(max)來代替image資料類型。 binary【(n)】:固定長度的位元據類型,n的取值範圍是1~8000,儲存大小為n個位元組。;varbinary【(n|max)】:長度為n位元組的可變長度位元據,n的取值範圍是1~8000。max的最大儲存大小為231-1位元組。儲存大小為:所輸入資料的實際長度+2個位元組。所以輸入資料的長度可以是0位元組。如果沒有在資料定義或者變數聲明語句中指定n,則預設長度為1.如果沒有使用CAST函數指定n,則預設長度是30.  5、其他資料類型 cursor:這是變數或預存程序OUTPUT參數的一種資料類型,這些參數包含對遊標的引用。使用cursor資料類型建立的變數可以為空白。對於CREATE TABLE語句中的列,不能使用cursor資料類型。 timestamp:用於表示SQL Server活動的先後順序,以二進位格式表示。資料與插入資料或者日期和時間沒有關係。                     timestamp就是行版本。不過不建議在SQL Server中使用timestamp文法。 uniqueidentifier:由16位元組的十六進位數字組成,表示全域唯一的。當表的記錄行要求唯一時,它是非常有用的。很多時候用此類型來作為資料主鍵,因為它基本上是不會重複的。 hierarchyid:是一種長度可變的系統資料類型。可使用hierarchyid展示層次結構中的位置。 sql_variant:用於支援SQL Server支援的各種資料類型(不包括text、ntext、image、timestamp和sql_variant等)。可以在列、參數、變數和使用者定義函數的傳回值中。使得這些資料庫物件能夠支援其他資料類型的值。   

說說SQL Server的資料類型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.