SQL SERVER7.0以上版本的字段類型說明

 


以下爲SQL SERVER7.0以上版本的字段類型說明。SQL SERVER6.5的字段類型說明請參考SQL SERVER提供的說明。
bit:0或1的整型數字
int:從-2^31(-2,147,483,648)到2^31(2,147,483,647)的整型數字
smallint:從-2^15(-32,768)到2^15(32,767)的整型數字
tinyint:從0到255的整型數字

decimal:從-10^38到10^38-1的定精度與有效位數的數字
numeric:decimal的同義詞

money:從-2^63(-922,337,203,685,477.5808)到2^63-1(922,337,203,685,477.5807)的貨幣數據,最小貨幣單位千分之十
smallmoney:從-214,748.3648到214,748.3647的貨幣數據,最小貨幣單位千分之十

float:從-1.79E+308到1.79E+308可變精度的數字
real:從-3.04E+38到3.04E+38可變精度的數字

datetime:從1753年1月1日到9999年12日31的日期和時間數據,最小時間單位爲百分之三秒或3.33毫秒
smalldatetime:從1900年1月1日到2079年6月6日的日期和時間數據,最小時間單位爲分鐘

timestamp:時間戳,一個數據庫寬度的唯一數字
uniqueidentifier:全球唯一標識符GUID

char:定長非Unicode的字符型數據,最大長度爲8000
varchar:變長非Unicode的字符型數據,最大長度爲8000
text:變長非Unicode的字符型數據,最大長度爲2^31-1(2G)

nchar:定長Unicode的字符型數據,最大長度爲8000
nvarchar:變長Unicode的字符型數據,最大長度爲8000
ntext:變長Unicode的字符型數據,最大長度爲2^31-1(2G)

binary:定長二進制數據,最大長度爲8000
varbinary:變長二進制數據,最大長度爲8000
image:變長二進制數據,最大長度爲2^31-1(2G)

 

整數數據類型      INT 或INTEGER  SMALLINT  TINYINT  BIGINT
浮點數據類型      REAL  FLOAT  DECIMAL  NUMERIC
二進制數據類型     BINARY  VARBINARY
邏輯數據類型      BIT
字符數據類型      CHAR  NCHAR  VARCHAR  NVARCHAR
文本和圖形數據類型   TEXT  NTEXT  IMAGE
日期和時間數據類型   DATETIME  SMALLDATETIME
貨幣數據類型      MONEY  SMALLMONEY
特定數據類型      TIMESTAMP  UNIQUEIDENTIFIER
用戶自定義數據類型   SYSNAME
新數據類型       SQL_VARIANT  TABLE
其中BIGINT SQL_VARIANT 和TABLE 是SQL Server 2000 中新增加的3 種數據類型下面分類講述各種數據類型
一、 整數數據類型
整數數據類型是最常用的數據類型之一
1、 INT INTEGER
INT 或INTEGER 數據類型存儲從-231 -2 147 483 648 到231-1 2 147 483 647 之間的所有正負整數每個INT 類型的數據按4 個字節存儲其中1 位表示整數值的正負號其它31 位表示整數值的長度和大小
2 、SMALLINT
SMALLINT 數據類型存儲從-215 -32 768 到215-1 32 767 之間的所有正負整數每個MALLINT 類型的數據佔用2 個字節的存儲空間其中1 位表示整數值的正負號其它15 位表示整數值的長度和大小
3 、TINYINT
TINYINT數據類型存儲從0 到255 之間的所有正整數每個TINYINT類型的數據佔用1 個字節的存儲空間
4、 BIGINT
BIGINT 數據類型存儲從-2^63 -9 223 372 036 854 775 807 到2^63-1 9 223 372 036 854 775 807 之間的所有正負整數每個BIGINT 類型的數據佔用8個字節的存儲空間
二、浮點數據類型
浮點數據類型用於存儲十進制小數浮點數值的數據在SQL Server 中採用上舍入Round up 或稱爲只入不捨方式進行存儲所謂上舍入是指當且僅當要舍入的數是一個非零數時對其保留數字部分的最低有效位上的數值加1 並進行必要的進位若一個數是上舍入數其絕對值不會減少如對3.14159265358979 分別進行2 位和12位舍入結果爲3.15 和3.141592653590
1、 REAL 數據類型
REAL數據類型可精確到第7 位小數其範圍爲從-3.40E -38 到3.40E +38 每個REAL類型的數據佔用4 個字節的存儲空間
2、 FLOAT
FLOAT數據類型可精確到第15 位小數其範圍爲從-1.79E -308 到1.79E +308 每個FLOAT 類型的數據佔用8 個字節的存儲空間
FLOAT數據類型可寫爲FLOAT[ n ]的形式n 指定FLOAT 數據的精度n 爲1到15 之間的整數值當n 取1 到7 時實際上是定義了一個REAL 類型的數據系統用4 個字節存儲它當n 取8 到15 時系統認爲其是FLOAT 類型用8 個字節存儲它
3、 DECIMAL
DECIMAL數據類型可以提供小數所需要的實際存儲空間但也有一定的限制您可以用2 到17 個字節來存儲從-1038-1 到1038-1 之間的數值可將其寫爲DECIMAL[ p [s] ]的形式p 和s 確定了精確的比例和數位其中p 表示可供存儲的值的總位數不包括小數點缺省值爲18 s 表示小數點後的位數缺省值爲0 例如decimal 15 5表示共有15 位數其中整數10 位小數5 位表4-3 列出了各精確度所需的字節數之間的關係表 DECIMAL數據類型的精度與字節數
精度                字節數
1 ~ 2                  2
3 ~ 4                  3
5 ~ 7                  4
8 ~ 9                  5
10 ~ 12                 6
13 ~ 14                 7
15 ~ 16                 8
17 ~ 19                 9
20 ~ 21                 10
22 ~ 24                 11
25 ~ 26                 12
27 ~ 28                 13
29 ~ 31                 14
32 ~ 33                 15
34 ~ 36                 16
37 ~ 38                 17
4、 NUMERIC
NUMERIC數據類型與DECIMAL數據類型完全相同
∀?SQL Server 爲了和前端開發工具配合其所支持的數據精度默認最大爲28 位但可以通過使用命令來執行sqlservr.exe 程序以啓動SQL Server 可改變默認精度命令語法如下SQLSERVR[/D master_device_path][/P precisim_level]

