所谓的数据类型,也就是只在创建表时可以选择的列字段类型,在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集合类型可以选择多个选项(其实用的比较少,多数情况下都是直接在客户端中处理)。

1434

被折叠的 条评论
为什么被折叠?



