【mysql】知识点

1、mysql如何让自增id归0

  • 当你再也不须要该表时, drop
  • 当你仍要保留该表,但要删除全部记录时, truncate
  • 当你要删除部分记录时(always with a WHERE clause), delete.

方法一: 若是曾经的数据都不须要的话,能够直接清空全部数据,并将自增字段恢复从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

2、mysql数据表增长列

  由于Drop Table会把数据也删除掉,要增长数据列的时候,最好用Alter语句。如:索引

alter table OrderSearchSummary add IsMonthly int(11) not NULL DEFAULT 0;it

alter table OrderSearchSummary add DistributorFirstName varchar(50);table

3、存在则更新,不存在则增长

  在实际应用中,常常碰到导入数据的功能,当导入的数据不存在时则进行添加,有修改时则进行更新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';
相关文章
相关标签/搜索