例4-4 用最大數據精度38 啓動SQL Server
sqlservr /d c:/ Mssql2000/data/master.dat /p38
/*在使用了/P 參數後如果其後沒有指定具體的精度數值則默認爲38 位/*
三、二進制數據類型
1、 BINARY
BINARY 數據類型用於存儲二進制數據其定義形式爲BINARY n n 表示數據的長度取值爲1 到8000 在使用時必須指定BINARY 類型數據的大小至少應爲1 個字節BINARY 類型數據佔用n+4 個字節的存儲空間在輸入數據時必須在數據前加上字符0X 作爲二進制標識如要輸入abc 則應輸入0xabc 若輸入的數據過長將會截掉其超出部分若輸入的數據位數爲奇數則會在起始符號0X 後添加一個0
如上述的0xabc 會被系統自動變爲0x0abc
2、 VARBINARY
VARBINARY數據類型的定義形式爲VARBINARY n 它與BINARY 類型相似n 的取值也爲1 到8000 若輸入的數據過長將會截掉其超出部分不同的是VARBINARY數據類型具有變動長度的特性因爲VARBINARY數據類型的存儲長度爲實際數值長度+4個字節當BINARY數據類型允許NULL 值時將被視爲VARBINARY數據類型一般情況下由於BINARY 數據類型長度固定因此它比VARBINARY 類型的處理速度快
四、邏輯數據類型
BIT   BIT數據類型佔用1 個字節的存儲空間其值爲0 或1 如果輸入0 或1 以外的值將被視爲1 BIT 類型不能定義爲NULL 值所謂NULL 值是指空值或無意義的值
五、 字符數據類型
字符數據類型是使用最多的數據類型它可以用來存儲各種字母數字符號特殊符號一般情況下使用字符類型數據時須在其前後加上單引號’或雙引號”
1、 CHAR
CHAR 數據類型的定義形式爲CHAR[ n ] 以CHAR 類型存儲的每個字符和符號佔一個字節的存儲空間n 表示所有字符所佔的存儲空間n 的取值爲1 到8000 即可容納8000 個ANSI 字符若不指定n 值則系統默認值爲1 若輸入數據的字符數小於n則系統自動在其後添加空格來填滿設定好的空間若輸入的數據過長將會截掉其超出部分
2、 NCHAR
NCHAR數據類型的定義形式爲NCHAR[ n ] 它與CHAR 類型相似不同的是NCHAR數據類型n 的取值爲1 到4000 因爲NCHAR 類型採用UNICODE 標準字符集CharacterSet UNICODE 標準規定每個字符佔用兩個字節的存儲空間所以它比非UNICODE 標準的數據類型多佔用一倍的存儲空間使用UNICODE 標準的好處是因其使用兩個字節做存儲單位其一個存儲單位的容納量就大大增加了可以將全世界的語言文字都囊括在內在一個數據列中就可以同時出現中文英文法文德文等而不會出現編碼衝突
3 、VARCHAR
VARCHAR數據類型的定義形式爲VARCHAR [ n ] 它與CHAR 類型相似n 的取值也爲1 到8000 若輸入的數據過長將會截掉其超出部分不同的是VARCHAR數據類型具有變動長度的特性因爲VARCHAR數據類型的存儲長度爲實際數值長度若輸入數據的字符數小於n 則系統不會在其後添加空格來填滿設定好的空間
一般情況下由於CHAR 數據類型長度固定因此它比VARCHAR 類型的處理速度

4、 NVARCHAR
NVARCHAR數據類型的定義形式爲NVARCHAR[ n ] 它與VARCHAR 類型相似 不同的是NVARCHAR數據類型採用UNICODE 標準字符集Character Set n 的取值爲1 到4000
六、 文本和圖形數據類型
這類數據類型用於存儲大量的字符或二進制數據
1、 TEXT
TEXT數據類型用於存儲大量文本數據其容量理論上爲1 到231-1 2 147 483 647個字節在實際應用時需要視硬盤的存儲空間而定,SQL Server 2000 以前的版本中數據庫中一個TEXT 對象存儲的實際上是一個指針,它指向一個個以8KB 8192 個字節爲單位的數據頁Data Page 這些數據頁是動態增加並被邏輯鏈接起來的在SQL Server 2000 中則將TEXT 和IMAGE 類型的數據直接存放到表的數據行中而不是存放到不同的數據頁中這就減少了用於存儲TEXT 和IMA- GE 類型的空間並相應減少了磁盤處理這類數據的I/O 數量
2、 NTEXT
NTEXT數據類型與TEXT 類型相似不同的是NTEXT 類型採用UNICODE 標準字符集Character Set 因此其理論容量爲230-1 1 073 741 823 個字節
3、 IMAGE
IMAGE數據類型用於存儲大量的二進制數據Binary Data 其理論容量爲231-1 2 147 483 647 個字節其存儲數據的模式與TEXT 數據類型相同它通常用來存儲圖形等OLE Object Linking and Embedding 對象連接和嵌入對象在輸入數據時同BINARY數據類型一樣必須在數據前加上字符0X 作爲二進制標識
七、 日期和時間數據類型
1、 DATETIME
DATETIME 數據類型用於存儲日期和時間的結合體它可以存儲從公元1753 年1 月1 日零時起到公元9999 年12 月31 日23 時59 分59 秒之間的所有日期和時間其精確度可達三百分之一秒即3.33 毫秒DATETIME 數據類型所佔用的存儲空間爲8 個字節其中前4 個字節用於存儲1900 年1 月1 日以前或以後的天數數值分正負正數表示在此日期之後的日期負數表示在此日期之前的日期後4 個字節用於存儲從此日零時起所指定的時間經過的毫秒數如果在輸入數據時省略了時間部分則系統將12:00:00:000AM
作爲時間缺省值如果省略了日期部分則系統將1900 年1 月1 日作爲日期缺省值
2、 SMALLDATETIME
SMALLDATETIME 數據類型與DATETIME 數據類型相似但其日期時間範圍較小,爲從1900 年1 月1 日到2079 年6 月6 日精度較低只能精確到分鐘其分鐘個位上爲根據秒數四捨五入的值即以30 秒爲界四捨五入如DATETIME 時間爲14:38:30.283時SMALLDATETIME 認爲是14:39:00 SMALLDATETIME 數據類型使用4 個字節存儲數據其中前2 個字節存儲從基礎日期1900 年1 月1 日以來的天數後兩個字節存儲
此日零時起所指定的時間經過的分鐘數下面介紹日期和時間的輸入格式
日期輸入格式
日期的輸入格式很多大致可分爲三類
??英文+數字格式
此類格式中月份可用英文全名或縮寫且不區分大小寫年和月日之間可不用逗號年份可爲4 位或2 位當其爲兩位時若值小於50 則視爲20xx 年若大於或等於50 則視爲19xx 年若日部分省略則視爲當月的1 號以下格式均爲正確的日期格式
June 21 2000 Oct 1 1999 January 2000 2000 February
2000 May 1 2000 1 Sep 99 June July 00
??數字+分隔符格式
允許把斜槓/ 連接符- 和小數點. 作爲用數字表示的年月日之間的分隔符如
YMD 2000/6/22 2000-6-22 2000.6.22
MDY 3/5/2000 3-5-2000 3.5.2000
DMY 31/12/1999 31-12-1999 31.12.2000
??純數字格式
純數字格式是以連續的4 位6 位或8 位數字來表示日期如果輸入的是6 位或8 位數字系統將按年月日來識別即YMD 格式並且月和日都是用兩位數字來表示,如果輸入的數字是4 位數系統認爲這4 位數代表年份其月份和日缺省爲此年度的1 月
1 日如
20000601 2000 年6 月1 日991212 1999 年12 月12 日1998 1998 年
時間輸入格式
在輸入時間時必須按小時分鐘秒毫秒的順序來輸入在其間用冒號隔開但可將毫秒部分用小數點. 分隔其後第一位數字代表十分之一秒第二位數字代表百分之一秒第三位數字代表千分之一秒當使用12 小時制時用AM am 和PM pm 分別指定時間是午前或午後若不指定系統默認爲AM AM 與PM 均不區分大小寫如
3:5:7.2pm 下午3 時5 分7 秒200 毫秒
10:23:5.123Am 上午10 時23 分5 秒123 毫秒
可以使用SET DATEFORMAT 命令來設定系統默認的日期-時間格式
八、 貨幣數據類型
貨幣數據類型用於存儲貨幣值在使用貨幣數據類型時應在數據前加上貨幣符號,系統才能辨識其爲哪國的貨幣如果不加貨幣符號則默認爲各貨幣符號如圖4-2所示
1、 MONEY
MONEY 數據類型的數據是一個有4 位小數的DECIMAL 值其取值從–263 -922 337 203 685 477.5808 到263 – 1 +922 337 203 685 477.5807 數據精度爲萬分之一貨幣單位MONEY 數據類型使用8 個字節存儲
2、 SMALLMONEY
SMALLMONEY 數據類型類似於MONEY 類型但其存儲的貨幣值範圍比MONEY數據類型小其取值從-214,748.3648 到+214,748.3647 存儲空間爲4 個字節
九、 特定數據類型
SQL Server 中包含了一些用於數據存儲的特殊數據類型
1、 TIMESTAMP
TIMESTAMP數據類型提供數據庫範圍內的惟一值此類型相當於BINARY 8 或圖4-2 貨幣符號一覽
VARBINARY 8 但當它所定義的列在更新或插入數據行時此列的值會被自動更新,一個計數值將自動地添加到此TIMESTAMP數據列中每個數據庫表中只能有一個TIMESTAMP,數據列如果建立一個名爲TIMESTAMP 的列則該列的類型將被自動設爲TIMESTAMP數據類型
2、 UNIQUEIDENTIFIER
UNIQUEIDENTIFIER 數據類型存儲一個16 位的二進制數字此數字稱爲GUID Globally Unique Identifier 即全球惟一鑑別號此數字由SQL Server 的NEWID函數產生的全球惟一的編碼,在全球各地的計算機經由此函數產生的數字不會相同
十、 用戶自定義數據類型
SYSNAME SYSNAME 數據類型是系統提供給用戶的便於用戶自定義數據類型,它被定義爲NVARCHAR 128 即它可存儲128 個UNICODE 字符或256 個一般字符,其具體使用方法請參見第7 章管理數據庫表中的自定義數據類型章節
十一、 新數據類型
SQL Server 2000 中增加了3 種數據類型BIGINT SQL_VARIANT 和TABLE 其中BIGINT 數據類型已在整數類型中介紹下面介紹其餘兩種
1、 SQL_VARIANT
SQL_VARIANT 數據類型可以存儲除文本圖形數據TEXT NTEXT IMAGE和TIMESTAMP 類型數據外的其它任何合法的SQL Server 數據此數據類型大大方便了
SQL Server 的開發工作
2 、TABLE
TABLE 數據類型用於存儲對錶或視圖處理後的結果集這一新類型使得變量可以存儲一個表從而使函數或過程返回查詢結果更加方便快捷

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章