mysql数据类型

1.数值类型
整形:
在这里插入图片描述
我们经常会看到的表的定义:int(11)、int(2) 实际上括号里的数字表示的是最大显示宽度,这个数字和存储大小及其类型没有任何关系,也就是说int(11)和int(3)都是存储四个字节,并不会因为括号里的数字改变,这个数字仅仅是显示最大宽度。显示的最大宽度,其实就是一个数以多少位来显示,不足的位数在其最前面补0;如:int(3)存储3表示为003;int(5)存储23表示为00023.
浮点: 误差与cpu中硬件fpu有直接关系

  1. FLOAT是单精度浮点型
  2. DOUBLE是双精度浮点型
  3. [(M,D)],M一定大于等于D
  4. 比如FLOAT(7,2)代表小数点前面的数值有5位,小数点后面的数字有2位,一共加起来有7位,最大能表示99999.99
  5. 我们应该选择最合适而不是最大的数据类型
    在这里插入图片描述
    bit型:
    BIT数据类型可用来保存位字段值。BIT(M)类型允许存储M位值。M范围为1~64,默认为1。BIT其实就是存入二进制的值,类似010110。如果存入一个BIT类型的值,位数少于M值,则左补0.如果存入一个BIT类型的值,位数多于M值,MySQL的操作取决于此时有效的SQL模式:如果模式未设置,MySQL将值裁剪到范围的相应端点,并保存裁减好的值。如果模式设置为traditional(“严格模式”),超出范围的值将被拒绝并提示错误,并且根据SQL标准插入会失败。下面是官方示例:
    mysql> CREATE TABLE t (b BIT(8));
    mysql> INSERT INTO t SET b = b’11111111’;
    2.字符串类型
    char和varchar:
    CHAR和VARCHAR类型声明的长度表示你想要保存的最大字符数。例如,CHAR(30)可以占用30个字符。默认长度都为255。
    CHAR列的长度固定为创建表时声明的长度。长度可以为从0到255的任何值。当保存CHAR值时,在它们的右边填充空格以达到指定的长度。当检索到CHAR值时,尾部的空格被删除掉,所以,我们在存储时字符串右边不能有空格,即使有,查询出来后也会被删除。在存储或检索过程中不进行大小写转换。
    所以当char类型的字段为唯一值时,添加的值是否已经存在以不包含末尾空格(可能有多个空格)的值确定,比较时会在末尾补满空格后与现已存在的值比较。
    VARCHAR列中的值为可变长字符串。长度可以指定为0到65,535之间的值(实际可指定的最大长度与编码和其他字段有关,比如,本人MySql使用utf-8编码格式,大小为标准格式大小的2倍,仅有一个varchar字段时实测最大值仅21844,如果添加一个char(3),则最大取值减少3。整体最大长度是65,532字节)。
    同CHAR对比,VARCHAR值保存时只保存需要的字符数,另加一个字节来记录长度(如果列声明的长度超过255,则使用两个字节)。
    VARCHAR值保存时不进行填充。当值保存和检索时尾部的空格仍保留,符合标准SQL。
    如果分配给CHAR或VARCHAR列的值超过列的最大长度,则对值进行裁剪以使其适合。如果被裁掉的字符不是空格,则会产生一条警告。如果裁剪非空格字符,则会造成错误(而不是警告)并通过使用严格SQL模式禁用值的插入。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值