mysql字段类型菜鸟_mysql字段类型

学习自 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来存储

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值