MySQL中的数据类型

MySQL中的数据类型

本节内容

  • 数值类型
    • tinyint类型
    • bit类型
    • 小数类型
      • float
      • decimal
  • 字符串类型
    • char
    • varchar
    • char和varchar存储空间比较
    • 日期和时间类型
    • enumn和set
数值类型

一、tinyint类型

  1. 在mysql 中,整型可以指定是有符号的和无符号的,默认是有符号的。
  2. 带符号的范围是:-128 ~ +127
  3. 无符号的范围是:0 ~ 255
  4. 可以通过UNSIGNED来说明某个字段是无符号的。
  5. 尽量不使用unsigned.(因为当两个无符号类型的数相减时,会出现结果变成最大整数的情况。导致越界)
  6. 对于int 类型可能存放不下的数据,int unsigned 同样可能存放不下,所以,还不如在设计时,将int类型提升为bigint类型。

二、bit(M)类型

  1. 位字段类型。M 表示每个值的位数,范围从1 ~ 64。如果M被忽略,默认为1.
  2. bit字段在显示时,是按照ASCII码对应的值显示。
  3. bit(1)约定数据,只能存放0或1,目的是:节省空间。可以用bit(1)来表示男和女:sex bit(1);

三、小数类型

float

语法:

folat(m,d)[unsigned]

m:表示显示的长度;
d:表示指定的小数位数。
eg:float(4,2):-99.99 ~ 99.99
注意:

  1. 如果小数位数超了,浮点数保存时,mysql会自动四舍五入。
  2. unsigned 范围是:0 ~ 99.99
decimal

语法:

decimal(m,d)[unsigned] 

mysql 推荐使用decimal表示浮点数。
注:

  1. decimal 中 m 最大位数是65, d 最大是30。
  2. d 被省略,默认是0;m被省略,默认是10.
  3. decimal有符号和无符号的表示范围和float的是一样的。
  4. decimal 精度更高,float 能表示的最大精度为小数点后7位。
  5. 如果希望小数的精度高,推荐使用 decimal.
字符串类型

一、char
语法

char(L):定长字符串
L:能存储 1~255 个字符
  1. char(2):可以存储2个字符的字符串,中英文都可以。
  2. 当存放的数据位数小于定长字符串位数,还是按照定长位数来存储。
    eg:char(2) ‘a’ ,保存的还是两个字符。

二、varchar
语法

varchar(L):可变长度字符串
L:表示最大长度字符串。最大长度为65535个字节。
  1. varchar(5) ‘abc’ :实际存放的就是3个字符。
  2. mysql推荐使用变长字符串,节省空间。
  3. varchar长度可以指定为0到65535之间的值,但是有1 - 3 个字节用于记录数据大小,所以说有效字节数是65532。
  4. utf-8 下:一个字符=3个字节;L最大为65532/3=21844个字符(且要求数据表中没有其他类型数据)(因为在存储时,会在最前面预留3个字节来存储其结构)。
  5. gbk 下:一个字符=2个字节;所以L的最大值是65532/2=32766个字符。
  6. 要求变长字符串长度不超过35000字节,超过此字节,必须将varchar变成Test。

三、char 和 varchar 的存储空间比较:

  1. 如果存储数据时,数据长度都一样,就用定长字符串。检索效率高。
  2. 如果存储数据时,数据长度不确定,使用变长字符串。节省磁盘空间。

四、日期和时间类型
常用的日期有以下3个:

  • datetime:”yyyy-mmm-dd HH:ii:ss” 8字节 日期时间类型
  • date:日期类型 “yyyy-mm-dd” 占用3个字节
  • timestamp:时间戳 “yyyy-mmm-dd HH:ii:ss” 4字节 UTC时间(无须手工插入或更新)每当数据库中有数据新增或更新时,时间戳会自动更新到当前时间。

五、enum(枚举) 与 set

enum 在数据库中表示单选。

  1. enum(‘选项1’,’选项2’,’选项3’,…);
  2. 该设定只是提供了若干个选项的值,最终一个单元格中,实际只存储了其中一个值。
  3. 出于效率考虑,存储数据时可以使用从1开始的数字下标来存储1,2,3,……,65535

set 在数据库中表示多选。

  1. set(‘选项1’,’选项2’,’选项3’,…);
  2. 插入数据时必须在同一个’ ‘中存储多个可选项。
  3. 插入数据,必须要在集合中有对应选项,否则,插不进去。
  4. find_in_set(‘要查找的数据项’,对应的set集合)
    eg: find_in_set(‘a’,’a,b,c’)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值