mysql之旅-數(shù)據(jù)類型

mysql數(shù)據(jù)類型


[toc]

粗談

粗談這里不會(huì)做詳細(xì)介紹,僅僅是點(diǎn)到即止,具體詳細(xì)內(nèi)容在下面的細(xì)談里再做詳細(xì)介紹。如果不愿花太多時(shí)間,僅僅是想了解個(gè)大概可以看粗談。

mysql的數(shù)據(jù)類型可三大類:數(shù)值型字符串型日期時(shí)間型

數(shù)值型

整數(shù)型小數(shù)型(廢話~)

  • 整數(shù)型tinyint、smallint、mediumint、intbigint

  • 小數(shù)型:浮點(diǎn)型(float、double)和定點(diǎn)型(decimal

字符串型

mysql中的字符串類型有char(定長(zhǎng)字符串)、varchar(可變長(zhǎng)字符串)、text(字符串文本)、blob(二進(jìn)制文本)、enum(枚舉)、set(集合)

日期時(shí)間型

mysql中的日期時(shí)間型有五種:

  • datetime(年月日時(shí)分秒)
  • datestamp(時(shí)間戳)
  • date(年月日)
  • time(時(shí)分秒)
  • year(年)

據(jù)說(shuō)不如php的時(shí)間戳強(qiáng)大~~

細(xì)談

數(shù)值型

整數(shù)型

  1. tinyint:占用1個(gè)字節(jié)
  2. smallint:占用2個(gè)字節(jié)
  3. mediumint:占用3個(gè)字節(jié)
  4. int:占用4個(gè)字節(jié)
  5. bigint:占用8個(gè)字節(jié)

一般的,tinyint與int較為常用

小數(shù)型
相關(guān)用法:float(M,D) M表示總長(zhǎng)度,D表示小數(shù)點(diǎn)部分的長(zhǎng)度。

mysql>create table mytable(a float(10,2))charset utf8; 

double和decimal與此類似;

  1. 浮點(diǎn)型:
  • float:占用4個(gè)字節(jié),最大有效位為7位左右。
  • double:占用8個(gè)字節(jié),最大有效位為15位左右。
  1. 定點(diǎn)型:decimal

浮點(diǎn)型容易丟失精度。因此對(duì)精確度高的地方不用浮點(diǎn)型(比如與錢有關(guān)的地方),而是用定點(diǎn)型。

字符串型

char:固定長(zhǎng)度字符串。磁盤會(huì)分配固定長(zhǎng)度的空間去存儲(chǔ)數(shù)據(jù),如 數(shù)據(jù)不夠長(zhǎng)度,空間依然占用。
varchar:可變長(zhǎng)度字符串。會(huì)使用1~2個(gè)字節(jié)來(lái)保存實(shí)際長(zhǎng)度。
text:字符串文本??纱鎯?chǔ)64M字節(jié)數(shù)的文本,要使用10個(gè)字節(jié)來(lái)保存實(shí)際長(zhǎng)度。
blob:二進(jìn)制文本。
enum:枚舉。列出一系列的元素,可以在這些元素中任選一個(gè)作為元素的值(單選框)。使用2個(gè)字節(jié)來(lái)保存數(shù)據(jù),能夠保存65535個(gè)數(shù)據(jù),是因?yàn)槊杜e實(shí)際保存的是數(shù)值,而不是字符串本身。
set:集合。列出一系列的袁術(shù),可以在這些元素中選擇一個(gè)或多個(gè)作為元素的值(復(fù)選框)。集合使用8個(gè)字符保存數(shù)據(jù),和枚舉一樣保存的是數(shù)值,集合定義的數(shù)據(jù)類型里面出現(xiàn)的元素最多個(gè)數(shù)為64個(gè)。

證明enum和set保存的是數(shù)值:  
create database mydatabase; -- 創(chuàng)建一個(gè)mydatabase數(shù)據(jù)庫(kù)
mysql> use mydatabase; -- 進(jìn)入mydatabase數(shù)據(jù)庫(kù)中
-- 創(chuàng)建一個(gè)mytable表
create table mytable(
animal enum('貓','狗','豬') -- enum類型animal列
)charset utf8;
insert into mytable values('狗');  -- 插入數(shù)據(jù)
select animal + 0 from mytable; -- 用數(shù)學(xué)運(yùn)算講其顯示。

其他:

  • charvarchar的使用:
  1. 所有字符串長(zhǎng)度必須小于255
  2. 如果字符串長(zhǎng)度固定,那么使用char;否則使用varchar
  3. char效率高,varchar節(jié)省空間
  • enumset都保存的是數(shù)值而不是字符串,因此較為節(jié)省空間。插入時(shí)也能夠使用數(shù)值插入。

日期時(shí)間型

  • datatime:表示年月日 時(shí)分秒,占用8個(gè)字節(jié)。
  • datastamp:時(shí)間戳,使用標(biāo)準(zhǔn)整型存儲(chǔ),實(shí)際卻是年月日 時(shí)分秒,占用4個(gè)字節(jié)。
  • data:表示年月日,占用3個(gè)字節(jié)。
  • time:時(shí)間部分,表示一個(gè)時(shí)間段,占用3個(gè)字節(jié)。
  • year:年,占用1個(gè)字節(jié)。

附:在mysql中,任意一條記錄,所有字段的集合的長(zhǎng)度不超過(guò)65535個(gè)字節(jié)。所有的字段沒(méi)有全部不允許null,那么null會(huì)占用一個(gè)字節(jié)來(lái)保存。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容