標籤:
以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的資料類型