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

SQL 研討 類似的數據類型

編輯:MSSQL

SQL 研討 類似的數據類型。本站提示廣大學習愛好者:(SQL 研討 類似的數據類型)文章只能為提供參考,不一定能成為您想要的結果。以下是SQL 研討 類似的數據類型正文


最經常使用的數值類型是int,然則它未必是最好選擇。bigint,smallint,tinyint可以運用在特別場所。他們的特征以下表所示:

Data type Range Storage

bigint

-2^63 (-9,223,372,036,854,775,808) to 2^63-1 (9,223,372,036,854,775,807)

8 Bytes

int

-2^31 (-2,147,483,648) to 2^31-1 (2,147,483,647)

4 Bytes

smallint

-2^15 (-32,768) to 2^15-1 (32,767)

2 Bytes

tinyint

0 to 255

1 Byte

可見假如某一列的值只要10來個值,而你卻用了int,那末沒行數據多占用了3個字節。假如有1G的行數,那末你多用了3G的空間。假如它還在index中,ok,它又占用了不用要的3G。

與此相似的是Float和Real,他們的格局以下:

Data type Range Storage

float

- 1.79E+308 to -2.23E-308, 0 and 2.23E-308 to 1.79E+308

Depends on the value of n

1,24=4 bytes

25,53=8bytes

real

- 3.40E + 38 to -1.18E - 38, 0 and 1.18E - 38 to 3.40E + 38

4 Bytes

須要解釋的是,float的長度取決於一個參數,固然我們平日聲明的時刻其實不指定float的長度,現實上是存在如許的選項的。這個長度默許是53,數值規模如上表所示。

明顯假如你要表現的數字不會跨越10的38次方的話,你應當用real,他可認為你節儉4個字節。

另外一個相干的例子是decimal和numerical,他們是另外一組准確表現數值的類型。float和real是不准確的,所以不克不及做相等的比擬。

decimal和float在功效是等價的,為何要分紅兩個名字,我也不清晰。

decimal的聲明以下:decimal(p,s),p表現總共若干位,包含小數點前後的數字,s表現小數點後若干位,p不克不及跨越38,固然s不克不及跨越p,缺省是0。

decimal的規模是正負10的p-s次方的成果 減去10的-s次方。好比decimal(2,1)的規模是正負9.9。

decimal的長度和p的年夜小相干,以下表所示:

Precision Storage bytes

1 - 9

5

10-19

9

20-28

13

29-38

17

可以使用變長字節來寄存decimal。此時數據庫依據現實數值的年夜小來寄存decimal,而不是依據聲明來斷定。假如表中沒有var length的列,那末須要額定的兩個字節,不然不會有額定的須要。

可以經由過程以下的敕令啟動一個數據庫上的變長decimal存儲:

EXEC sp_db_vardecimal_storage_format 'AdventureWorks', 'ON' ;

經由過程EXEC sp_db_vardecimal_storage_format ;檢查一切啟動了這一功效的數據庫。

經由過程EXEC sp_tableoption 'Sales.SalesOrderDetail', 'vardecimal storage format', 1 ;

啟動對某個表的變長decimal存儲。

最初再看看datetime和smalldatetime,二者都表現時光,差別以下:

datetime表達的時光更久,1753到9999,精度更高,300分之一秒,占用8個字節;

smalldatetime表達的時光較短,1900到2079,准確到分,4個字節。

平日情形下,smalldatetime是夠用的。

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