MySQL(一):数据类型,java基础入门书籍推荐

在这里插入图片描述其中expr值可以是hi一个负数,因此单纯使用DATE_ADD也可以完成DATE_SUB的操作。

SELECT NOW() AS cur,DATE_ADD(NOW(),INTERVAL -1 DAY) AS yesterday;

在这里插入图片描述如果是闰月的话(比如不是闰年的2月28日加上4年,就会变成闰年的2月29日),DATE_ADD函数返回的日期是2月29日,如果不是闰月,那么返回的日期是2月28日。

SELECT DATE_ADD(‘2000-02-29’,INTERVAL 4 YEAR);

在这里插入图片描述

SELECT DATE_ADD(‘2000-02-29’,INTERVAL 5 YEAR);

在这里插入图片描述除了DAY和YEAR之外,还有其他类型的,比如MICROSECOND(微秒会被截断)、SECOND(秒)、MINUTE(分钟)、HOUR、WEEK、MONTH等类型

DATE_FORMAT函数

按照用户的需求格式化打印出日期

SELECT DATE_FORMAT(NOW(),"%Y%m%d");

在这里插入图片描述

数字类型

整形

整形类型有INT、SMALLINT、TINYINT、MEDIUMINT和BIGINT。

| 类型 | 占用空间(字节) | 最小值 | 最大值 |

| — | — | — | — |

| TINYINT | 1 | -128(有符号位) | 255 |

| SMALLINT | 2 | -32768(-2^15) | 2^16 |

| MEDIUNINT | 3 | -2^23 | 2^24 |

| INT | 4 | -2^31 | 2^32 |

| BIGINT | 8 | -2^63 | 2^64 |

对于整形,前面有两个相关的属性就是ZEROFILL和UNSIGNED,一旦开启了ZEROFILL那么UNSIGNED也会自动开启。

浮点型(非精确类型)

Mysql支持两种浮点类型,单精度的FLOAT类型以及双精度的DOUBLE PRECISION类型。这两种类型都是非精确的类型,即经过一些操作之后并不能保证运算的准确性,例如M*G/G不一定会等于M。

FLOAT类型用于表示近似数值数据类型,SQL标准允许在关键字FLOAT后面的括号内用位来指定精度(但不能为指数范围)。Mysql还支持可选的只用于确定存储大小的精度规定,0到23的精度对应FLOAT列的4字节单精度,24到53的精度对应DOUBLE列的8字节双精度。

Mysql还允许使用非标准语法,FLOAT(M,D)或REAL(M.D)或DOUBLE PRECISION(M,D)。这里的(M,D)表示该值一共显示M位整数,其中D位是小数点后面的位数。例如FLOAT(7,4)的一个列可以显示为-999.9999。如果超出了范围,Mysql保存值时会进行四舍五入,比如在FLOAT(7,4)中插入999.00009,会变成999.0001。

Mysql将DOUBLE视为DOUBLE PRECISION(非标准扩展)的同义词,将REAL视为DOUBLE PRECISION(非标准扩展)的同义词,即REAL和DOUBLE都是DOUBLE PRECISION,若将Mysql服务器的模式设置,REAL_AS_FLOAT,那这时REAL会被视为FLOAT类型。

为了保证最大的可以可移植性(保证精确性,因为如果不满长FLOAT参数里面的长度会进行补充),需要使用近似数值数据值存储的代码,使用FLOAT或DOUBLE PRECISION,并不规定精度或者位数。

高精度类型

DECIMAL和NUMERIC类型在Mysql中被视为相同的类型,用于保存必须为确切精度的值,比如工资,当声明该类型的列时,通常必须指定精度和标度(精度指数字位数即保存值的主要位数,标度指小树点后面可以保存的位数),例如 salary DECIMAL(5,2) ,精度为5,标度为2。在标准SQL中,语法DECIMAL(M)等价于DECIMAL(M,0),M默认是10的。

CREATE TABLE t10(

a DECIMAL

)

SHOW CREATE TABLE t10;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值