時間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(0)
?? SQL92標(biāo)準(zhǔn)定義了若干種基本數(shù)據(jù)類型,它們是SQL數(shù)據(jù)庫中各種數(shù)據(jù)類型的基礎(chǔ)。在《字符串?dāng)?shù)據(jù)類型》一文中,我們已經(jīng)詳細(xì)討論了SQL92標(biāo)準(zhǔn)所定義的字符串?dāng)?shù)據(jù)類型。現(xiàn)在,我們來進(jìn)一步討論數(shù)值數(shù)據(jù)類型。??
?? 你最好開始嘗試使用不同數(shù)據(jù)庫實(shí)現(xiàn)方法并在它們傳遞數(shù)據(jù),這樣可以加深你對數(shù)值數(shù)據(jù)類型的理解。本文將給你一個數(shù)值數(shù)據(jù)類型的概要,你可以結(jié)合你的數(shù)據(jù)庫的文檔資料來學(xué)習(xí)。
?? 在字符串、數(shù)值、datetime和interval這四種數(shù)據(jù)類型中,數(shù)值型的種類最多,約束也最多。在不同數(shù)據(jù)庫實(shí)現(xiàn)方法之間交換數(shù)據(jù)時,數(shù)值型的精度也最容易降低。Oracle和SQL服務(wù)器之間的實(shí)現(xiàn)分歧(同樣的數(shù)據(jù)類型長度不同)導(dǎo)致它們之間的數(shù)據(jù)傳遞過程會截短數(shù)字、改變它們的數(shù)值。因此,在移植程序前,你有必須很明確的了解兩個平臺間的數(shù)據(jù)定義差異,以及危及數(shù)據(jù)精度的風(fēng)險。
?? 謹(jǐn)記上述警告后,讓我們看看SQL92標(biāo)準(zhǔn)的數(shù)值類型
?? 基本數(shù)值類型
?? 與數(shù)值有關(guān)的類型統(tǒng)稱為數(shù)值類型。所有的數(shù)值都有精度,精度指的是有效數(shù)字位數(shù)。有的數(shù)值還有標(biāo)度值(scale value),它用來指示小數(shù)點(diǎn)右邊的最小有效數(shù)字位數(shù)。例如,數(shù)字1234.56的精度為6,標(biāo)度值為2,可以定義為NUMERIC(6,2)。
?? 每一個數(shù)據(jù)庫實(shí)現(xiàn)方法都有關(guān)于如何近似數(shù)值或者截短數(shù)值的規(guī)則。除了提供獲取數(shù)值長度和其它數(shù)值處理所需的屬性外,SQL92提供了內(nèi)建函數(shù),如加、減、乘、除等。所有的數(shù)值類型之間都可以互相比較、互相賦值。盡管實(shí)現(xiàn)方法不同,但是它們有一個的共同點(diǎn),即它們的結(jié)果一般都保留最大精度。
?? NUMERIC
?? 用法:NUMERIC(精度,標(biāo)度值)
?? 是一種精確數(shù)值類型,即它是數(shù)字的值的文字表示。(可以對該數(shù)字進(jìn)行取舍或者截取以符合指定精度,標(biāo)度值由預(yù)定義的規(guī)則確定。)
?? 為了符合標(biāo)度值指定的小數(shù)數(shù)字位數(shù),舍去多余的小數(shù)部分,舍入過程采用十進(jìn)制。
?? 數(shù)字的總長度等于精度,如果標(biāo)度值大于0(有小數(shù)部分),則長度加1。
?? 小數(shù)部分的位數(shù)要符合標(biāo)度值。
?? DECIMAL | DEC
?? 用法:DECIMAL(精度,標(biāo)度值) | DEC(精度,標(biāo)度值)
?? 是一種精確數(shù)值類型。
?? 用十進(jìn)制。
?? 數(shù)字的總長度等于精度,如果標(biāo)度值大于0(有小數(shù)部分),則長度加1。
?? 小數(shù)部分的位數(shù)不得小于標(biāo)度值,小數(shù)位數(shù)的上限由數(shù)據(jù)庫提供商設(shè)定。
?? INTEGER | INT
?? 用法: INTEGER(精度)
?? 是一種精確數(shù)值類型。
?? 使用二進(jìn)制或者十進(jìn)制,這基于表示該數(shù)值的二進(jìn)制位(bit)的個數(shù)(這是implementation-specific,與SMALLINT對應(yīng))。
?? 標(biāo)度值恒為0。
?? 數(shù)據(jù)庫供應(yīng)商對其定義了最大精度和最小精度。
?? 供應(yīng)商可能會提供的默認(rèn)精度。
?? SMALLINT
?? 用法:SMALLINT(精度)
?? 是一種精確數(shù)值類型。
?? 位數(shù)取舍方法與INTEGER (二進(jìn)制或者十進(jìn)制)相同。
?? 標(biāo)度值恒為0。
?? 最大精度等于或者小于INTEGER的最大精度。
?? FLOAT
?? 用法:FLOAT(精度)
?? 是一種近似數(shù)值類型,即對一個指定的數(shù)值用指數(shù)形式表示出來,如1.23e-45(等于),該數(shù)值類型的取舍和截短方法大多由數(shù)據(jù)庫提供商定義。
?? 當(dāng)取舍時,使用二進(jìn)制精度。
?? 精度表示使用的最小位數(shù),最大精度由數(shù)據(jù)庫提供商設(shè)定。
?? REAL
?? 用法:REAL
?? 是一種近似數(shù)值類型。
?? 使用二進(jìn)制精度,最大精度由數(shù)據(jù)庫提供商設(shè)定。
?? 其默認(rèn)精度必須小于DOUBLE PRECISION的默認(rèn)精度。
?? DOUBLE PRECISION
?? 用法: DOUBLE PRECISION
?? 是一種近似數(shù)值類型。
?? 使用二進(jìn)制精度,最大精度由數(shù)據(jù)庫提供商設(shè)定。
?? 其默認(rèn)精度必須大于PRECISION的默認(rèn)精度。
?? 相關(guān)理論
?? 數(shù)據(jù)庫提供商在基本數(shù)據(jù)類型的基礎(chǔ)上創(chuàng)建了你實(shí)際需要的數(shù)據(jù)類型。對數(shù)值類型來說,它可以包括同名的數(shù)據(jù)類型,如INT、REAL,也包括為了滿足特定場合或者用途而創(chuàng)建的新數(shù)據(jù)類型。
?? 在我們的下一篇文章,我們將討論datetime和interval數(shù)據(jù)類型。
關(guān)鍵詞標(biāo)簽:類型,精度,數(shù)值,數(shù)據(jù),
相關(guān)閱讀 不良人3手游新手職業(yè)推薦-新手職業(yè)玩法介紹 跟我學(xué)SQL:九datetime和interval數(shù)據(jù)類型 跟我學(xué)SQL:六串行數(shù)據(jù)類型 mysql建表初步知識及字段類型 航海王熱血航線貝拉密怎么玩-航海王貝拉密教學(xué) 變形病毒的基本類型介紹
熱門文章 淺談JSP JDBC來連接SQL Server 2005的方法 SqlServer2005對現(xiàn)有數(shù)據(jù)進(jìn)行分區(qū)具體步驟 sql server系統(tǒng)表損壞的解決方法 MS-SQL2005服務(wù)器登錄名、角色、數(shù)據(jù)庫用戶、角色、架構(gòu)的關(guān)系
時間:2023-02-23 18:10:12
時間:2019-12-31 17:49:29
時間:2018-12-08 12:08:52
時間:2018-09-25 12:05:32
時間:2018-09-25 12:04:55
時間:2018-09-06 08:48:54
人氣排行 配置和注冊O(shè)DBC數(shù)據(jù)源-odbc數(shù)據(jù)源配置教程 如何遠(yuǎn)程備份(還原)SQL2000數(shù)據(jù)庫 SQL2000數(shù)據(jù)庫遠(yuǎn)程導(dǎo)入(導(dǎo)出)數(shù)據(jù) SQL2000和SQL2005數(shù)據(jù)庫服務(wù)端口查看或修改 修改Sql Server唯一約束教程 SQL Server 2005降級到2000的正確操作步驟 sql server系統(tǒng)表損壞的解決方法 淺談JSP JDBC來連接SQL Server 2005的方法