mysql支持的數據類型總結

概述

mysql支持的數據分為3部分:

  • 數值類型
  • 日期時間類型
  • 字符串類型

先扔一張大圖做總結

mysql支持的數據類型總結

mysql支持數據類型總結

數值類型

MySQL支持所有標準的SQL中的數值類型

1.整型數值

整數類型 字節數 最小值 ~ 最大值 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 對於整型數值,mysql支持在類型名稱後面的小括號內指定顯示寬度,例如int(5)表示當數值寬度小於5位時候在數值前面填滿寬度,一般配合zerofill屬性使用。

如果一個列指定為zerofill,則MySQL自動為該列添加unsigned屬性。

整型的auto_increment用於產生唯一標識符或順序值。

2.浮點數類型

浮點數類型 字節數 最小值~最大值 float 4 ±1.175494351E-38 ~ ± 3.402823466E+38 double 8 ±2.2250738585072014E-308 ~ ±1.7976931348623157E+308 3.定點數類型

定點數類型 字節數 描述 dec(m,d) m+2 最大取值範圍與double相同,給定decimal的有效值取值範圍由m和d決定 4.位類型

位類型 字節數 最小值~最大值 bit(m) 1~8 bit(1) ~ bit(64) 小數點表示(浮點數和定點數),定點數(dec)在MySQL內部以字符串形式存放,比浮動數更加精確,適合用來表示貨幣等精度高的數據。

浮點數和定點數可以用在類型名後面加“(m,d)”來表示,其意義為一共顯示m位數字,其中d位位於小數點後面,m和d又稱為精度和標度。

浮點數不寫m,d,會自動四捨五入;定點數不寫m,d,按照默認值dec(10,0)來操作。

bit 直接select看不到結果的,可以用bin()或hex()進行讀取。

在數據量較大時、建議把實數類型轉為整數類型。原因很簡單:1. 浮點不精確;2.定點計算代價昂貴。例如:要存放財務數據精確到萬分之一、則可以把所有金額乘以一百萬、然後存在BIGINT下。

mysql支持的數據類型總結

數值類型

日期時間類型

時間日期類型 字節數 最小值~最大值 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年某個時刻 time 3 -838:59:59 ~ 838:59:59 year 1 1901 ~ 2155 mysql中用now()寫入當前時間。

字符串類型

字符串類型 字節數 描述 char(m) m m為0 ~ 255之間的整數 varchar(m) 值長度+1 m為0~65535之間的整數 tinytext 值長度+2 允許長度0~255字節 text 值長度+2 允許長度0~65535字節 mediumtext 值長度+3 允許長度0~167772150字節 longtext 值長度+4 允許長度0~4294967295字節 - - - binary(m) m 允許0~m個字節定長的字符串 varbinary(m) 值長度+1 允許0~m個字節變長的字符串 tinyblob 值長度+1 允許長度0~255字節 blob 值長度+2 允許長度0~65535字節 mediumblob 值長度+3 允許長度0~167772150字節 longblob 值長度+4 允許長度0~4294967295字節 - - - enum 1或2 1255個成員需要1個字節存;25565535個成員,2個字節存 set 1/2/3/4/8 類似enum,set一次可以選取多個成員,而enum只能一個 char會刪除字符串尾部的空格,varchar不會。

binary類似於char,binary只能保存二進制字符串。

enum類型忽略大小寫。

text與blob區別:blob保存二進制數據;text保存字符數據,有字符集。

text和blob不能有默認值。

mysql支持的數據類型總結

字符串

選擇合適的數據類型

char是固定長度,所以它的處理速度比varchar快得多,但缺點是浪費存儲空間,不能在行尾保存空格。在MySQL中,MyISAM建議使用固定長度代替可變長度列;InnoDB建議使用varchar類型,因為在InnoDB中,內部行存儲格式沒有區分固定長度和可變長度。

text與blob主要區別是text用來保存字符數據(如文章,日記等),blob用來保存二進制數據(如照片等)。blob與text在執行了大量刪除操作時候,有性能問題(產生大量的“空洞“),為提高性能建議定期optimize table 對這類表進行碎片整理。

定點與浮點數,對於精度要求較高的地方,使用定點數。

日期選擇原則是根據實際需求選擇滿足應用的最小存儲日期類型。

加Java架構師進階交流群獲取Java工程化、高性能及分佈式、高性能、深入淺出。高架構。性能調優、Spring,MyBatis,Netty源碼分析和大數據等多個知識點高級進階乾貨的直播免費學習權限 都是大牛帶飛 讓你少走很多的彎路的 群號是:883922439 對了 小白勿進 最好是有開發經驗

注:加群要求

1、具有工作經驗的,面對目前流行的技術不知從何下手,需要突破技術瓶頸的可以加。

2、在公司待久了,過得很安逸,但跳槽時面試碰壁。需要在短時間內進修、跳槽拿高薪的可以加。

3、如果沒有工作經驗,但基礎非常紮實,對java工作機制,常用設計思想,常用java開發框架掌握熟練的,可以加。

4、覺得自己很牛B,一般需求都能搞定。但是所學的知識點沒有系統化,很難在技術領域繼續突破的可以加。

5.阿里Java高級大牛直播講解知識點,分享知識,多年工作經驗的梳理和總結,帶著大家全面、科學地建立自己的技術體系和技術認知!


分享到:


相關文章: