MYSQL教程mysql唯一值创建代码
《MYSQL教程mysql唯一值创建代码》要点: 介绍几种唯一值的获取或者生产办法:MYSQL实例 先建一个测试用的表tbl_user,此中Id为主键. ?? 2:? create table ?? 3:? `tbl_user` ( ?? 4:????? `Id` int(10), ?? 5:????? `Name` varchar(20), ?? 6:????? `Age` int(10), ?? 7:????? PRIMARY KEY? (`Id`) ?? 8:? )DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; ? ? ?? 2:? insert into tbl_user values (1001,"小狗",22); ?? 3:? insert into tbl_user values (1002,"小刺猬",22); ?? 4:?? ?? 5:? select * from tbl_user; ? 查询结果: 1.由应用程序根据一定算法生成唯一值:一般采用”MD5(时间戳+随机数)“或者其他的UUID算法,基本也比较好实现. 如果遇到多机器上分布的程序拜访统一数据库的表,可以把Ip、网卡号等信息考进来就可以解决了(当然可以不是简单的拼接,可以根据需要去合适的位数经过一定的算法去获取). ? 2.先查询表中最大的值select max(id),再加1后作为新的值. ?MYSQL实例 ? 1:? select max(Id) from tbl_user; ?? 2:? 查询到的最年夜Id为 1002 ?? 3:?? ?? 4:? 之后插入 1003 ?? 5:?? ?? 6:? insert into tbl_user values (1003,"小熊",22); ?? 7:?? ? 此时表中数据为 3.如果是表级别的唯一,即在同一个表中某个字段唯一,可以把该字段设置为“自增(AUTO_INCREMENT)”的.这样你不必费心思去生成这个不能重复的唯一值了.但是一般应用程序是需要这个唯一值的,这个时候你就得在查询一次去获取刚才数据库自增生成的Id.好比在用户登录的时候,你要生成一个登录会话Id或者Token,这些程序一般是需要得到这个值而不是仅仅存在数据库中.生成的值,1.可以一般的select条件查询,根据条件查询刚才插入的数据.2.直接调用select @@IDENTITY 就可以得到上一次插入记录时自动产生的ID(注意是在数据库同一个连接(会话)中),用在插入后立即select @@IDENTITY .MYSQL实例 例子,先将表中的Id字段设置为自增,再插入一条数据(不要插入Id值,让数据库自增获得值),select @@IDENTITY查询,最后验证看看. 1.#将Id改为自增(auto_increment) #或者 先删除Id字段再添加一个Id字段 2.插入一条记录 3.查询刚才的自增Id值 值是1004, 验证:select * from tbl_user;得到的当前表记录为 过刚插入的数据“小猴”id为1004,和select @@IDENTITY;成果一样.MYSQL实例 4.使用mysql的 UUID()函数.前面的自增字段(auto_increment)只能生成”表内”的唯一值,且必要搭配使其为”唯一的主键或唯一索引”,它的值是逐步增长的.这里的UUID产生的是字符串类型值,固定长度为:36个字符.UUID生成的是在时间、空间上都独一无二的值,是“随机+规则”组合而成.MYSQL实例 select uuid(); 执行两次,结果: 这些已经可以保证获得的值在时间和空间上的唯一.当然你也可以去掉连字符: select replace(uuid(),'-','').MYSQL实例 在MySQL 5.1.*及更高版本有一个变种的UUID()函数,UUID_SHORT(),可以生成一个17-64位无符号的整数,注意是生成的一个整数,而前面UUID()生成的是字符串.MySQL启动后第一次执行的值是通过时间戳等初始化这个值,在本次运行中再次调用的时候都加1.这个值一般比拟大,可以调用right(UUID_SHORT(),9)取后面的若干位.或者,你还可以写成自定义函数,来按需生成这个值.MYSQL实例 例子: #1.调用uuid_short()函数 #执行两次获得的值递增的: #2.创立一个自定义函数,按需获取唯一值: #3.调用自定义的函数GetUuidTest(int)函数: #4.在例子中调用自定义函数GetUuidTest(int)? 来插入记录:这时不必要把Id设置为自增了. 例子中,select * from tbl_user;获得的所有记录为 编程之家PHP培训学院每天发布《MYSQL教程mysql唯一值创建代码》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |