方法一: 若是曾经的数据都不须要的话,能够直接清空全部数据,并将自增字段恢复从1开始计数 mysql
truncate table 表名 sql
方法二: 许多时候但愿table中数据的id不要从1开始,像qq, id从10000开始
代码以下:测试
alter table 表名 AUTO_INCREMENT=10000;
并且该语句也适用于修改现有表的id上, 好比大批量删除数据后,想id从654321退回123456开始spa
alter table 表名 AUTO_INCREMENT=123456;code
可是通过实际测试, 单机的Mysql没有问题, Mysql Cluster下是无效的,可能在主键上的机制,仍是有所不一样。blog
由于Drop Table会把数据也删除掉,要增长数据列的时候,最好用Alter语句。如:索引
alter table OrderSearchSummary add IsMonthly int(11) not NULL DEFAULT 0;it
alter table OrderSearchSummary add DistributorFirstName varchar(50);table
在实际应用中,常常碰到导入数据的功能,当导入的数据不存在时则进行添加,有修改时则进行更新,class
在刚碰到的时候,第一反应是将其实现分为两块,分别是判断增长,判断更新。
后来发如今mysql中有 ON DUPLICATE KEY UPDATE一步就能够完成。
该语句是基于惟一索引或主键使用,好比一个字段a被加上了unique index,而且表中已经存在了一条记录值为1:
下面两个语句会有相同的效果:
INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1; UPDATE table SET c=c+1 WHERE a=1;
ON DUPLICATE KEY UPDATE后面能够放多个字段,用英文逗号分割。
INSERT INTO FerDB.RedisConfig(`RedisKey`, `RedisValue`, `RedisDesc`, `CreateDataTime`, `ExpiredMinutes`, `IsEncrypt`, `IsAdmin`, `EnableEdit`) VALUES ('urn: MinTimeDiff', '120', '最低時間差(分鐘),默認120,參考範圍(30~600)', '2019-01-25 08:00:00', '14400', '0', '0', '1') ON DUPLICATE KEY UPDATE RedisValue='120', RedisDesc='最低時間差(分鐘),默認120,參考範圍(30~600)', CreateDataTime='2019-01-25 08:00:00', ExpiredMinutes='14400', IsEncrypt='0', IsAdmin='0', EnableEdit='1';