无论是初学者还是有经验的专业人士,在学习一门新的IT技术时,都需要采取一种系统性的学习方法。那么作为一名技术er,你是如何系统的学习it技术的呢。
一、DB Problems
- 数据库数据类型与java中数据类型对应问题?
MySql数据库和java中数据类型的对应关系:
类型名称
source
( ఠൠఠ )ノ~source-笔记:MySql数据库和java中数据类型的对应关系
关于Mysql中如何选用这BigDecimal和double
- 首先与java不同的是mysql是用来持久化数据的,而java中使用的数据一般更多的是过一下内存;
- 数据库都要除了指定数据类型指外还需要指定精度,因此在DB中Double计算时精度的丢失比Java高得多;
因为Java默认精确到15-16位了;- 更改数据类型的成本,Mysql比Java代码要难得多;考虑到以上与java中不同几点,做点个人使用总结:
- 与商业金融相关字段要使用Decimal来表示,如金额,费率等字段;
- 参与各类计算如加,减,乘,除,sum,avg等等,也要使用Decimal;
- 经纬度,可以使用double来表示,这个可参考Java,只要保证精度范围即可;
- 如果确实不确定使用什么double或Decimal哪种类型合适,那最好使用Decimal,毕竟稳定,安全高于一切;
原文链接
贴贴-java.sql.Types,数据库字段类型,java数据类型的对应关系
二、关于“创建时间”&&“更新时间”问题
MySQL数据库之MySQL自动设置字段create_time和update_time
reference structurecreate table `product`( `id` BIGINT(20) not null AUTO_INCREMENT COMMENT '', `name` varchar(20) DEFAULT NULL COMMENT '', `price` decimal(10,2)DEFAULT NULL COMMENT '', `description` varchar(255) DEFAULT NULLCOMMENT '', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`id`) );
Scheme 1
当我们创建业务表的时候 通常都需要设置create_time 和 update_time 但是通常需要在代码中设置好时间后再插入数据库;
-
CURRENT_TIMESTAMP
字段设置后 当insert数据时 mysql会自动设置当前系统时间 赋值给该属性字段 -
ON UPDATE CURRENT_TIMESTAMP
字段设置后 当update数据时 并且 成功发生更改时 mysql会自动设置当前系统时间 赋值给该属性字段 -
create_time
设置CURRENT_TIMESTAMP
属性 -
update_time
设置ON UPDATE CURRENT_TIMESTAMP
属性
我们在代码中 就无需再手动给这两个参数赋值 节省了一定代码量
————————————————
直接在数据库中设置默认字段
创建的时候设置当前时间
·
DEFAULT CURRENT_TIMESTAMP
更新的时候设置更新时间为当前时间
DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
Scheme 2
编写代码实现;需要编写代码
通常用于表建好了,突然发现还需要给字段自动设置系统时间,此时可使用代码来实现此功能/效果。
- 在product实体类中添加新属性
private Timestamp mqttTime
; - 获取当前时间存入数据库:
Date date=new Date();
String nowTime=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
Timestamp timestamp = Timestamp.valueOf(nowTime);//时间转换 java.util.Date是java.sql.Date的父类
- 然后把这个timestamp 存入数据库
objectName.setMqttTime(timestamp);
application sence
应用场景:
1、在数据表中,要记录每条数据是什么时候创建的,不需要应用程序去特意记录,而由数据数据库获取当前时间自动记录创建时间;
2、在数据库中,要记录每条数据是什么时候修改的,不需要应用程序去特意记录,而由数据数据库获取当前时间自动记录修改时间;
achievement
实现方式:
1、将字段类型设为 TIMESTAMP
2、将默认值设为 CURRENT_TIMESTAMP
article–mysql
tips
在 MySQL 中,datetime 数据类型支持使用 CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP。
例如,您可以在创建表时将 CURRENT_TIMESTAMP 用作默认值:
CREATE TABLE my_table (
id INT PRIMARY KEY,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
在这个例子中,如果没有为 created_at 列提供值,则会将当前时间作为默认值添加到该列中。 您还可以在定义列时使用 ON UPDATE
CURRENT_TIMESTAMP,以在更新行时自动将当前时间添加到 datetime 类型的列中:
CREATE TABLE my_table (
id INT PRIMARY KEY,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
在这个例子中,每次更新行时都会将当前时间添加到 updated_at 列中。如果未更新 updated_at 列,则其值将保持不变。
请注意,在 MySQL 5.6.5 及更高版本中,timestamp 类型也支持使用 DEFAULT CURRENT_TIMESTAMP 和
ON UPDATE CURRENT_TIMESTAMP。但是,timestamp 类型与 datetime
类型略有不同,因此使用时需要特别小心.
datetime 和 timestamp 区别
datetime 和 timestamp 都是 MySQL
中用于存储日期和时间的数据类型。它们都可以存储相同的日期和时间值,但它们有一些关键的区别。存储空间:在 MySQL 中,timestamp 类型采用 4 字节存储空间,而 datetime 类型采用 8 字节。
范围:datetime 类型可以存储从 1000 年到 9999 年的日期和时间,而 timestamp 类型仅能存储从 1970 年到
2038 年的日期和时间。这是因为 timestamp 类型使用 Unix 时间戳来存储日期和时间,并且 Unix 时间戳只能表示从
1970 年 1 月 1 日至 2038 年 1 月 19 日之间的时间。精度:datetime 类型的精度为秒级别,而 timestamp 类型的精度为毫秒级别。
综上所述,如果您需要存储较早或较晚的日期和时间,则应该使用 datetime 类型。另外,如果您需要更高的精度,则应该使用
timestamp 类型。如果您不确定哪种类型更适合您的需求,请根据您的具体情况进行选择。
三、学习时的具体操作
提示:可介绍你是如何建立基础知识、实际操作、进行整理和总结的
四、如何巩固学习
提示:可阐述你是如何形成更系统和清晰的知识体系并进行回顾的
提醒:以上内容仅做参考,可自行发散。在发布作品前,请把不需要的内容删掉。