技术分享 | 关于 MySQL 自增 ID 的事儿

技术分享 | 关于 MySQL 自增 ID 的事儿,第1张

当我们使用 MySQL 进行数据存储时,一般会为一张表设置一个自增主键,当有数据行插入时,该主键字段则会根据步长与偏移量增长(默认每次+1)。

下文以 Innodb 引擎为主进行介绍,使用自增主键的好处有很多,如:索引空间占比小、范围查询与排序都友好、避免像 UUID 这样随机字符串带来的页分裂问题等

当我们对该表设置了自增主键之后,则会在该表上产生一个计数器,用于为自增列分配 ID 。

自增的值并不是保存在表结构信息内的,对于不同的版本它们有如下的区别:

计数器的值存储在内存中的,重启后丢弃,下一次将读取最大的一个自增ID往后继续发号。

>记得新换手机的那股高兴劲,随之而来的是需要面临手机里面数据转移问题,微信、通讯录、短信、备忘录等等各种旧手机里面陪伴自己多年的数据,那么,苹果手机怎么转移数据到华为手机呢?通过自身经历和实际 *** 作,在这里,介绍两种方法。
一、使用i换机大师
i换机大师是一款APP,主要用于苹果手机转移数据到华为手机这一 *** 作。可以通过USB数据线和iCloud 两种导入数据的方式,同样,分开介绍一下。
1、通过USB 导入数据
先下载APPi换机大师,通过USB导入方式,把苹果手机转移数据到华为手机要用iPhone数据线和OTG转接头,OTG转接头用于移动设备之间的数据互传。
第一步:先选择通过USB线导入,再连接设备:
苹果手机怎么转移数据到华为
第二步:连接好设备后,直接开始数据加载,加载完成后选择要迁移的数据,并点击导入。如下图,可以看出这种方式很多数据类型可以选择,包含苹果和华为手机之间短信导入导出、苹果和华为手机之间备忘录导入导出。
苹果手机怎么转移数据到华为手机
2、通过iCloud 导入数据
通过这种方式,苹果手机转移数据到华为手机是不需要任何数据线,比较方便。但iOS112及以上版本不支持这种方式,因此iOS112及之后的系统,建议通过OTG线导入数据。
第一步:打开APP的时候选择通过iCloud导入,再按指引输入 AppleID 和密码登录iCloud。
苹果手机通过iCloud数据导入华为手机
第二步:选中下图中iCloud备份数据中的设备,接着会跳出来下面的右图,挑选要备份的数据,备份完成后,点击开始导入,数据便开始下载。
iCloud备份数据
第三步:数据加载完后,便开始自动迁移到新手机了。接下来静静等着数据迁移成功吧~
*** 作是不是很简单?而且根据不同人的需求做了两种模式:
OTG模式:没有网络,想超快速迁移所有数据的你~
iCloud模式:没有OTG线,也想快速迁移所有数据的你~
注意一下,i换机大师迁移备忘录的时候,如果你的新手机是EMUI 90之前的系统:备忘录的存放地址在:“文件管理文件夹>内部存储>itransfer>Notelist”,找到文件,用记事本方式打开。
如果你的新手机是EMUI 90的系统:直接点击华为手机的备忘录,会有小红点提示你,有新的备忘录迁移过来。
二、手机克隆
自带工具,无需下载,方便快捷。旧手机上迁移的数据类型较少,建议选择手机克隆。我当时就是用的手机克隆,毕竟以前的手机内存小,没有多少有用的数据,这样方便一些。下面叨叨一下 *** 作步骤。
第一步: 在旧手机上,下载并点开手机克隆->连接新手机,因为苹果手机上面时候没有手机克隆应用的 。
第二步:建立新旧手机的连接在新手机上,点开手机克隆>这是新手机>ipnone5及之后的手机,用旧手机连接华为手机生成的WLAN,按照指导,手机连接成功。
苹果手机数据迁移
第三步:开始克隆。选择要搬家的数据项,点击开始迁移就向新手机传送数据了。静等完成,然后直接关闭~~完事,迁移完毕。

如果传递多个参数的时候,要用个javaBean 并写好get set方法
但是通常传递多个参数的时候,会用个一map来传递
resultType表示返回一个指定的类型,如果数据库返回的字段和实体类字段不一样,则可能无法赋值
resultMap表示返回一个指定的映射,就是需要去配置一个<resultMap>
实际也是映射到某个实体类中的只是用这个可以配置一些字段名对类中的属性名

字符串和整数日期都可以转换的。
1当字段类型为:INT;
2传入的值为:字符串类型;
3WHERE条件中的整型字段的传入值用单引号或双引号;
上述描述的前提条件下,会对把传入的 值类型 转换为 字段定义的数据类型,故WHERE 条件是可以使用到索引的,但从数据库表读出到内存块后的值会被 转换为 传入值的数据类型,从而导致ORDER BY无法使用到索引
解释为何ORDER BY ID没有外部排序 或extra的内容为空,那是因为WHERE ID='2' 按主键查询只能查到唯一的一条记录,故不需要排序;
ORDER BY tid 时,WHERE tid='2' 按普通索引去查找的话,能查找到的数据条数会大于1条,加上数据类型隐形转换了,为此需要再额外进行排序和extra部分有内容显示;

将参数放入结构体
例如:
struct someS
{
// 要传递的参数
};
someS ss = new someS;
// 然后对参数进行赋值
// 传递这些参数
CreateThread(……,……,……,(LPVOID)ss,……,……);

你这么描述其实不是很好回答,如果是mysql专门为C语言提供的接口,那么返回值在接口处应该有说明,如果是你自己写selelct语句去查,那么返回值应该是一个result类型。
你最好把错误或者代码段贴上来,就更容易分析问题了。
我就抛砖引玉,等后面的人来回答吧。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13393026.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-27
下一篇 2023-07-27

发表评论

登录后才能评论

评论列表(0条)

保存