所谓的数据类型,也就是只在创建表时可以选择的列字段类型,在MySQL
中其实可以通过:
• help data types;
:查看当前版本支持的所有数据类型。如下(MySQL5.1
版本):数据类型
总体可分为数值类型、字符/串类型、时间/日期类型、其他类型四种,下面一起来聊聊吧。
1.1、数值类型
• tinyint
:小整数类型,占位1Bytes
,取值范围-128~127
。
• smallint
:中整数类型,占位2Bytes
,取值范围-32768~32767
。
• mediumint
:中大整数类型,占位3Bytes
,取值范围-8388608~8388607
。
• int | integer
:常用整数类型,占位4Bytes
,取值范围-2147483548~2147483647
。
• bigint
:超大整数类型,占位8Bytes
,取值范围-9223372036854775808~9223372036854775807
。
• float
:单精度浮点数类型,占位4Bytes
,取值范围-3.4E+38 ~ 3.4E+38
。
• double
:双精度浮点数类型,占位8Bytes
,取值范围-1.7E-308~1.7E+308
。
• decimal(m,d)
:小数类型,占位和取值范围都依赖m、d
值决定,m
是小数点后面的精度,d
是小数点前面的标度。
• bit(m)
:存储位值,可存储m
个比特位,取值范围是1~64
。
1.2、字符串类型
• char
:定长字符串类型,存储空间0~255Bytes
。
• varchar
:变长字符串类型,存储空间0~65535Bytes
。
• tinyblob
:二进制短字符串类型,存储空间0~255Bytes
。
• tinytext
:短文本字符串类型,存储空间0~255Bytes
。
• blob
:二进制长字符串类型,存储空间0~65535Bytes
。
• text
:长文本字符串类型,存储空间0~65535Bytes
。
• mediumblob
:二进制大字符串类型,存储空间0~16777215Bytes
。
• mediumtext
:大文本字符串类型,存储空间0~16777215Bytes
。
• longblob
:二进制超大字符串类型,存储空间0~4294967295Bytes
。
• longtext
:超大文本字符串类型,存储空间0~4294967295Bytes
。
• binary(m)
:定长字符串类型,存储空间为M
个字符。
• varbinary(m)
:定长字符串类型,存储空间为M
个字符+1
个字节。
一般在为列指定数据类型时,都会varchar(255)
这样写,其实中间的这个数字限制的并不是字节长度,而是字符数量,比如varchar(255)
,表示该列最大能存储255
个字符。
1.3、时间/日期类型
• date
:日期类型,占位3Bytes
,格式为YYYY-MM-DD
。
• time
:时间类型,占位3Bytes
,格式为hh:mm:ss
。
• year
:年份类型,占位1Bytes
,格式为YYYY
。
• datetime
:日期时间类型,占位8Bytes
,格式为YYYY-MM-DD hh:mm:ss
。
• timestamp
:时间戳类型,占位4Bytes
,格式为YYYYMMDDhhmmss
,最大可精确到微妙。
1.4、其他类型
• json
:MySQL5.7
版本引入的,在此之前只能用字符串类型来存储json
数据,需要通过函数辅助使用:
• json_array(...)
:存储一个json
数组的数据。
• json_array_insert(字段,'$[下标]',"值")
:在指定的json
数组下标位置上插入数据。
• json_object(...)
:存储一个json
对象。
• json_extract(字段,'$.键')
:查询键为某个值的所有数据。
• json_search(....)
:通过值查询键。
• json_keys(字段)
:获取某个字段的所有json
键。
• json_set(字段,'$.键',"值")
:更新某个键的json
数据。
• json_replace(...)
:替换某个json
中的数据。
• json_remove(字段,'$.键')
:删除某个json
数据。
:还有一些其他json
类型的函数,这里不再说明,一般json
类型用的较少。
• enum(选项1,选项2...选项n)
:新增数据时只能从已有的选项中选择一个并插入。
• set(选项1,选项2...选项n)
:新增数据时可以从已有的选项中选择多个并插入。
• eometry、point、linestring、polygon
:空间类型(接触不多)。
稍微解释一下enum、set
类型,这两种类型就类似于平时的单选框和多选框,必须从已有的选项中选择,两者的区别在于:enum
枚举类型只能选择一个选项,而set
集合类型可以选择多个选项(其实用的比较少,多数情况下都是直接在客户端中处理)。