3.mysql數據類型選擇

1.數據庫設計範式

1NF:列不可分。每一列都是不可分割的基本數據項


2NF:1NF的基礎上面,非主屬性完全依賴於主關鍵字


3NF:屬性不依賴於其它非主屬性 , 消除傳遞依賴

2.數據庫字段選擇

各類型取值範圍:(爲總長度,d爲小數位數)

bit          m爲每一個值所佔的位數,範圍1-64,默認1

tinyint    unsigned 取值0 to 255,signed 取值-128 to 127

bool,Boolean     同tinyint(1),0爲false,非0爲true

smallint          unsigned 取值0 to 65535,signed取值-32768 to 32767

medumint     unsigned 取值 0 to 16777215.signed 取值 -8388608 to 8388607.

int                  unsigned 取值 0 to 4294967295signed-2147483648 to 2147483647.

bigint            unsigned:  0 to18446744073709551615,signed -9223372036854775808 to9223372036854775807.

decimal(m,d)        m爲值的總長度,默認爲10,最大65;d爲小數位數,默認爲0,最大30
float(m,d)         signed   -3.402823466E+38 to -1.175494351E-380, unsigned 1.175494351E-38 to3.402823466E+38
doublem,d)    signed1.7976931348623157E+308 to -2.2250738585072014E-3080, unsigned2.2250738585072014E-308 to 1.7976931348623157E+308.
floatp             p0-24 將以float處理,25-53將以double處理

時間日期   默認以0格式表示,第一行timestamp默認爲當前時間

date               '1000-01-01' to '9999-12-31'

datetime        '1000-01-01 00:00:00' to '9999-12-31 23:59:59'

timestamp    '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC.

time              '-838:59:59' to '838:59:59'.

YEAR[(2|4)]   2 70 to 69     4:  1901 to 2155,

        字符串   默認爲空,enum列默認爲第一個值

char(m)    定長,m最大值255,默認爲1。可設爲char(0):存放null和空值

varchar(m)  不定長,m最大值65535

binary(m)   定長二進制

varbinary(m) 不定長二進制

tinyblob     最大值255字節

blob(m) 最大65535字節,使用2字節來記錄字節數

mediumblob 最大1677725字節,3字節記錄長度

longblob     最大4G字節,由參數和可用內存控制,使用4字節記錄長度

tinytext      最大255字符,由具體字符集控制,使用一個字節來記錄字節數

text       最大65535字符,由具體字符集控制,使用2個字節來記錄字符數

mediumtext 最大1677725字符,由具體字符集控制,使用3個字節來記錄字符數

longtext   最大4G字符,由具體字符集控制,使用4個字節來記錄字符數

enum     mysql內部用數值存儲,最大可存儲65535個值,每個值有且只能有enum中一個值

set      每個值爲set的真子集,也可爲0。最大可以有64個成員。mysql 內部使用數值存儲


3.結論

    • 經常變化的字段用varchar;
    • 知道固定長度的用char;
    • 儘量用varchar;
    • 超過255字節的只能用varchar或者text;
    • 能用varchar的地方不用text;
    • 能夠用數字類型的字段儘量選擇數字類型而不用字符串類型的(電話號碼),這會降低查詢和連接的性能,並會增加存儲開銷。這是因爲引擎在處理查詢和連接回逐個比較字符串中每一個字符,而對於數字型而言只需要比較一次就夠了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章