mysql支援很多字段型別,包括數值型別、日期/時間型別和字串(字元)型別;在使用時需要考慮到儲存空間,儲存效率;
幾種列型別描述使用了下述慣例:
m表示最大顯示寬度。最大有效顯示寬度是255。
d時間型別:datetime(8bytes),timestamp(4bytes)
字元型別:
varchar(m),l+1個位元組,其中l&lwww.cppcns.comt;= m且0 <=m<= 65535,不宜把m設定得過大,因為在記憶體中會計算實際長度,這個計算時需要消耗資源的;
char(m)m個位元組,0 <= m<= 255
binary(m),m個字程式設計客棧節,0 <= m <= 255
varbinary(m),l+1個位元組,其中l <= m且0<= m <= 255
enum('value1','value2',...),1或2個位元組,取決於列舉值的個數(最多65,535個值),調整比較複雜,需要先drop在create;在列舉值小於255時,佔1個位元組,大於255時佔2個位元組;
set('value1','value2',...)1、2、3、4或者8個位元組,取決於set成員的數目(最多64個成員),1-8佔1個位元組,9-16佔2個位元組,17-24佔3個位元組,25-32佔4個位元組,33-64佔8個位元組;
整型型別:
tinyint(8),乙個位元組
smallint(16),2個位元組
mediumint(24),3個位元組
int(32),4個位元組
bigint(64),8個位元組
實型型別:
float(4bytes)
float(m,d) 單精度浮點型,精確到小數點後面6位,雙精度double(m,d)精確到小數點後面13位;
float 記憶體如何儲存
型別程式設計客棧
儲存位數
總位數
偏移值數符(s)
階碼(e)
尾數(m)
(offset)
短實數(float)
1 8
23 32
127長實數(double)
1 11
52 64
1023
float怎麼儲存
n (10) = 123.456,
換算成二進位制表示:
n (2) = 1111011. 01110100101111001
= 1. 11101101110100101111001(...) * 2^6
那麼 e = 127 + 6 = 133(10) = 10000101(2)
m = 111 0110 1110 1001 0111 1001 (省略了最高數字位1, 共23bit)
組合起來就是:
s &nwww.cppcns.combsp; e m
0 10000101 111 0110 1110 1001 0111 1001
整型型別:
decimal(m,d)佔m+2個位元組,小數點和符號需要
各自佔乙個位元組;
decimal 可能的最大取值範圍與double 一樣
,但是其有效的取值範圍由m 和d 的值決定,存程式設計客棧蓄
的方式是字串;
decimal(m,d)佔m+2個位元組,小數點和符號需要各自佔乙個位元組;
decimal 可能的最大取值範圍與double 一樣,但是其有效的取值範圍由m 和d 的值決定,存蓄的方式是字串;
本文標題: 基於mysq欄位選擇的詳解
本文位址:
sqlite的字段型別選擇
下文來自 char varchar text和nchar nvarchar ntext的區別 1 char。char儲存定長資料很方便,char欄位上的索引效率級高,比如定義char 10 那麼不論你儲存的資料是否達到了10個位元組,都要占去10個位元組的空間,不足的自動用空格填充。2 varcha...
字段型別與合理的選擇字段型別
本篇部落格稍微有點長,它實際上包括兩個內容 一是mysql欄位型別的介紹,二是在mysql建表過程中是如何正確選擇這些字段型別 mysql 的數值資料型別可以大致劃分為兩個類別,乙個是整數,另乙個是浮點數或小數。許多不同的子型別對這些類別中的每乙個都是可用的,每個子型別支援不同大小的資料,並且 my...
字段型別與合理的選擇字段型別
mysql 的數值資料型別可以大致劃分為兩個類別,乙個是整數,另乙個是浮點數或小數。許多不同的子型別對這些類別中的每乙個都是可用的,每個子型別支援不同大小的資料,並且 mysql 允許我們指定數值字段中的值是否有正負之分 unsigned 或者用零填補 zerofill mysql 以乙個可選的顯示...