字段數據類型分為三類:數值型、字符串型和時間日期型。
數字類型:
整數:
tinyint(1 byte->;-128 —— 127 ) tinyint無符號(0–255)
smallint(2B-& gt;-32768~32767)小整數(0–65535)
int(4字節->;-2^31 – 2^31-1 ),
bigint(8字節)
浮點數:
Decimal( 64位)比float( 4B)更準確,float缺乏準確性。
雙(8B)
十進制(m,n)
Float( m,n ):m代表總長度,n代表小數位數。
例如:float(4,2) -99.99 — 99.99
float(4,2)無符號0–99.99
字符串類型:
壹個漢字和壹個英文字母都代表壹個字符。
Char(M):定長字符串,M的最大值為255,單位為字符。
Varchar(M):非定長字符串M的最大值是65532,mysql規定壹行的長度不能超過65535字節,其中1–3字節用來描述字符串的長度。
定長串檢索效率高,空間利用率低;(身份證號、手機號、銀行卡號等字段)
變長字符串檢索效率低,空間利用率高(名稱壹般定義為20,地址等字段)
文本:大文本
時間類型:
日期:日期類型yyyy-mm-dd:年月日3個字節。
DATETIME:日期類型YYYY-MM-DD HH:mm:ss年月日小時分秒8個字節。
時間戳:時間戳日期類型YYYY-MM-DD HH:mm:ss 4字節。
每當插入或更新數據時,當前時間會自動填充,無需用戶插入。
自1970-1-1 00:00:01以來的秒數。
復合類型:
枚舉:ENUM表示單項選擇。
枚舉('選項1 ','選項2 ','選項3 '...),最後只存儲壹個特定項。
設置:設置
設置('選項1 ','選項2 ','選項3 '...)終於可以存儲多個選項了。
檢索由集合set指定的選項find_in_set(' option to query ',set set set)。
例如:select * from[table _ name]where find _ in _ set(' sleep ',[set _ name]);
關於varchar(len),len),len有多大,這個Len值和表的編碼密切相關:
Varchar length可以指定為0到65535之間的值,但是記錄數據大小有1-3個字節,所以有效字節數是65532。當我們表的編碼是utf8時,varchar(n)的參數n的最大值是65532/3=21844【因為在utf中,壹個字符占用三個字節】。如果編碼是gbk,那麽varchar(n)的參數n的最大值是65532/2=32766(因為在gbk中,
char和varchar的區別:
Char適用於固定長度的數據。
如果數據長度改變,使用varchar。
固定長度的磁盤空間很浪費,但是很有效率。
可變長度磁盤空間更經濟,但效率低。