欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

mysql字段类型

程序员文章站 2022-05-26 15:16:57
学习自 https://www.cnblogs.com/jennyyin/p/7895010.html,感谢原博主的奉献 mysql支持多种类型,大致可以分为三类:数值、字符串、日期/时间。 数值类型类型 大小 范围(有符号) 范围(无符号) 用途tinyint 1字节 (-128, 217) (0 ......

学习自 https://www.cnblogs.com/jennyyin/p/7895010.html,感谢原博主的奉献

mysql支持多种类型,大致可以分为三类:数值、字符串、日期/时间。

数值类型
类型 大小 范围(有符号) 范围(无符号) 用途
tinyint 1字节 (-128, 217) (0,255) 小整数值
smallint 2字节 (-32768,32768) (0,65535) 大整数值
mediumin 3字节 (-8388608,8388607) (0,16777215) 大整数值
int或integer 4字节 (-2147483648,2147483647) (0,4294967295) 大整数值
bigint 8字节 (-9233372036854775808,9223372036854775807) (0,18446744073709551615) 极大整数值
float 4字节 (-3.402823466e+38,-1.175494351e-38),0,(1.175494351e-38,3.402823466351e+38) 0,(1.175494351e-38,3.402823466e+38) 单精度浮点数值
double 8字节 (-1.7976931348623157e+308,-2.2250738585072014e-308),0,(2.2250738585072014e-308,1.7976931348623157e+308) 0,(2.2250738585072014e-308,1.7976931348623157e+308) 双精度浮点数值


字符串
字符串类型指char、varchar、binary、varbinary、blob、text、enum和set。
char和varchar:
1.char(n)若存入字符数小于n,则以空格补于其后,查询时再将空格去掉。所以char类型存储的字符串末尾不能有空格,varchar不限于此。
2.char(n)固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),所以varchar(4),存入3个字符将占用4个字节。
3.char类型的字符串检索速度要比varchar快。

简单的总结来说,mysql中获取字符串长度的有两个函数:
length:返回字符串所占的字符数,是计算字段的长度一个汉字是算三个字符,一个数字或字母算一个字符
char_length:返回字符串所占的字符数,不管汉字还是数字或者是字母都算是一个字符

varchar和text:
1.varchar可指定n,text不能指定,内部存储varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),text是实际字符数+2个字节
2.text类型不能有默认值
3.varchar可直接创建索引,text创建索引要指定前多少个字符。varchar查询速度快于text,在都创建索引的情况下,text的索引似乎不起作用。

enum和set:
1.enum单选字符串类型,设定时需要给定几个选项,存储时只存储其中一个值。设定enum格式:enum('选项1','选项2','选项3',...)。实际上enum的选项都会对应一个数字,依次是1,2,3...,最多有65535个选项。
2.set多选字符串类型,设定时需要给定几个选项,存储时可以存储若干个值。设定set格式:set('选项1','选项2','选项3',...)。set的每个选项也对应一个数字,依次是1,2,4,8,16...,最多有64个选项,使用时可以是选项字符串本身(多个选项用逗号分隔),也可以使用多个选项数字之和(比如:1+2+4=7)


类型
char 0-255字节 定长字符串
varchar 0-65535字节 变长字符串
tinyblob 0-255字节 不超过255个字符的二进制字符串
tinytext 0-255字节 短文本字符串
blob 0-65535字节 二进制形式的长文本数据
text 0-65535字节 长文本数据
mediumblob 0-16777215字节 二进制形式的中等长度文本数据
mediumtext 0-16777215字节 中等长度文本数据
longblob 0-4294967295字节 二进制形式的极大文本数据
longtext 0-4294967295字节 极大文本数据


日期时间类型
表示时间值的日期和时间类型为datetime、date、timestamp、time和year。

date 3字节 1000-01-01/9999-12-31 yyyy-mm-dd 日期值
time 3字节 '-838:59:59'/'838:59:59' hh:mm:ss 时间值或持续时间
year 1字节 1901/2155 yyyy 年份值
datetime 8字节 1000-01-01 00:00:00/9999-12-31 23:59:59 yyyy-mm-dd hh:mm:ss 混合日期和时间值
timestamp 4字节 1970-01-01 00:00:00/2038 结束时间2038年 yyyymmdd hhmmss 混合日期和时间值,时间戳


二进制
布尔:bit
bit表示1个二进制位
bit(8)表示8个二进制位
性别可以定义为0,1,而不使用male或female字符串
数据逻辑删除
车在车库的停放状态
所有基于两种状态的数据都可以用0,1来存储