SQL 研討 類似的數據類型。本站提示廣大學習愛好者:(SQL 研討 類似的數據類型)文章只能為提供參考,不一定能成為您想要的結果。以下是SQL 研討 類似的數據類型正文
最經常使用的數值類型是int,然則它未必是最好選擇。bigint,smallint,tinyint可以運用在特別場所。他們的特征以下表所示:
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,他們的格局以下:
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的年夜小相干,以下表所示:
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是夠用的。