这是数据库主键自增的固然性质所决定的,数据删除后,主键还是会继续增加的,即主键使用过一次将不会再次使用。
公司主营业务:成都网站制作、网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联推出淮滨免费做网站回馈大家。
例如:这个表中有10条数据,主键为1-10不间断的数字,那删除第十条数据,继续插入的话,id则会变成11,而不是10。通俗的说就是主键使用过一次将不会再次使用。
每次插入则不需要为主键设置参数,数据库会根据设置的递增条件,自动给出主键值。则第一次插入后主键为1,第二次为2,依次递增。
扩展资料:
Mysql、SqlServer主键自动增长的设置方法:
1、在mysql中把主键定义为自动增长标识符类型
如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值。例如:
createtablecustomers(idintauto_incrementprimarykeynotnull,namevarchar(15));insertintocustomers(name)values("name1"),("name2");
2、在MSSQLServer中,如果把表的主键设为identity类型,数据库就会自动为主键赋值。例如:
createtablecustomers(idintidentity(1,1)primarykeynotnull,namevarchar(15));insertintocustomers(name)values("name1"),("name2");identity包含两个参数,第一个参数表示起始值,第二个参数表示增量。
参考资料来源:百度百科-主键约束
MySQL开启binlog后,写入操作都会记录到二进制日志里,可以使用mysqlbinlog查看/导出/恢复数据.
1.如果你有归档日志的话,你可以先将数据恢复到上一个备份点,然后使用recover恢复到做命令前的时间点上。呵呵,还是很麻烦的。
2.mysql中的表在正常情况下执行delete 指定删除的记录实际上只是在索引文件中做了删除标记,同时也将数据文件中对记录的头几个字节改写, 但这几个字节具体的与入内容不清楚.
通过研究数据文件, 会发现几种数据类型保存的格式.
varchar: 在该类型数据开始的位置有一个字节来指出后面多少个字节是该字段的内容, 但是有一个例外就是如果后面的内容与varchar字段指定的长度完全相等时,就没有开头的这个字节了.
text: 这个基本上与varchar类型一样, 但是在开始是由两个字节来指出后面的数据长度的. 而且是高位在前,低位在后.
datetime: 为8个字节,同样是低位在前,高位在后, 将其转化为long值后就是yyyymmddhhmmss的格式的数据.
由于要恢复的表中只有这几种数据类型,所以对其他的类型没有研究.
知道了数据储存的格式, 就可以分析数据文件来读取记录了.
需要注意一点就是如果你在删除数据库插入了新的数据, 那么就有可能将原来的数据覆盖掉. 所以应该在删除出错后立即恢复才能恢复出大部分数据
使用mysql中的日志功能。 首先:将最近的二进制类型的日志文件存成文本文件导出,命令如下:
mysqlbinlog F:/wamp/mysql-bin.000045 F:/test.txt
其次:打开保存的txt文件,文件格式如下:
其中at 1099代表第1099个命令(姑且这么记),查询这些命令,看看需要回复的命令在什么地方,然后执行命令。
最后:执行回复命令,如下:
mysqlbinlog --start-position="123" --stop-position="531" F:/wamp/mysql-bin.000045 F:/test.txt | mysql -uroot -p
这样就可以完成数据库的回复了!!!