程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 跟我學SQL:數值數據類型

跟我學SQL:數值數據類型

編輯:關於SqlServer

SQL92標准定義了若干種基本數據類型,它們是SQL數據庫中各種數據類型的基礎。在《字符串數據類型》一文中,我們已經詳細討論了SQL92標准所定義的字符串數據類型。現在,我們來進一步討論數值數據類型。

你最好開始嘗試使用不同數據庫實現方法並在它們傳遞數據,這樣可以加深你對數值數據類型的理解。本文將給你一個數值數據類型的概要,你可以結合你的數據庫的文檔資料來學習。

在字符串、數值、datetime和interval這四種數據類型中,數值型的種類最多,約束也最多。在不同數據庫實現方法之間交換數據時,數值型的精度也最容易降低。Oracle和SQL服務器之間的實現分歧(同樣的數據類型長度不同)導致它們之間的數據傳遞過程會截短數字、改變它們的數值。因此,在移植程序前,你有必須很明確的了解兩個平台間的數據定義差異,以及危及數據精度的風險。

謹記上述警告後,讓我們看看SQL92標准的數值類型

基本數值類型

與數值有關的類型統稱為數值類型。所有的數值都有精度,精度指的是有效數字位數。有的數值還有標度值(scale value),它用來指示小數點右邊的最小有效數字位數。例如,數字1234.56的精度為6,標度值為2,可以定義為NUMERIC(6,2)。

每一個數據庫實現方法都有關於如何近似數值或者截短數值的規則。除了提供獲取數值長度和其它數值處理所需的屬性外,SQL92提供了內建函數,如加、減、乘、除等。所有的數值類型之間都可以互相比較、互相賦值。盡管實現方法不同,但是它們有一個的共同點,即它們的結果一般都保留最大精度。

NUMERIC

用法:NUMERIC(精度,標度值)

是一種精確數值類型,即它是數字的值的文字表示。(可以對該數字進行取捨或者截取以符合指定精度,標度值由預定義的規則確定。)

為了符合標度值指定的小數數字位數,捨去多余的小數部分,捨入過程采用十進制。

數字的總長度等於精度,如果標度值大於0(有小數部分),則長度加1。

小數部分的位數要符合標度值。

DECIMAL | DEC

用法:DECIMAL(精度,標度值) | DEC(精度,標度值)

是一種精確數值類型。

用十進制。

數字的總長度等於精度,如果標度值大於0(有小數部分),則長度加1。

小數部分的位數不得小於標度值,小數位數的上限由數據庫提供商設定。

INTEGER | INT

用法: INTEGER(精度)

是一種精確數值類型。

使用二進制或者十進制,這基於表示該數值的二進制位(bit)的個數(這是implementation-specific,與SMALLINT對應)。

標度值恆為0。

數據庫供應商對其定義了最大精度和最小精度。

供應商可能會提供的默認精度。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved