–重置mysql的表id,id从0开始自增
–方法一:
delete from tb1;
ALTER TABLE tbl AUTO_INCREMENT = 100;
– 方法二:
truncate tb1;
–获取当前auto_increment
select table_name, table_comment, auto_increment from information_schema.tables where table_name = 'devices';
–获取表信息
desc information_schema.tables;
–指定使用数据库
use testdb;
–获取数据库所有表名
show tables;
– 数据量太大导致(2006, ‘MySQL server has gone away’)
– 查询max_allowed_packet大小
show VARIABLES like '%max_allowed_packet%';
– 修改max_allowed_packet(20m),重启mysql服务,再进入
set global max_allowed_packet = 2010241024
–插入数据,主键重复
– 与phoenix的直接覆盖不同,mysql会报错(1062 - Duplicate entry ‘40’ for key ‘PRIMARY’)
– 方法一
– 用insert ignore代替insert,这样会忽略报错,也不会修改
–方法二
–用replace代替insert,重复会覆盖,相当与delete和insert两条语句的效果,但却是原子的。
–日期(毫秒比较)
–先设置datetime的长度设置为3,然后按照直接把datetime看出字符串处理
select * from tb where addtime = '2019-08-20 10:35:25.125';
–大于,小于也是可以的,between and区间是闭区间(可以选到等于两端的)。
select * from tb where addtime between '2019-08-20 09:06:08.615' and '2019-08-20 09:06:10.615';
–另外,获取系统时间(毫秒)
select now(3);
select current_timestamp(3);
–关于datetime和timestamp
–timestamp只能到2038年,并且和时区相关,占4个字节,效率更高。
–datetime能到9999年,和时区无关,占8个字节,效率较低。
–尽量使用datetime
–格式化打印日期类型
select date_format(addtime, '%Y-%m-%d %T') from teacher; --精确到秒
select date_format(addtime, '%Y-%m-%d %T.%f') from teacher; --精确到微秒
–所以时间比较也可以用
select * from tb where addtime = str_to_date('2019-08-20 09:06:08.615', '%Y-%m-%d %T.%f');
–时间加减
update tb set addtime = addtime + id; --错误
–如果不涉及进位和借位时是正确的,否则结果就是’0000-00-00 00:00:00’;
正确做法应该是
update set addtime=date_add(addtime, interval id second)
–把second换成microsecond就是加1微秒;
–date_sub就是相应的减。