【mysql】数据类型
使用 varchar类型,是需要多大的空间,就开辟多大空间,L只是限制了最大开辟的空间,所以不会造成空间浪费。],如果编码是gbk,varchar(n)的参数n最大是65532/2=32766(因为gbk中,一个字符。举例 : 设置 m = 4 , d = 2 , 有符号,则取值范围是 99.99 ~ -99.99。set('选项值1','选项值2','选项值3', ...);date :日期 '
1. 数据类型分类
2. 数值类型
(一)tinyint类型
验证有符号范围:
所以 tinyint 有符号范围是 :-128 ~ 127
注意:
- 在MySQL中,整型可以指定是有符号的和无符号的,默认是有符号的
- 可以通过 UNSIGNED 来说明某个字段是无符号的
验证无符号范围:
所以 tinyint 无符号范围是 :0 ~ 255
(二)bit类型
- bit[M]
位字段类型,单位:比特位。M表示每个值的位数,范围从1到64。如果M不写,默认为1
注意:
bit字段在显示时,是按照ASCII码对应的值显示
(三)小数类型
1 . float
- float[(m, d)] [unsigned]
M指定显示长度(最终存储数据的总长度),d指定小数位数,占用空间4个字节
举例 : 设置 m = 4 , d = 2 , 有符号,则取值范围是 99.99 ~ -99.99
超出范围的都会被拦截,则存储失败
注意:
- 只要不超出范围,则存储数据都是有效的
- 如果小数点后几位与 d 的大小一样,则采取四舍五入的方法,四舍五入之后的结果如果没有超出范围,则可以存储
- 数据过大,float 类型保留的数据会有精度缺失,正数部分和小数都可能不准
举例 : 设置 m = 4 , d = 2 , 无符号,则取值范围是 0 ~ -99.99
2 . decimal
- decimal(m, d) [unsigned]
定点数m指定长度(总长度),d表示小数点的位数
如:
decimal(5,2) 表示的范围是 -999.99 ~ 999.99
decimal(5,2) unsigned 表示的范围 0 ~ 999.99
注意:
- decimal 类型的精确更高
- decimal 整数最大位数 m 为 65 ,支持小数最大位数 d 是 30 ,如果d被省略,默认为 0 ,如果m被省略, 默认是 10
(三)字符串类型
1 . char 类型
- char(L)
固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255
注意:
- 字符不等于字节
- char 的空间是一口气开辟好的,不管是否空间是否都被使用,所以可能会造成空间浪费
2 . varchar 类型
- varchar(L)
可变长度字符串,L表示字符长度 ,单位为字符 ,最大长度65535个字节(最大长度跟编码有关)
注意:
使用 varchar类型,是需要多大的空间,就开辟多大空间,L只是限制了最大开辟的空间,所以不会造成空间浪费
L 最大长度:
在0到65535之间,但是有1 - 3 个字节需要用于记录数据大小,所以说有效字节数是65532
举例:
如果表的编码是utf8时,varchar(n)的参数n最大值是65532/3=21844[因为utf中,一个字符占
用3个字节],如果编码是gbk,varchar(n)的参数n最大是65532/2=32766(因为gbk中,一个字符
占用2字节)
3 . char 和 varchar 比较
选择定长或变长字符串:
- 如果数据确定长度都一样,就使用定长(char)
- 如果数据长度有变化,就使用变长(varchar)
- 定长的磁盘空间比较浪费,但是效率高,定长的意义是,直接开辟好对应的空间
- 变长的磁盘空间比较节省,但是效率低,变长的意义是,在不超过自定义范围的情况下,用多少,开辟多少
(四)日期和时间类型
常用的日期有如下三个:
date :日期 'yyyy-mm-dd' ,占用三字节
datetime :时间日期格式 'yyyy-mm-dd HH:ii:ss' 表示范围从 1000 到 9999 ,占用八字节
timestamp :时间戳,从1970年开始的 yyyy-mm-dd HH:ii:ss 格式和 datetime 完全一致,占用四字节
注意:
每一次更新这一行的其它的数据时,时间戳就会更改
(五)enum和set
- enum:枚举,“单选”类型(列举的选项里面只能选一个);
enum('选项1','选项2','选项3',...);
- set:集合,“多选”类型;
set('选项值1','选项值2','选项值3', ...);
集合查询使用find_ in_ set函数:
更多推荐
所有评论(0)