MySQL-数据类型

MySQL-数据类型

1.数值类型

  • 整型
  1. int大整型(4个字节)/取值范围:0~2**32-1(42亿多) -21亿多~+21亿多
  2. tinyint微小整型(1个字节)
    有符号(signed默认)/取值范围:-128~127
    无符号(unsigned) /取值范围:0~255
  3. smallint小整型(2个字节)
  4. bigint极大整型(8个字节)/取值范围:0~2**64-1
  • 浮点型
  1. float(4个字节,最多显示7个有效位)
    1. 用法:
      字段名 float(m,n) # m:总位数,n:小数位位数
      (用float的时候m最大为7,不然超过7位会随机显示)
      如float(5,2)/取值范围:-999.99~999.99
    2. 注意:
      浮点型插入整数时会自动补全小数位
      小数位如果多于指定的位数,会对下一位四舍五入
  2. double(8个字节,最多显示15个有效位)
  3. decimal(最多显示28个有效位)
    1. 字段名 decimal(m,n)
    2. 存储空间(整数部分和小数部分分开存储)
      规则:将9位数字的倍数包装成4个字节
      即:对于每一个部分,需要4个字节来存储9位数的每个倍数
      剩余数字所需的存储空间如下表
      剩余数字 字节
      0 ------------->0
      1-2 ----------->1
      3-4 -----------> 2
      5-6 ---------->3
      7-9 --------->4
      示例:decimal(19,9)
      整数部分:10/9=商1余1 4个字节+1个字节=5个字节
      小数部分:9/9=商1余0 4个字节+0个字节=4个字节

   

2.字符类型

  • char(定长)
    1. 宽度取值范围:1~255
    2. 不给定宽度默认为1
  • varchar(变长)
    1. 取值范围:1~65535
  • char和varchar的特点
    char:浪费存储空间,但性能高
    varchar:节省存储空间,但是性能低
  • text/longtext(4G)/blob/longblob(4G)
  • 字符类型的宽度和数值类型的宽度的区别
  1. 数值类型的宽度为显示宽度,仅仅用于select查询时显示,
    和占用的存储空间大小无关,可用zerofill查看效果
  2. 字符类型的宽度超过则无法存储

附:关于VARCHAR与CHAR的选取

在数据库中,VARCHAR是变长的,CHAR是定长的,所以,当存储的数据的长度固定时,应该优先选取CHAR,如果长度不固定,则应该使用VARCHAR

假设某字段设计为CHAR(15),当存入hello字符串时,由于字符串的字符数量只有5个,所以,数据库会补10个空格,以达到15的长度,最终,实现占用字符数是15个;如果字符设计为VARCHAR(15)时,实际占用字符数就是5个!

无论是使用CHAR还是VARCHAR,在设计字段类型时,都必须明确的指定字符数量,并且,存入数据时,如果超出了限制的字符数量,都会出现错误。

在数据库中,如果使用VARCHAR类型存储数据时,数据库默认会另外使用1个字节来记录实际存储的字符数量,例如使用VARCHAR(15)存储hello字符串时,数据库会另外记录下5这个值,以便于后续需要读取数据时,知道要读取几个字符!由于1个字节可以表示的数据大小是有限的,所以,如果VARCHAR中设置的字符数量超出255,数据库会自动改为使用2个字节来记录实际存储的字符数量,可支持的最大数量就达到65535

 

3.枚举类型(字段值只能在列举的范围内选择)

  1. 单选(最多65535个不同值)
    字段名 enum(值1,值2,…)
  2. 多选(最多64个不同值)
    字段名 set(值1,值2,…,值N)

 

4.日期时间类型

  1. year:年 YYYY
  2. date:日期 YYYYMMDD
  3. time:时分秒 HHMMSS
  4. datetime:
    timestamp:日期时间YYYYMMDDHHMMSS
    (插入记录时datetime不给值默认返回NULL,而timestamp字段默认返回系统当前时间)
日期时间的函数:
  1. NOW() [大小写都可以]返回服务器当前时间YYYY-MM-DD HH:MM:SS

  2. curdate() 返回当前日期 YYYY-MM-DD

  3. curtime() 返回当前时间 HH:MM:SS

  4. year(时间) 返回指定时间的年份 YYYY

  5. date(时间) 返回指定时间的日期 YYYY-MM-DD

  6. time(时间) 返回指定时间的时间 HH:MM:SS
    (时间用字符串的格式如:‘1995-10-22’)

日期时间运算
  1. 语法格式
    select … from 表名 where 字段名 运算符 (时间 interval 时间间隔单位);
    interval是间隔类型关键字
    时间间隔单位:
    1 day / 2 hour | minute | year | month

  2. 示例:

# 查询一天以内的记录
select * from t11 where meeting > (now() - interval 1 day);
				  现在时间 -  1天时间 = 1天以前的时间点
# 查询1天以前3天以内的记录:
select * from t11 where meeting < (now()-interval 1 day) and 
			meeting > (now()-interval 3 day); 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值