列類(lèi)型學(xué)習(xí)
mysql 三大列類(lèi)型
整型
?Tinyint/?smallint/?mediumint/int/?bigint(M)?unsigned?zerofill
字符串型 ?
Char(M)
Varchar(M)
Text? 文本類(lèi)型
?
日期時(shí)間類(lèi)型
Date? 日期
Time? 時(shí)間
Datetime? 時(shí)間時(shí)間類(lèi)型
Year? 年類(lèi)型
整形:
整型系列所占字節(jié)與存儲(chǔ)范圍的關(guān)系 .
定性 :? 占字節(jié)越多 , 存儲(chǔ)范圍越大 .
下圖 :? 是具體的數(shù)字分析
?
Tinyint?1 個(gè)字節(jié)? 8 個(gè)位?? 0?-?2^8-1??,??0-255
????????????????-2^7?---->?+2^7-1
?
?
分析 :
Smallint?2 個(gè)字節(jié)? ,?16 位?? 0----2^16-1?=?65535
????????????????-2^15?--->?+2^15-1,?-32768?->?32767
?
一般而言 , 設(shè)某類(lèi)型? N 字節(jié)
N 字節(jié)? ,?8N 位 .
0?---->?2^8N-1
?
-2^(8N-1)??--->?+2^(8N-1)?-1;?
?
對(duì)于 int 型? :? 占的字節(jié)越多 , 存儲(chǔ)的范圍也越大 .

整型系統(tǒng)的可選參數(shù)? :?XXint(M)??unsigned?zerofill
例 :?age?tinyint(4)?unsigned?, 或者?? stunum?smallint(6)?zerofill;
Unsigned:? 代表此列為無(wú)符號(hào)類(lèi)型 ,? 會(huì)影響到列的存儲(chǔ)范圍 .?( 范圍從 0 開(kāi)始 )
( 不加 unsinged,? 則該列默認(rèn)是有符號(hào)類(lèi)型 , 范圍從負(fù)數(shù)開(kāi)始 )
?
?
?
Zerofill:? 代表 0 填充 ,? 即 :? 如果該數(shù)字不足參數(shù) M 位 ,? 則自動(dòng)補(bǔ) 0,? 補(bǔ)夠 M 位 .
1:? 如果沒(méi)有 zerofill 屬性 ,? 單獨(dú)的參數(shù) M, 沒(méi)有任何意義 .
2: 如果設(shè)置某列為 zerofill, 則該列已經(jīng)默認(rèn)為? unsigned, 無(wú)符號(hào)類(lèi)型 .

小數(shù)型
?
Float(M,D),decimal(M,D)
??M 叫 " 精度 "?----> 代表 " 總位數(shù) ", 而 D 是 " 標(biāo)度 ", 代表小數(shù)位 .( 小數(shù)右邊的位數(shù) )
?
?
浮點(diǎn)數(shù)占多大的空間呢
答: float 能存 10 ^38 , 10^-38
如果 M<=24,? 點(diǎn) 4 個(gè)字節(jié) , 否則占 8 字節(jié)
?
用來(lái)表示數(shù)據(jù)中的小數(shù) , 除了 float--- 浮點(diǎn) .
還有一種叫定點(diǎn) decimal, 定點(diǎn)是把整數(shù)部分 ,? 和小數(shù)部分 , 分開(kāi)存儲(chǔ)的 .
比 float 精確 , 他的長(zhǎng)度是變化的 .
?
?
?
空間上的區(qū)別 :
Float(M,D),?M<=24,?4 個(gè)字節(jié) ,?24?<M?<=53,?8 個(gè)字節(jié)
Decimal?()?, 變長(zhǎng)字節(jié) .
?
區(qū)別 :?decimal 比 float 精度更高 ,? 適合存儲(chǔ)貨幣等要求精確的數(shù)字 ,
見(jiàn)下例 :

字符串性:
Mysql? 字符串類(lèi)型
Char? 定長(zhǎng)類(lèi)型
Char(M)??,?M? 代表寬度 ,?0<=M<=255 之間
例 :Char(10)??, 則能輸入 10 個(gè)字符 .
?
Varchar? 變長(zhǎng)類(lèi)型
Varchar(M),?M 代表寬度 ,?0<=M<=65535( 以 ascii 字符為例 ,utf822000 左右 )
0000000000
00\0\0\0\0\0?(char 型 , 如果不夠 M 個(gè)字符 , 內(nèi)部用空格補(bǔ)齊 , 取出時(shí)再把 右側(cè)空格 刪掉 )??
注 : 這意味著 , 如果右側(cè)本身有空格 , 將會(huì)丟失 .
通過(guò)concat函數(shù)可以驗(yàn)證!
M 代表字符長(zhǎng)度,和是否是漢字和字母無(wú)關(guān)。
Blob, 是二進(jìn)制類(lèi)型 , 用來(lái)存儲(chǔ)圖像 , 音頻等二進(jìn)制信息 .
意義 :?2 進(jìn)制 ,0-255 都有可能出現(xiàn) .
Blob 在于防止因?yàn)樽址膯?wèn)題 , 導(dǎo)致信息丟失 .
比如 : 一張圖片中有 0xFF 字節(jié) ,? 這個(gè)在 ascii 字符集認(rèn)為非法 , 在入庫(kù)的時(shí)候 , 被過(guò)濾了 .
enum選擇一個(gè),set選擇多個(gè)
日期時(shí)間類(lèi)型
Year? 年 (1 字節(jié) )????95/1995,??[1901-2155],
在 insert 時(shí) , 可以簡(jiǎn)寫(xiě)年的后 2 位 , 但是不推薦這樣 .
[00-69]?+2000
[70-99]?+?1900,???
即 :? 填 2 位 , 表示? 1970?-?2069
?
Date? 日期?? 1998-12-31
范圍 :?1000/01/01?,9999/12/31
?
Time? 時(shí)間?? 13:56:23
范圍 :?-838:59:59?-->838:59:59
datetime?
時(shí)期時(shí)間??
1998-12-31?13:56:23
范圍 :?1000/01//01?00:00:00??--->?9999:12:31?23:59:59
?
timestamp
?
時(shí)間戳 :?
是 1970-01-01?00:00:00? 到當(dāng)前的秒數(shù) .?
一般存注冊(cè)時(shí)間 , 商品發(fā)布時(shí)間等 , 并不是用 datetime 存儲(chǔ) , 而是用時(shí)間戳 .
因?yàn)? datetime 雖然直觀 , 但計(jì)算不便 .
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
