--重置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就是相应的减。
网友评论