(002)mysql支持的數(shù)據(jù)類型總結(jié)

概述

mysql支持的數(shù)據(jù)分為3部分:

  • 數(shù)值類型
  • 日期時(shí)間類型
  • 字符串類型

先扔一張大圖做總結(jié)

mysql支持?jǐn)?shù)據(jù)類型總結(jié)

數(shù)值類型

MySQL支持所有標(biāo)準(zhǔn)的SQL中的數(shù)值類型

1.整型數(shù)值

整數(shù)類型 字節(jié)數(shù) 最小值 ~ 最大值
tinyint 1 -128~127 或 0-255
smallint 2 -32768~32767 或 0~65535
mediumint 3 -8388608~8388607 或 0~1677215
int 4 -2147483648~2147483647 或 0~4294967295
bigint 8 -9223372036854775808~9223372036854775807 或 0~18446744073709551615
  • 對(duì)于整型數(shù)值,mysql支持在類型名稱后面的小括號(hào)內(nèi)指定顯示寬度,例如int(5)表示當(dāng)數(shù)值寬度小于5位時(shí)候在數(shù)值前面填滿寬度,一般配合zerofill屬性使用。
  • 如果一個(gè)列指定為zerofill,則MySQL自動(dòng)為該列添加unsigned屬性。
  • 整型的auto_increment用于產(chǎn)生唯一標(biāo)識(shí)符或順序值。

2.浮點(diǎn)數(shù)類型

浮點(diǎn)數(shù)類型 字節(jié)數(shù) 最小值~最大值
float 4 ±1.175494351E-38 ~ ± 3.402823466E+38
double 8 ±2.2250738585072014E-308 ~ ±1.7976931348623157E+308

3.定點(diǎn)數(shù)類型

定點(diǎn)數(shù)類型 字節(jié)數(shù) 描述
dec(m,d) m+2 最大取值范圍與double相同,給定decimal的有效值取值范圍由m和d決定

4.位類型

位類型 字節(jié)數(shù) 最小值~最大值
bit(m) 1~8 bit(1) ~ bit(64)
  • 小數(shù)點(diǎn)表示(浮點(diǎn)數(shù)和定點(diǎn)數(shù)),定點(diǎn)數(shù)(dec)在MySQL內(nèi)部以字符串形式存放,比浮動(dòng)數(shù)更加精確,適合用來表示貨幣等精度高的數(shù)據(jù)。
  • 浮點(diǎn)數(shù)和定點(diǎn)數(shù)可以用在類型名后面加“(m,d)”來表示,其意義為一共顯示m位數(shù)字,其中d位位于小數(shù)點(diǎn)后面,m和d又稱為精度標(biāo)度。
  • 浮點(diǎn)數(shù)不寫m,d,會(huì)自動(dòng)四舍五入;定點(diǎn)數(shù)不寫m,d,按照默認(rèn)值dec(10,0)來操作。
  • bit 直接select看不到結(jié)果的,可以用bin()或hex()進(jìn)行讀取。
  • 在數(shù)據(jù)量較大時(shí)、建議把實(shí)數(shù)類型轉(zhuǎn)為整數(shù)類型。原因很簡(jiǎn)單:1. 浮點(diǎn)不精確;2.定點(diǎn)計(jì)算代價(jià)昂貴。例如:要存放財(cái)務(wù)數(shù)據(jù)精確到萬(wàn)分之一、則可以把所有金額乘以一百萬(wàn)、然后存在BIGINT下。
  • 圖片:
    數(shù)值類型

日期時(shí)間類型

時(shí)間日期類型 字節(jié)數(shù) 最小值~最大值
date 4 1000-01-01 ~ 9999-12-31
datetime 8 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
timestamp 4 19700101080001 ~ 2038年某個(gè)時(shí)刻
time 3 -838:59:59 ~ 838:59:59
year 1 1901 ~ 2155
  • mysql中用now()寫入當(dāng)前時(shí)間。

字符串類型

字符串類型 字節(jié)數(shù) 描述
char(m) m m為0 ~ 255之間的整數(shù)
varchar(m) 值長(zhǎng)度+1 m為0~65535之間的整數(shù)
tinytext 值長(zhǎng)度+2 允許長(zhǎng)度0~255字節(jié)
text 值長(zhǎng)度+2 允許長(zhǎng)度0~65535字節(jié)
mediumtext 值長(zhǎng)度+3 允許長(zhǎng)度0~167772150字節(jié)
longtext 值長(zhǎng)度+4 允許長(zhǎng)度0~4294967295字節(jié)
- - -
binary(m) m 允許0~m個(gè)字節(jié)定長(zhǎng)的字符串
varbinary(m) 值長(zhǎng)度+1 允許0~m個(gè)字節(jié)變長(zhǎng)的字符串
tinyblob 值長(zhǎng)度+1 允許長(zhǎng)度0~255字節(jié)
blob 值長(zhǎng)度+2 允許長(zhǎng)度0~65535字節(jié)
mediumblob 值長(zhǎng)度+3 允許長(zhǎng)度0~167772150字節(jié)
longblob 值長(zhǎng)度+4 允許長(zhǎng)度0~4294967295字節(jié)
- - -
enum 1或2 1255個(gè)成員需要1個(gè)字節(jié)存;25565535個(gè)成員,2個(gè)字節(jié)存
set 1/2/3/4/8 類似enum,set一次可以選取多個(gè)成員,而enum只能一個(gè)
  • char會(huì)刪除字符串尾部的空格,varchar不會(huì)。
  • binary類似于char,binary只能保存二進(jìn)制字符串。
  • enum類型忽略大小寫。
  • text與blob區(qū)別:blob保存二進(jìn)制數(shù)據(jù);text保存字符數(shù)據(jù),有字符集。
  • text和blob不能有默認(rèn)值。
  • 圖片:
    字符串

選擇合適的數(shù)據(jù)類型

  1. char是固定長(zhǎng)度,所以它的處理速度比varchar快得多,但缺點(diǎn)是浪費(fèi)存儲(chǔ)空間,不能在行尾保存空格。在MySQL中,MyISAM建議使用固定長(zhǎng)度代替可變長(zhǎng)度列;InnoDB建議使用varchar類型,因?yàn)樵贗nnoDB中,內(nèi)部行存儲(chǔ)格式?jīng)]有區(qū)分固定長(zhǎng)度和可變長(zhǎng)度。
  2. text與blob主要區(qū)別是text用來保存字符數(shù)據(jù)(如文章,日記等),blob用來保存二進(jìn)制數(shù)據(jù)(如照片等)。blob與text在執(zhí)行了大量刪除操作時(shí)候,有性能問題(產(chǎn)生大量的“空洞“),為提高性能建議定期optimize table 對(duì)這類表進(jìn)行碎片整理。
  3. 定點(diǎn)與浮點(diǎn)數(shù),對(duì)于精度要求較高的地方,使用定點(diǎn)數(shù)。
  4. 日期選擇原則是根據(jù)實(shí)際需求選擇滿足應(yīng)用的最小存儲(chǔ)日期類型。

參考

1.《深入淺出MySQL數(shù)據(jù)庫(kù)開發(fā)、優(yōu)化與管理(第2版)》
2.http://www.qttc.net/201207121.html
3.http://www.cnblogs.com/aoguren/p/3202097.html(圖片來源)
4.http://blog.csdn.net/dba_waterbin/article/details/9006711(圖片來源)

最后編輯于
?著作權(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)容

  • 前面講了SQL優(yōu)化以及索引的使用、設(shè)計(jì)優(yōu)化了,那么接下來就到表的設(shè)計(jì)與優(yōu)化啦?。?!真實(shí)地去設(shè)計(jì)優(yōu)化單表結(jié)構(gòu)以及講述...
    JackFrost_fuzhu閱讀 4,328評(píng)論 2 28
  • 計(jì)算機(jī)誕生后,數(shù)據(jù)開始在計(jì)算機(jī)中存儲(chǔ)并計(jì)算,并設(shè)計(jì)出了數(shù)據(jù)庫(kù)系統(tǒng),數(shù)據(jù)庫(kù)系統(tǒng)解決的問題:持久化存儲(chǔ),優(yōu)化讀寫,保證...
    LittlePy閱讀 847評(píng)論 0 0
  • Mysql 基礎(chǔ) SQL分類: DDL—數(shù)據(jù)定義語(yǔ)言(create,alter,drop)DML—數(shù)據(jù)操縱語(yǔ)言(s...
    零一間閱讀 5,399評(píng)論 0 10
  • 本文基于MySQL5.6版本進(jìn)行描述從大的方面來講,MySQL的數(shù)據(jù)類型分為4種 數(shù)值類型 日期和時(shí)間 字符串類型...
    黑哥兒666閱讀 806評(píng)論 0 0
  • 回顧 數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí):關(guān)系型數(shù)據(jù)庫(kù)(磁盤)和非關(guān)系型數(shù)據(jù)庫(kù)(內(nèi)存) 關(guān)系型數(shù)據(jù)庫(kù):建立在關(guān)系模型上的數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)...
    翊溪閱讀 631評(píng)論 0 1

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