數(shù)字有很多類型,那么通常的數(shù)字類型有如下一些:
創(chuàng)新互聯(lián)一直通過網(wǎng)站建設(shè)和網(wǎng)站營銷幫助企業(yè)獲得更多客戶資源。 以"深度挖掘,量身打造,注重實效"的一站式服務(wù),以成都網(wǎng)站制作、網(wǎng)站設(shè)計、移動互聯(lián)產(chǎn)品、全網(wǎng)整合營銷推廣服務(wù)為核心業(yè)務(wù)。十多年網(wǎng)站制作的經(jīng)驗,使用新網(wǎng)站建設(shè)技術(shù),全新開發(fā)出的標(biāo)準(zhǔn)網(wǎng)站,不但價格便宜而且實用、靈活,特別適合中小公司網(wǎng)站制作。網(wǎng)站管理系統(tǒng)簡單易用,維護(hù)方便,您可以完全操作網(wǎng)站資料,是中小公司快速網(wǎng)站建設(shè)的選擇。
整型,也就是整數(shù):int,bigint,smallint,tinyint等
小數(shù):float,numeric(整數(shù)位數(shù),小數(shù)位數(shù)),decimal(整數(shù)位數(shù),小數(shù)位數(shù))
參數(shù)
numeric_expression
精確數(shù)字或近似數(shù)字?jǐn)?shù)據(jù)類型類別的表達(dá)式(bit 數(shù)據(jù)類型除外)。
length
是 numeric_expression 將要四舍五入的精度。length 必須是 tinyint、smallint 或int。當(dāng) length 為正數(shù)時,numeric_expression 四舍五入為 length 所指定的小數(shù)位數(shù)。當(dāng) length 為負(fù)數(shù)時,numeric_expression 則按 length 所指定的在小數(shù)點的左邊四舍五入。
function
是要執(zhí)行的操作類型。function 必須是 tinyint、smallint 或 int。如果省略 function 或 function 的值為 0(默認(rèn)),numeric_expression 將四舍五入。當(dāng)指定 0 以外的值時,將截斷 numeric_expression。
例:
Select ROUND(150.75, 0)
151.00
Select ROUND(150.75, 0, 1)
150.00
FLOOR
返回小于或等于所給數(shù)字表達(dá)式的最大整數(shù)。
FLOOR(1.1)=1
FLOOR(2)=2
CEILING
返回大于或等于所給數(shù)字表達(dá)式的最小整數(shù)。
CEILING(1.1)=2
CEILING(2)=2
如果要四舍五入:
cast(round(1.6,0) as int) =2
cast(round(1.4,0) as int)=1
cast(round(2,0) as int)=2
SQLServer 提供了 25 種數(shù)據(jù)類型:
Binary [(n)],Varbinary [(n)],Char[(n)],Varchar[(n)],Nchar[(n)],Nvarchar[(n)],Datetime,Smalldatetime
Decimal[(p[,s])],Numeric[(p[,s])],F(xiàn)loat[(n)],Real,Int,Smallint,Tinyint,Money,Smallmoney,Bit,Cursor
Sysname,Timestamp,Uniqueidentifier,Text,Image,Ntext。
下面來分別介紹這些數(shù)據(jù)類型:
(1)二進(jìn)制數(shù)據(jù)類型
二進(jìn)制數(shù)據(jù)包括 Binary、Varbinary 和 Image
Binary 數(shù)據(jù)類型既可以是固定長度的(Binary),也可以是變長度的。
Binary[(n)] 是 n 位固定的二進(jìn)制數(shù)據(jù)。其中,n 的取值范圍是從 1 到 8000。其存儲窨的大小是 n + 4 個字節(jié)。
Varbinary[(n)] 是 n 位變長度的二進(jìn)制數(shù)據(jù)。其中,n 的取值范圍是從 1 到 8000。其存儲窨的大小是 n + 4個字節(jié),不是n 個字節(jié)。
在 Image 數(shù)據(jù)類型中存儲的數(shù)據(jù)是以位字符串存儲的,不是由 SQL Server 解釋的,必須由應(yīng)用程序來解釋。
例如,應(yīng)用程序可以使用BMP、TIEF、GIF 和 JPEG 格式把數(shù)據(jù)存儲在 Image 數(shù)據(jù)類型中。
(2)字符數(shù)據(jù)類型
字符數(shù)據(jù)的類型包括 Char,Varchar 和 Text
字符數(shù)據(jù)是由任何字母、符號和數(shù)字任意組合而成的數(shù)據(jù)。
Varchar 是變長字符數(shù)據(jù),其長度不超過 8KB。
Char 是定長字符數(shù)據(jù),其長度最多為 8KB。
超過 8KB 的ASCII 數(shù)據(jù)可以使用Text數(shù)據(jù)類型存儲。例如,因為 Html 文檔全部都是 ASCII 字符,
并且在一般情況下長度超過 8KB,所以這些文檔可以 Text 數(shù)據(jù)類型存儲在SQL Server 中。
(3)Unicode 數(shù)據(jù)類型
Unicode 數(shù)據(jù)類型包括 Nchar,Nvarchar 和Ntext
在 Microsoft SQL Server 中,傳統(tǒng)的非 Unicode 數(shù)據(jù)類型允許使用由特定字符集定義的字符。
在 SQL Server安裝過程,允許選擇一種字符集。使用 Unicode 數(shù)據(jù)類型,列中可以存儲任何由Unicode 標(biāo)準(zhǔn)定義的字符。
在 Unicode 標(biāo)準(zhǔn)中,包括了以各種字符集定義的全部字符。使用Unicode數(shù)據(jù)類型,
所戰(zhàn)勝的窨是使用非 Unicode 數(shù)據(jù)類型所占用的窨大小的兩倍。
在 SQL Server 中,Unicode 數(shù)據(jù)以 Nchar、Nvarchar 和 Ntext 數(shù)據(jù)類型存儲。
使用這種字符類型存儲的列可以存儲多個字符集中的字符。當(dāng)列的長度變化時,應(yīng)該使用Nvarchar 字符類型,
這時最多可以存儲 4000 個字符。當(dāng)列的長度固定不變時,應(yīng)該使用 Nchar 字符類型,同樣,
這時最多可以存儲4000 個字符。當(dāng)使用 Ntext 數(shù)據(jù)類型時,該列可以存儲多于 4000 個字符。
(4)日期和時間數(shù)據(jù)類型
日期和時間數(shù)據(jù)類型包括 Datetime 和 Smalldatetime兩種類型
日期和時間數(shù)據(jù)類型由有效的日期和時間組成。
例如,有效的日期和時間數(shù)據(jù)包括“4/01/98 12:15:00:00:00 PM”和“1:28:29:15:01AM 8/17/98”。
前一個數(shù)據(jù)類型是日期在前,時間在后一個數(shù)據(jù)類型是霎時間在前,日期在后。
在 Microsoft SQL Server中,日期和時間數(shù)據(jù)類型包括Datetime 和 Smalldatetime 兩種類型時,
所存儲的日期范圍是從 1753 年 1 月 1 日開始,到9999 年12 月 31 日結(jié)束(每一個值要求 8 個存儲字節(jié))。
使用 Smalldatetime 數(shù)據(jù)類型時,
所存儲的日期范圍是 1900年 1 月 1日 開始,到 2079 年 12 月 31 日結(jié)束(每一個值要求 4 個存儲字節(jié))。
日期的格式可以設(shè)定。設(shè)置日期格式的命令如下:
Set DateFormat {format | @format _var|
其中,format | @format_var 是日期的順序。有效的參數(shù)包括 MDY、DMY、YMD、YDM、MYD 和 DYM。在默認(rèn)情況下,日期格式為MDY。
例如,當(dāng)執(zhí)行 Set DateFormat YMD 之后,日期的格式為年 月 日 形式;
當(dāng)執(zhí)行 Set DateFormat DMY 之后,日期的格式為日 月有年 形式
(5)數(shù)字?jǐn)?shù)據(jù)類型
數(shù)字?jǐn)?shù)據(jù)只包含數(shù)字。數(shù)字?jǐn)?shù)據(jù)類型包括正數(shù)和負(fù)數(shù)、小數(shù)(浮點數(shù))和整數(shù)
整數(shù)由正整數(shù)和負(fù)整數(shù)組成,例如 39、25、0-2 和 33967。
在 Micrsoft SQL Server 中,整數(shù)存儲的數(shù)據(jù)類型是Int,Smallint和 Tinyint。
Int 數(shù)據(jù)類型存儲數(shù)據(jù)的范圍大于 Smallint 數(shù)據(jù)類型存儲數(shù)據(jù)的范圍,
而 Smallint 據(jù)類型存儲數(shù)據(jù)的范圍大于Tinyint 數(shù)據(jù)類型存儲數(shù)據(jù)的范圍。
使用 Int 數(shù)據(jù)存儲數(shù)據(jù)的范圍是從 -2 147 483 648 到 2 147 483 647(每一個值要求4個字節(jié)存儲空間)。
使用 Smallint 數(shù)據(jù)類型時,存儲數(shù)據(jù)的范圍從 -32 768 到 32 767(每一個值要求2個字節(jié)存儲空間)。
使用Tinyint 數(shù)據(jù)類型時,存儲數(shù)據(jù)的范圍是從0 到255(每一個值要求1個字節(jié)存儲空間)。
精確小 數(shù)數(shù)據(jù)在 SQL Server 中的數(shù)據(jù)類型是 Decimal 和 Numeric。這種數(shù)據(jù)所占的存儲空間根據(jù)該數(shù)據(jù)的位數(shù)后的位數(shù)來確定。
在SQL Server 中,近似小數(shù)數(shù)據(jù)的數(shù)據(jù)類型是 Float 和 Real。例如,三分之一這個分?jǐn)?shù)記作。
3333333,當(dāng)使用近似數(shù)據(jù)類型時能準(zhǔn)確表示。因此,從系統(tǒng)中檢索到的數(shù)據(jù)可能與存儲在該列中數(shù)據(jù)不完全一樣。
=======================================================================================
SQL Server的數(shù)據(jù)類型介紹(二)
(6)貨幣數(shù)據(jù)表示正的或者負(fù)的貨幣數(shù)量 。
在 Microsoft SQL Server 中,貨幣數(shù)據(jù)的數(shù)據(jù)類型是Money 和 Smallmoney 。
而Money數(shù)據(jù)類型要求 8 個存儲字節(jié),Smallmoney 數(shù)據(jù)類型要求 4 個存儲字節(jié)。
(7)特殊數(shù)據(jù)類型
特殊數(shù)據(jù)類型包括前面沒有提過的數(shù)據(jù)類型。特殊的數(shù)據(jù)類型有3種,即Timestamp、Bit 和 Uniqueidentifier。
Timestamp 用于表示SQL Server 活動的先后順序,以二進(jìn)投影的格式表示。Timestamp 數(shù)據(jù)與插入數(shù)據(jù)或者日期和時間沒有關(guān)系。
Bit 由 1 或者 0 組成。當(dāng)表示真或者假、ON 或者 OFF 時,使用 Bit 數(shù)據(jù)類型。
例如,詢問是否是每一次訪問的客戶機(jī)請求可以存儲在這種數(shù)據(jù)類型的列中。
Uniqueidentifier 由 16 字節(jié)的十六進(jìn)制數(shù)字組成,表示一個全局唯一的。
當(dāng)表的記錄行要求唯一時,GUID是非常有用。例如,在客戶標(biāo)識號列使用這種數(shù)據(jù)類型可以區(qū)別不同的客戶。
=======================================================================
用戶定義的數(shù)據(jù)類型
用戶定義的數(shù)據(jù)類型基于在 Microsoft SQL Server 中提供的數(shù)據(jù)類型。當(dāng)幾個表中必須存儲同一種數(shù)據(jù)類型時,
并且為保證這些列有相同的數(shù)據(jù)類型、長度和可空性時,可以使用用戶定義的數(shù)據(jù)類型。
例如,可定義一種稱為 postal_code 的數(shù)據(jù)類型,它基于 Char 數(shù)據(jù)類型。
當(dāng)創(chuàng)建用戶定義的數(shù)據(jù)類型時,必須提供三個數(shù):數(shù)據(jù)類型的名稱、所基于的系統(tǒng)數(shù)據(jù)類型和數(shù)據(jù)類型的可空性。
(1)創(chuàng)建用戶定義的數(shù)據(jù)類型
創(chuàng)建用戶定義的數(shù)據(jù)類型可以使用 Transact-SQL 語句。系統(tǒng)存儲過程 sp_addtype 可以來創(chuàng)建用戶定義的數(shù)據(jù)類型。其語法形式如下:
sp_addtype {type},[,system_data_bype][,'null_type']
其中,type 是用戶定義的數(shù)據(jù)類型的名稱。system_data_type 是系統(tǒng)提供的數(shù)據(jù)類型,例如 Decimal、Int、Char 等等。
null_type 表示該數(shù)據(jù)類型是如何處理空值的,必須使用單引號引起來,例如'NULL'、'NOT NULL'或者'NONULL'。
例子:
Use cust
Exec sp_addtype ssn,'Varchar(11)','Not Null'
創(chuàng)建一個用戶定義的數(shù)據(jù)類型 ssn,其基于的系統(tǒng)數(shù)據(jù)類型是變長為11 的字符,不允許空。
例子:
Use cust
Exec sp_addtype birthday,datetime,'Null'
創(chuàng)建一個用戶定義的數(shù)據(jù)類型 birthday,其基于的系統(tǒng)數(shù)據(jù)類型是 DateTime,允許空。
例子:
Use master
Exec sp_addtype telephone,'varchar(24),'Not Null'
Eexc sp_addtype fax,'varchar(24)','Null'
創(chuàng)建兩個數(shù)據(jù)類型,即 telephone 和 fax
(2)刪除用戶定義的數(shù)據(jù)類型
當(dāng)用戶定義的數(shù)據(jù)類型不需要時,可刪除。刪除用戶定義的數(shù)據(jù)類型的命令是 sp_droptype {'type'}。
例子:
Use master
Exec sp_droptype 'ssn'
注意:當(dāng)表中的列還正在使用用戶定義的數(shù)據(jù)類型時,或者在其上面還綁定有默認(rèn)或者規(guī)則時,這種用戶定義的數(shù)據(jù)類型不能刪除。
(1)文本類型: 字符數(shù)據(jù)包含任意字母、符號或數(shù)字字符的組合
char: 固定長度的非Unicode字符數(shù)據(jù),最大長度為8000個字符
varchar: 可變長度的非Unicode數(shù)據(jù),最大長度為8000個字符
text: 存儲長文本信息,最大長度為2^31-1(2147483647)個字符
nchar: 固定長度的Unicode數(shù)據(jù),最大長度為4000個字符
narchar: 可變長度的Unicode數(shù)據(jù),最大長度為4000個字符
ntext: 存儲長文本信息,最大長度為2^30-1(1073741823)個字符
(Unicode是國際組織制定的可以容納世界上所有文字和符號的字符編碼方案,編碼數(shù)據(jù)長度是非編碼數(shù)據(jù)的兩倍)
(2)整數(shù)類型
bigint: 占用8個字節(jié),可表示范圍-2^63~2^63-1之間的整數(shù)
int: 占用4個字節(jié)
smallint: 占用2個字節(jié)
tinint: 占用1個字節(jié),可表示0~255之間的整數(shù)
(3)精確數(shù)字類型
decimal: -10^38~10^38-1之間固定精度和小數(shù)位的數(shù)字
numeric(常用): 功能等同于decimal
寫法:
decimal(整數(shù),小數(shù))和numeric(整數(shù),小數(shù))——若不指定位數(shù),默認(rèn)18位整數(shù),0位小數(shù):
(4)近似數(shù)字(浮點)類型(很少用,可以用numeric替代)
float[(n)]: 表示范圍-1.79E+308~1.79E+308
n 表示精度,在1-53之間取值,當(dāng)n在1~24之間時,精度為7位有效數(shù)字,占用4個字節(jié);當(dāng)n在25~53之間時,精度為15位有效數(shù)字,占8個字節(jié)。
real: 表示范圍-3.40E+38~3.40E+38占用4個字節(jié),相當(dāng)于float(24)
(5)日期類型
datetime: 允許范圍1753-1-1至9999-1-1
smalldatetime(常用): 允許范圍1900-1-1至2079-6-6
時間精度不同: datetime精確到3%秒;smalldatetime精確到1分鐘
格式說明:
分隔符數(shù)字方式: 2013-08-20 或 08/20/2013
純數(shù)字方式: 08202013
英文數(shù)字類型: Aug 20,2013
注意問題: 日期在使用的時候需要使用單引號'? ? ?' 括起來
(6)貨幣類型
money: 貨幣數(shù)值介于-2^63與2^63-1之間,精確到貨幣單位的千分之一
smallmoney: 貨幣數(shù)據(jù)介于-214748.3648與214748.3648之間,精確到貨幣單位的千分之十
(7)位類型
bit: 表示“是/否”類型的數(shù)據(jù)(1/0,true/false)
(8)二進(jìn)制類型
binary: 固定長度的二進(jìn)制數(shù)據(jù),最大8000個字節(jié)
vbinary: 可變長度的二進(jìn)制數(shù)據(jù),最大8000個字節(jié)
image: 可變長度的二進(jìn)制數(shù)據(jù),最大長度2^31個字節(jié)—— 應(yīng)用場合: 可存儲圖片
sqlserver的數(shù)據(jù)類型比較多,常用的包括:
第一大類:整數(shù)數(shù)據(jù)
bit:bit數(shù)據(jù)類型代表0,1或NULL,就是表示true,false.占用1byte.
int:以4個字節(jié)來存儲正負(fù)數(shù).可存儲范圍為:-2^31至2^31-1.
smallint:以2個字節(jié)來存儲正負(fù)數(shù).存儲范圍為:-2^15至2^15-1
tinyint: 是最小的整數(shù)類型,僅用1字節(jié),范圍:0至此^8-1
第二大類:精確數(shù)值數(shù)據(jù)
numeric:表示的數(shù)字可以達(dá)到38位,存儲數(shù)據(jù)時所用的字節(jié)數(shù)目會隨著使用權(quán)用位數(shù)的多少變化.
decimal:和numeric差不多
第三大類:近似浮點數(shù)值數(shù)據(jù)
float:用8個字節(jié)來存儲數(shù)據(jù).最多可為53位.范圍為:-1.79E+308至1.79E+308.
real:位數(shù)為24,用4個字節(jié),數(shù)字范圍:-3.04E+38至3.04E+38
第四大類:日期時間數(shù)據(jù)
datatime:表示時間范圍可以表示從1753/1/1至9999/12/31,時間可以表示到3.33/1000秒.使用8個字節(jié).
smalldatetime:表示時間范圍可以表示從1900/1/1至2079/12/31.使用4個字節(jié).
第五大類:字符串?dāng)?shù)據(jù)
char:長度是設(shè)定的,最短為1字節(jié),最長為8000個字節(jié).不足的長度會用空白補(bǔ)上.
varchar:長度也是設(shè)定的,最短為1字節(jié),最長為8000個字節(jié),尾部的空白會去掉.
text:長寬也是設(shè)定的,最長可以存放2G的數(shù)據(jù).
第六大類:Unincode字符串?dāng)?shù)據(jù)
nchar:長度是設(shè)定的,最短為1字節(jié),最長為4000個字節(jié).不足的長度會用空白補(bǔ)上.儲存一個字符需要2個字節(jié).
nvarchar:長度是設(shè)定的,最短為1字節(jié),最長為4000個字節(jié).尾部的空白會去掉.儲存一個字符需要2個字節(jié).
ntext:長度是設(shè)定的,最短為1字節(jié),最長為2G.尾部的空白會去掉,儲存一個字符需要2個字節(jié).
第七大類:貨幣數(shù)據(jù)類型
money:記錄金額范圍為:-92233720368577.5808至92233720368577.5807.需要8 個字節(jié).
smallmoney:記錄金額范圍為:-214748.3648至214748.36487.需要4個字節(jié).
第八大類:標(biāo)記數(shù)據(jù)
timestamp:該數(shù)據(jù)類型在每一個表中是唯一的!當(dāng)表中的一個記錄更改時,該記錄的timestamp字段會自動更新.
uniqueidentifier:用于識別數(shù)據(jù)庫里面許多個表的唯一一個記錄.
第九大類:二進(jìn)制碼字符串?dāng)?shù)據(jù)
binary:固定長度的二進(jìn)制碼字符串字段,最短為1,最長為8000.
varbinary:與binary差異為數(shù)據(jù)尾部是00時,varbinary會將其去掉
image:為可變長度的二進(jìn)制碼字符串,最長2G.