关于mysql中自增加的ID问题

关于mysql中自增加的ID问题,第1张

首先明确答复你:超过之后会从0开始编码。下面以表示范围更小的单字节类型为例子说明,如果是有符号数据类型,首先从0开始编码,到127的时候就是最大,下一个数将是-128,随后-127、-126,直到0以后,又会从1开始编码。如果是无符号类型,那么会从0开始到256结束,然后又从0开始编号。

上面可能有点糊涂,但是仔细看的话,我相信你能明白。

其次我告诉你:你应该选择足够大的数据类型,为了防止数据重复,你可以让你的程序在未来的十年都不会因为这样的问题成为缺陷,下面是MYSQL各数据类型表示的范围:

类型

字节

带符号的范围

无符号的范围

TINYINT

1

-128~127

0~ 255

SMALLINT

2

-32768~ 32767

0~ 65535

MEDIUMINT

3

-8388608~8388607

0~ 16777215

INT

4

-2147483648~2147483647

0~ 4294967295

BIGINT

8

-9223372036854775808~ 9223372036854775807

0~ 18446744073709551615

不直到你的业务有多少,BIGINT类型可能10年不会存满吧。

最后说一句,不要试图去想办法让ID值重复使用,尽管有许多办法可以实现,但那几乎是得不偿失的。

本文的主要内容包括 在Oracle中实现自增型ID 删除数据表中的重复记录

一 自增型ID

首先创建 sequence

create sequence seqmax increment by

得到一个ID

select seqmax nextval ID from dual

若要删除一个sequence

drop sequence seqmax

二 删除数据表中的重复记录

先创建一个表

Create TABLE APPTEST (

ID INTEGER primary key NOT NULL

MOBILE nvarchar ( ) NOT NULL

)

假设其中手机号大量重复 要删除重复记录 可以有如下两种方法

( )简单利用rowid删除

delete from APPTEST a where rowid not in (select max(rowid) from APPTEST b where a mobile=b mobile)

据说 这种方法在数据量很大时 效率并不高

( )利用分析函数

delete APPTEST where rowid in (

select rid from

(select rowid rid row_number() over(partition by mobile order by id desc) rn from APPTEST )

where rn >)

lishixinzhi/Article/program/Oracle/201311/18187

查找案例 ID或维修 ID方法如下:

1、可通过苹果官网:https://supportprofile.apple.com/MySupportProfile.do

2、用自己的appleID登录,

3、然后点Edit Products

4、输入维修机器的 序列号  保存;

5、进入后点击下方就是所需的维修ID了


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

原文地址:https://54852.com/bake/11905960.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存