|
以下為SQL SERVER7.0以上版本的字段類型說明。SQL SERVER6.5的字段類型說明請參考SQL SERVER提供的說明。 bit:0或1的整型數(shù)字 int:從-2^31(-2,147,483,648)到2^31(2,147,483,647)的整型數(shù)字 smallint:從-2^15(-32,768)到2^15(32,767)的整型數(shù)字 tinyint:從0到255的整型數(shù)字
decimal:從-10^38到10^38-1的定精度與有效位數(shù)的數(shù)字 numeric:decimal的同義詞
money:從-2^63(-922,337,203,685,477.5808)到2^63-1(922,337,203,685,477.5807)的貨幣數(shù)據(jù),最小貨幣單位千分之十 smallmoney:從-214,748.3648到214,748.3647的貨幣數(shù)據(jù),最小貨幣單位千分之十
float:從-1.79E+308到1.79E+308可變精度的數(shù)字 real:從-3.04E+38到3.04E+38可變精度的數(shù)字
datetime:從1753年1月1日到9999年12日31的日期和時間數(shù)據(jù),最小時間單位為百分之三秒或3.33毫秒 smalldatetime:從1900年1月1日到2079年6月6日的日期和時間數(shù)據(jù),最小時間單位為分鐘
timestamp:時間戳,一個數(shù)據(jù)庫寬度的唯一數(shù)字 uniqueidentifier:全球唯一標(biāo)識符GUID
char:定長非Unicode的字符型數(shù)據(jù),最大長度為8000 varchar:變長非Unicode的字符型數(shù)據(jù),最大長度為8000 text:變長非Unicode的字符型數(shù)據(jù),最大長度為2^31-1(2G)
nchar:定長Unicode的字符型數(shù)據(jù),最大長度為8000 nvarchar:變長Unicode的字符型數(shù)據(jù),最大長度為8000 ntext:變長Unicode的字符型數(shù)據(jù),最大長度為2^31-1(2G)
binary:定長二進(jìn)制數(shù)據(jù),最大長度為8000 varbinary:變長二進(jìn)制數(shù)據(jù),最大長度為8000 image:變長二進(jìn)制數(shù)據(jù),最大長度為2^31-1(2G)
整數(shù)數(shù)據(jù)類型 INT 或INTEGER SMALLINT TINYINT BIGINT 浮點(diǎn)數(shù)據(jù)類型 REAL FLOAT DECIMAL NUMERIC 二進(jìn)制數(shù)據(jù)類型 BINARY VARBINARY 邏輯數(shù)據(jù)類型 BIT 字符數(shù)據(jù)類型 CHAR NCHAR VARCHAR NVARCHAR 文本和圖形數(shù)據(jù)類型 TEXT NTEXT IMAGE 日期和時間數(shù)據(jù)類型 DATETIME SMALLDATETIME 貨幣數(shù)據(jù)類型 MONEY SMALLMONEY 特定數(shù)據(jù)類型 TIMESTAMP UNIQUEIDENTIFIER 用戶自定義數(shù)據(jù)類型 SYSNAME 新數(shù)據(jù)類型 SQL_VARIANT TABLE 其中BIGINT SQL_VARIANT 和TABLE 是SQL Server 2000 中新增加的3 種數(shù)據(jù)類型下面分類講述各種數(shù)據(jù)類型 一、 整數(shù)數(shù)據(jù)類型 整數(shù)數(shù)據(jù)類型是最常用的數(shù)據(jù)類型之一 1、 INT INTEGER INT 或INTEGER 數(shù)據(jù)類型存儲從-231 -2 147 483 648 到231-1 2 147 483 647 之間的所有正負(fù)整數(shù)每個INT 類型的數(shù)據(jù)按4 個字節(jié)存儲其中1 位表示整數(shù)值的正負(fù)號其它31 位表示整數(shù)值的長度和大小 2 、SMALLINT SMALLINT 數(shù)據(jù)類型存儲從-215 -32 768 到215-1 32 767 之間的所有正負(fù)整數(shù)每個MALLINT 類型的數(shù)據(jù)占用2 個字節(jié)的存儲空間其中1 位表示整數(shù)值的正負(fù)號其它15 位表示整數(shù)值的長度和大小 3 、TINYINT TINYINT數(shù)據(jù)類型存儲從0 到255 之間的所有正整數(shù)每個TINYINT類型的數(shù)據(jù)占用1 個字節(jié)的存儲空間 4、 BIGINT BIGINT 數(shù)據(jù)類型存儲從-2^63 -9 223 372 036 854 775 807 到2^63-1 9 223 372 036 854 775 807 之間的所有正負(fù)整數(shù)每個BIGINT 類型的數(shù)據(jù)占用8個字節(jié)的存儲空間 二、浮點(diǎn)數(shù)據(jù)類型 浮點(diǎn)數(shù)據(jù)類型用于存儲十進(jìn)制小數(shù)浮點(diǎn)數(shù)值的數(shù)據(jù)在SQL Server 中采用上舍入Round up 或稱為只入不舍方式進(jìn)行存儲所謂上舍入是指當(dāng)且僅當(dāng)要舍入的數(shù)是一個非零數(shù)時對其保留數(shù)字部分的最低有效位上的數(shù)值加1 并進(jìn)行必要的進(jìn)位若一個數(shù)是上舍入數(shù)其絕對值不會減少如對3.14159265358979 分別進(jìn)行2 位和12位舍入結(jié)果為3.15 和3.141592653590 1、 REAL 數(shù)據(jù)類型 REAL數(shù)據(jù)類型可精確到第7 位小數(shù)其范圍為從-3.40E -38 到3.40E +38 每個REAL類型的數(shù)據(jù)占用4 個字節(jié)的存儲空間 2、 FLOAT FLOAT數(shù)據(jù)類型可精確到第15 位小數(shù)其范圍為從-1.79E -308 到1.79E +308 每個FLOAT 類型的數(shù)據(jù)占用8 個字節(jié)的存儲空間 FLOAT數(shù)據(jù)類型可寫為FLOAT[ n ]的形式n 指定FLOAT 數(shù)據(jù)的精度n 為1到15 之間的整數(shù)值當(dāng)n 取1 到7 時實際上是定義了一個REAL 類型的數(shù)據(jù)系統(tǒng)用4 個字節(jié)存儲它當(dāng)n 取8 到15 時系統(tǒng)認(rèn)為其是FLOAT 類型用8 個字節(jié)存儲它 3、 DECIMAL DECIMAL數(shù)據(jù)類型可以提供小數(shù)所需要的實際存儲空間但也有一定的限制您可以用2 到17 個字節(jié)來存儲從-1038-1 到1038-1 之間的數(shù)值可將其寫為DECIMAL[ p [s] ]的形式p 和s 確定了精確的比例和數(shù)位其中p 表示可供存儲的值的總位數(shù)不包括小數(shù)點(diǎn)缺省值為18 s 表示小數(shù)點(diǎn)后的位數(shù)缺省值為0 例如decimal 15 5表示共有15 位數(shù)其中整數(shù)10 位小數(shù)5 位表4-3 列出了各精確度所需的字節(jié)數(shù)之間的關(guān)系表 DECIMAL數(shù)據(jù)類型的精度與字節(jié)數(shù) 精度 字節(jié)數(shù) 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數(shù)據(jù)類型與DECIMAL數(shù)據(jù)類型完全相同 ∀?SQL Server 為了和前端開發(fā)工具配合其所支持的數(shù)據(jù)精度默認(rèn)最大為28 位但可以通過使用命令來執(zhí)行sqlservr.exe 程序以啟動SQL Server 可改變默認(rèn)精度命令語法如下SQLSERVR[/D master_device_path][/P precisim_level]
例4-4 用最大數(shù)據(jù)精度38 啟動SQL Server sqlservr /d c:\ Mssql2000\data\master.dat /p38 /*在使用了/P 參數(shù)后如果其后沒有指定具體的精度數(shù)值則默認(rèn)為38 位/* 三、二進(jìn)制數(shù)據(jù)類型 1、 BINARY BINARY 數(shù)據(jù)類型用于存儲二進(jìn)制數(shù)據(jù)其定義形式為BINARY n n 表示數(shù)據(jù)的長度取值為1 到8000 在使用時必須指定BINARY 類型數(shù)據(jù)的大小至少應(yīng)為1 個字節(jié)BINARY 類型數(shù)據(jù)占用n+4 個字節(jié)的存儲空間在輸入數(shù)據(jù)時必須在數(shù)據(jù)前加上字符0X 作為二進(jìn)制標(biāo)識如要輸入abc 則應(yīng)輸入0xabc 若輸入的數(shù)據(jù)過長將會截掉其超出部分若輸入的數(shù)據(jù)位數(shù)為奇數(shù)則會在起始符號0X 后添加一個0 如上述的0xabc 會被系統(tǒng)自動變?yōu)?x0abc 2、 VARBINARY VARBINARY數(shù)據(jù)類型的定義形式為VARBINARY n 它與BINARY 類型相似n 的取值也為1 到8000 若輸入的數(shù)據(jù)過長將會截掉其超出部分不同的是VARBINARY數(shù)據(jù)類型具有變動長度的特性因為VARBINARY數(shù)據(jù)類型的存儲長度為實際數(shù)值長度+4個字節(jié)當(dāng)BINARY數(shù)據(jù)類型允許NULL 值時將被視為VARBINARY數(shù)據(jù)類型一般情況下由于BINARY 數(shù)據(jù)類型長度固定因此它比VARBINARY 類型的處理速度快 四、邏輯數(shù)據(jù)類型 BIT BIT數(shù)據(jù)類型占用1 個字節(jié)的存儲空間其值為0 或1 如果輸入0 或1 以外的值將被視為1 BIT 類型不能定義為NULL 值所謂NULL 值是指空值或無意義的值 五、 字符數(shù)據(jù)類型 字符數(shù)據(jù)類型是使用最多的數(shù)據(jù)類型它可以用來存儲各種字母數(shù)字符號特殊符號一般情況下使用字符類型數(shù)據(jù)時須在其前后加上單引號’或雙引號” 1、 CHAR CHAR 數(shù)據(jù)類型的定義形式為CHAR[ n ] 以CHAR 類型存儲的每個字符和符號占一個字節(jié)的存儲空間n 表示所有字符所占的存儲空間n 的取值為1 到8000 即可容納8000 個ANSI 字符若不指定n 值則系統(tǒng)默認(rèn)值為1 若輸入數(shù)據(jù)的字符數(shù)小于n則系統(tǒng)自動在其后添加空格來填滿設(shè)定好的空間若輸入的數(shù)據(jù)過長將會截掉其超出部分 2、 NCHAR NCHAR數(shù)據(jù)類型的定義形式為NCHAR[ n ] 它與CHAR 類型相似不同的是NCHAR數(shù)據(jù)類型n 的取值為1 到4000 因為NCHAR 類型采用UNICODE 標(biāo)準(zhǔn)字符集CharacterSet UNICODE 標(biāo)準(zhǔn)規(guī)定每個字符占用兩個字節(jié)的存儲空間所以它比非UNICODE 標(biāo)準(zhǔn)的數(shù)據(jù)類型多占用一倍的存儲空間使用UNICODE 標(biāo)準(zhǔn)的好處是因其使用兩個字節(jié)做存儲單位其一個存儲單位的容納量就大大增加了可以將全世界的語言文字都囊括在內(nèi)在一個數(shù)據(jù)列中就可以同時出現(xiàn)中文英文法文德文等而不會出現(xiàn)編碼沖突 3 、VARCHAR VARCHAR數(shù)據(jù)類型的定義形式為VARCHAR [ n ] 它與CHAR 類型相似n 的取值也為1 到8000 若輸入的數(shù)據(jù)過長將會截掉其超出部分不同的是VARCHAR數(shù)據(jù)類型具有變動長度的特性因為VARCHAR數(shù)據(jù)類型的存儲長度為實際數(shù)值長度若輸入數(shù)據(jù)的字符數(shù)小于n 則系統(tǒng)不會在其后添加空格來填滿設(shè)定好的空間 一般情況下由于CHAR 數(shù)據(jù)類型長度固定因此它比VARCHAR 類型的處理速度 快 4、 NVARCHAR NVARCHAR數(shù)據(jù)類型的定義形式為NVARCHAR[ n ] 它與VARCHAR 類型相似 不同的是NVARCHAR數(shù)據(jù)類型采用UNICODE 標(biāo)準(zhǔn)字符集Character Set n 的取值為1 到4000 六、 文本和圖形數(shù)據(jù)類型 這類數(shù)據(jù)類型用于存儲大量的字符或二進(jìn)制數(shù)據(jù) 1、 TEXT TEXT數(shù)據(jù)類型用于存儲大量文本數(shù)據(jù)其容量理論上為1 到231-1 2 147 483 647個字節(jié)在實際應(yīng)用時需要視硬盤的存儲空間而定,SQL Server 2000 以前的版本中數(shù)據(jù)庫中一個TEXT 對象存儲的實際上是一個指針,它指向一個個以8KB 8192 個字節(jié)為單位的數(shù)據(jù)頁Data Page 這些數(shù)據(jù)頁是動態(tài)增加并被邏輯鏈接起來的在SQL Server 2000 中則將TEXT 和IMAGE 類型的數(shù)據(jù)直接存放到表的數(shù)據(jù)行中而不是存放到不同的數(shù)據(jù)頁中這就減少了用于存儲TEXT 和IMA- GE 類型的空間并相應(yīng)減少了磁盤處理這類數(shù)據(jù)的I/O 數(shù)量 2、 NTEXT NTEXT數(shù)據(jù)類型與TEXT 類型相似不同的是NTEXT 類型采用UNICODE 標(biāo)準(zhǔn)字符集Character Set 因此其理論容量為230-1 1 073 741 823 個字節(jié) 3、 IMAGE IMAGE數(shù)據(jù)類型用于存儲大量的二進(jìn)制數(shù)據(jù)Binary Data 其理論容量為231-1 2 147 483 647 個字節(jié)其存儲數(shù)據(jù)的模式與TEXT 數(shù)據(jù)類型相同它通常用來存儲圖形等OLE Object Linking and Embedding 對象連接和嵌入對象在輸入數(shù)據(jù)時同BINARY數(shù)據(jù)類型一樣必須在數(shù)據(jù)前加上字符0X 作為二進(jìn)制標(biāo)識 七、 日期和時間數(shù)據(jù)類型 1、 DATETIME DATETIME 數(shù)據(jù)類型用于存儲日期和時間的結(jié)合體它可以存儲從公元1753 年1 月1 日零時起到公元9999 年12 月31 日23 時59 分59 秒之間的所有日期和時間其精確度可達(dá)三百分之一秒即3.33 毫秒DATETIME 數(shù)據(jù)類型所占用的存儲空間為8 個字節(jié)其中前4 個字節(jié)用于存儲1900 年1 月1 日以前或以后的天數(shù)數(shù)值分正負(fù)正數(shù)表示在此日期之后的日期負(fù)數(shù)表示在此日期之前的日期后4 個字節(jié)用于存儲從此日零時起所指定的時間經(jīng)過的毫秒數(shù)如果在輸入數(shù)據(jù)時省略了時間部分則系統(tǒng)將12:00:00:000AM 作為時間缺省值如果省略了日期部分則系統(tǒng)將1900 年1 月1 日作為日期缺省值 2、 SMALLDATETIME SMALLDATETIME 數(shù)據(jù)類型與DATETIME 數(shù)據(jù)類型相似但其日期時間范圍較小,為從1900 年1 月1 日到2079 年6 月6 日精度較低只能精確到分鐘其分鐘個位上為根據(jù)秒數(shù)四舍五入的值即以30 秒為界四舍五入如DATETIME 時間為14:38:30.283時SMALLDATETIME 認(rèn)為是14:39:00 SMALLDATETIME 數(shù)據(jù)類型使用4 個字節(jié)存儲數(shù)據(jù)其中前2 個字節(jié)存儲從基礎(chǔ)日期1900 年1 月1 日以來的天數(shù)后兩個字節(jié)存儲 此日零時起所指定的時間經(jīng)過的分鐘數(shù)下面介紹日期和時間的輸入格式 日期輸入格式 日期的輸入格式很多大致可分為三類 英文+數(shù)字格式 此類格式中月份可用英文全名或縮寫且不區(qū)分大小寫年和月日之間可不用逗號年份可為4 位或2 位當(dāng)其為兩位時若值小于50 則視為20xx 年若大于或等于50 則視為19xx 年若日部分省略則視為當(dāng)月的1 號以下格式均為正確的日期格式 June 21 2000 Oct 1 1999 January 2000 2000 February 2000 May 1 2000 1 Sep 99 June July 00 數(shù)字+分隔符格式 允許把斜杠/ 連接符- 和小數(shù)點(diǎn). 作為用數(shù)字表示的年月日之間的分隔符如 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 純數(shù)字格式 純數(shù)字格式是以連續(xù)的4 位6 位或8 位數(shù)字來表示日期如果輸入的是6 位或8 位數(shù)字系統(tǒng)將按年月日來識別即YMD 格式并且月和日都是用兩位數(shù)字來表示,如果輸入的數(shù)字是4 位數(shù)系統(tǒng)認(rèn)為這4 位數(shù)代表年份其月份和日缺省為此年度的1 月 1 日如 20000601 2000 年6 月1 日991212 1999 年12 月12 日1998 1998 年 時間輸入格式 在輸入時間時必須按小時分鐘秒毫秒的順序來輸入在其間用冒號隔開但可將毫秒部分用小數(shù)點(diǎn). 分隔其后第一位數(shù)字代表十分之一秒第二位數(shù)字代表百分之一秒第三位數(shù)字代表千分之一秒當(dāng)使用12 小時制時用AM am 和PM pm 分別指定時間是午前或午后若不指定系統(tǒng)默認(rèn)為AM AM 與PM 均不區(qū)分大小寫如 3:5:7.2pm 下午3 時5 分7 秒200 毫秒 10:23:5.123Am 上午10 時23 分5 秒123 毫秒 可以使用SET DATEFORMAT 命令來設(shè)定系統(tǒng)默認(rèn)的日期-時間格式 八、 貨幣數(shù)據(jù)類型 貨幣數(shù)據(jù)類型用于存儲貨幣值在使用貨幣數(shù)據(jù)類型時應(yīng)在數(shù)據(jù)前加上貨幣符號,系統(tǒng)才能辨識其為哪國的貨幣如果不加貨幣符號則默認(rèn)為各貨幣符號如圖4-2所示 1、 MONEY MONEY 數(shù)據(jù)類型的數(shù)據(jù)是一個有4 位小數(shù)的DECIMAL 值其取值從–263 -922 337 203 685 477.5808 到263 – 1 +922 337 203 685 477.5807 數(shù)據(jù)精度為萬分之一貨幣單位MONEY 數(shù)據(jù)類型使用8 個字節(jié)存儲 2、 SMALLMONEY SMALLMONEY 數(shù)據(jù)類型類似于MONEY 類型但其存儲的貨幣值范圍比MONEY數(shù)據(jù)類型小其取值從-214,748.3648 到+214,748.3647 存儲空間為4 個字節(jié) 九、 特定數(shù)據(jù)類型 SQL Server 中包含了一些用于數(shù)據(jù)存儲的特殊數(shù)據(jù)類型 1、 TIMESTAMP TIMESTAMP數(shù)據(jù)類型提供數(shù)據(jù)庫范圍內(nèi)的惟一值此類型相當(dāng)于BINARY 8 或圖4-2 貨幣符號一覽 VARBINARY 8 但當(dāng)它所定義的列在更新或插入數(shù)據(jù)行時此列的值會被自動更新,一個計數(shù)值將自動地添加到此TIMESTAMP數(shù)據(jù)列中每個數(shù)據(jù)庫表中只能有一個TIMESTAMP,數(shù)據(jù)列如果建立一個名為TIMESTAMP 的列則該列的類型將被自動設(shè)為TIMESTAMP數(shù)據(jù)類型 2、 UNIQUEIDENTIFIER UNIQUEIDENTIFIER 數(shù)據(jù)類型存儲一個16 位的二進(jìn)制數(shù)字此數(shù)字稱為GUID Globally Unique Identifier 即全球惟一鑒別號此數(shù)字由SQL Server 的NEWID函數(shù)產(chǎn)生的全球惟一的編碼,在全球各地的計算機(jī)經(jīng)由此函數(shù)產(chǎn)生的數(shù)字不會相同 十、 用戶自定義數(shù)據(jù)類型 SYSNAME SYSNAME 數(shù)據(jù)類型是系統(tǒng)提供給用戶的便于用戶自定義數(shù)據(jù)類型,它被定義為NVARCHAR 128 即它可存儲128 個UNICODE 字符或256 個一般字符,其具體使用方法請參見第7 章管理數(shù)據(jù)庫表中的自定義數(shù)據(jù)類型章節(jié) 十一、 新數(shù)據(jù)類型 SQL Server 2000 中增加了3 種數(shù)據(jù)類型BIGINT SQL_VARIANT 和TABLE 其中BIGINT 數(shù)據(jù)類型已在整數(shù)類型中介紹下面介紹其余兩種 1、 SQL_VARIANT SQL_VARIANT 數(shù)據(jù)類型可以存儲除文本圖形數(shù)據(jù)TEXT NTEXT IMAGE和TIMESTAMP 類型數(shù)據(jù)外的其它任何合法的SQL Server 數(shù)據(jù)此數(shù)據(jù)類型大大方便了 SQL Server 的開發(fā)工作 2 、TABLE TABLE 數(shù)據(jù)類型用于存儲對表或視圖處理后的結(jié)果集這一新類型使得變量可以存儲一個表從而使函數(shù)或過程返回查詢結(jié)果更加方便快捷
|