Mysql5.7版本中數據表字段可用的類型


https://blog.csdn.net/albertsh/article/details/94764106

支持類型
真是不查不知道,查詢后發現當前版本(5.7.21-log MySQL Community Server)支持的數據類型居然有40種,這還是超出我的想象的,以字典排序列舉在此方便查找:

bigint,binary,bit,blob,char,date,datetime,decimal,double,enum,float,geometry,geometrycollection,int,integer,json,linestring,longblob,longtext,mediumblob,mediumint,mediumtext,multilinestring,multipoint,multipolygon,numeric,point,polygon,real,set,smallint,text,time,timestamp,tinyblob,tinyint,tibytext,varbinary,varchar,year。

類型簡述

數字類型

  • BIT[(M)]

比特值類型,M默認為1,范圍是[1,64]。

  • TINYINT[(M)] [UNSIGNED] [ZEROFILL]

單字節整數,有符號時范圍是[-128,127],無符號時范圍是[0,255]。

  • BOOL, BOOLEAN

布爾值類型,需要注意的是創建表時如果指定這兩種類型會被自動轉為TINYINT類型,0代表false,非0代表true。

  • SMALLINT[(M)] [UNSIGNED] [ZEROFILL]

兩字節整數,有符號時范圍是[-32768,32767],無符號時范圍是[0,65535]。

  • MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]

三字節整數,有符號時范圍是[-8388608,8388607],無符號時范圍是[0,16777215],這個類型在編程語言中很少見。

  • INT[(M)] [UNSIGNED] [ZEROFILL]

四字節整數,有符號時范圍是[-2147483648,2147483647],無符號時范圍是[0,4294967295],與INTEGER等價。

  • BIGINT[(M)] [UNSIGNED] [ZEROFILL]

八字節整數,有符號時范圍是[-9223372036854775808,9223372036854775807],無符號時范圍是[0, 18446744073709551615]。

  • SERIAL

是BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE類型的別名,感覺可以直接拿來做主鍵。

  • DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]

用於存儲精確小數,M表示有效數字位數,范圍是[1,65],默認是10,D表示小數點后位數,范圍是[0,30],默認是0。

  • NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL]

是DECIMAL的別名,同樣含義的還有DEC[(M[,D])] [UNSIGNED] [ZEROFILL]、FIXED[(M[,D])] [UNSIGNED] [ZEROFILL]。

  • FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]

單精度浮點數,M表示有效數字位數,D表示小數點后位數,范圍有三部分[-3.402823466E+38,-1.175494351E-38],0,[1.175494351E-38,3.402823466E+38],該類型屬於Mysql自己的擴展,依賴硬件和操作系統,指定UNSIGNED表示禁用負數。

  • FLOAT§ [UNSIGNED] [ZEROFILL]

單精度浮點數,p用來表示精度,取值為0-24等價於沒有M和D的FLOAT,取值為25-53等價於沒有M和D的DOUBLE。

  • DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]

雙精度浮點數,表示有效數字位數,D表示小數點后位數,范圍有三部分[-1.7976931348623157E+308,-2.2250738585072014E-308],0,[2.2250738585072014E-308, 1.7976931348623157E+308],該類型屬於Mysql自己的擴展,依賴硬件和操作系統,指定UNSIGNED表示禁用負數。等價於DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL]。

  • REAL[(M,D)] [UNSIGNED] [ZEROFILL]

一般情況等價於DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL],但如果SQL mode指定了REAL_AS_FLOAT,那么它等價於FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]。

 

日期和時間類型

  • DATE

日期類型,展示格式為’YYYY-MM-DD’,支持的范圍是[‘1000-01-01’ , ‘9999-12-31’]。

  • DATETIME[(fsp)]

日期時間格式,展示格式為’YYYY-MM-DD hh:mm:ss[.fraction],支持范圍是[‘1000-01-01 00:00:00.000000’, ‘9999-12-31 23:59:59.999999’],fsp表示小數位數,默認是0,取值范圍是[0,6]。

  • TIMESTAMP[(fsp)]

時間戳,范圍是[‘1970-01-01 00:00:01.000000’ UTC, ‘2038-01-19 03:14:07.999999’ UTC],注意到起始秒數從1開始,是因為0被保留用來代表’0000-00-00 00:00:00’了,fsp表示小數位數,默認是0,取值范圍是[0,6]。

  • TIME[(fsp)]

時間類型,展示格式為 ‘hh:mm:ss[.fraction]’,支持的范圍是[’-838:59:59.000000’, ‘838:59:59.000000’],fsp表示小數位數,默認是0,取值范圍是[0,6]。

  • YEAR[(4)]

代表年份類型,展示格式為’YYYY’,支持的范圍是[1901, 2155]和0000。

 

字符串類型

  • [NATIONAL] CHAR[(M)] [CHARACTER SET charset_name] [COLLATE collation_name]
  • 固定長度的字符串,M表示字符串最大長度,范圍是(0,255],若實際長度不足M,實際串右側會填充空格,M默認為1。
  • [NATIONAL] VARCHAR(M) [CHARACTER SET charset_name] [COLLATE collation_name]
  • 可變長度的字符串,M表示字符串最大長度,范圍是(0, 65535],當存儲UTF8編碼中文時,一般需要3個字節存儲一個漢字。
  • BINARY[(M)]
  • 與CHAR類似,只是存儲的是二進制字節串而非普通的字符串。
  • VARBINARY(M)]
  • 與VARCHAR類似,只是存儲的是二進制字節串而非普通的字符串。
  • TINYBLOB
  • 字節串,最大長度是255。
  • TINYTEXT [CHARACTER SET charset_name] [COLLATE collation_name]
  • 字符串,最大長度是255。
  • BLOB[(M)]
  • 字節串,最大長度64K-1,若指定M,則會創建一個能存儲M字節最小的BLOB類型,比如TINYBLOB。
  • TEXT[(M)] [CHARACTER SET charset_name] [COLLATE collation_name]
  • 字符串,最大長度64K-1,若指定M,則會創建一個能存儲M字節最小的BLOB類型,比如TINYTEXT。
  • MEDIUMBLOB
  • 字節串,最大長度16M-1。
  • MEDIUMTEXT [CHARACTER SET charset_name] [COLLATE collation_name]
  • 字符串,最大長度16M-1。
  • LONGBLOB
  • 字節串,最大長度4G-1。
  • LONGTEXT [CHARACTER SET charset_name] [COLLATE collation_name]
  • 字符串,最大長度4G-1。
  • ENUM(‘value1’,‘value2’,…) [CHARACTER SET charset_name] [COLLATE collation_name]
  • 枚舉值,一個字符串代表一個值,內部通過整數實現,理論上最多可以有65535個不同的值,但實際上這個值小於3000。
  • SET(‘value1’,‘value2’,…) [CHARACTER SET charset_name] [COLLATE collation_name]
  • 集合,包含一組字符串,其內部還是呈現為一個整數,最大可以有64個不同的字符串對象。

特殊數據類型

  • Mysql提供了GEOMETRY、POINT、LINESTRING、POLYGON等特殊類型來與OpenGIS類一一對應,用來存儲一些圖形數據,同時還有MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、GEOMETRYCOLLECTION可以表示這些集合,我感覺我是沒機會用這些了,用到了再展開說吧。

Json數據類型

  • 自從Mysql5.7.8之后添加的一種類型,可以存儲{“k1”: “val”, “k2”: 110}形式的數據。

常用數據類型大小

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM