博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL UUID函数的详解
阅读量:6878 次
发布时间:2019-06-26

本文共 1340 字,大约阅读时间需要 4 分钟。

hot3.png

MySQL UUID函数的详解

MySQL中可以有二类用于生成唯一值性质的工具:UUID()函数和自增序列,那么二者有何区别呢?我们就此对比下各自的特性及异同点:

l  都可以实现生成唯一值的功能;

l  UUID是可以生成时间、空间上都独一无二的值;自增序列只能生成基于表内的唯

一值,且需要搭配使其为唯一的主键或唯一索引;

l  实现方式不一样,UUID是随机+规则组合而成的,而自增序列是控制一个值逐步增长的;

l  UUID产生的是字符串类型值,固定长度为:36个字符,而自增序列产生的是整数类型值,长度由字段定义属性决定;

接下来,详细讲解下UUID()函数产生的值:

oot : (none) 06:09:40> SELECT UUID(),UUID(),LENGTH(UUID()),CHAR_LENGTH(UUID())\G

*************************** 1. row ***************************

UUID(): de7ee638-4322-11e0-85ab-842b2b4a7e75

UUID(): de7ee642-4322-11e0-85ab-842b2b4a7e75

LENGTH(UUID()): 36

CHAR_LENGTH(UUID()): 36

1 row in set (0.00 sec)

 

从上面的执行结果部分的信息看

l  同一个SQL语句中,多处调用UUID()函数得到的值不相同;

l  得到的随机值由5个部分组成,且分隔符位为:中划线;

l  多次调用或执行得到的后2组值相同,若把mysqld服务器关闭,重新启动之后,会发现第四组的组与未重启前的值发生变化,然后一直不变化,只要重新启动mysqld服务就会发生变化。另外,对于同一台机器,第五组值始终不会发生变化;

l  字符个数为:36,占字节数为:36(注:系统默认字符集编码:utf8);

 

针对UUID产生的值组成部分,作如下解说:

l  前三组值是时间戳换算过来的;

l  第四组值是暂时性保持时间戳的唯一性。例如,使用夏令时;

l  第五组值是一个IEE 802的节点标识值,它是空间上唯一的。若后者不可用,则用一个随机数字替换。假如主机没有网卡,或者我们不知道如何在某系统下获得机器地址,则空间唯一性就不能得到保证,即使这杨,出现重复值的机率还是非常小的。

 

********************************************************************

后续添加的:

在mysql中,可以使用uuid 来生成主键,但是用mysql的uuid()函数 ,生成的uuid是36位的,其中包含32个字符以及4个分隔符(-),往往这个分隔符对我们来说是没有用的,可以使用mysql自带的replace函数去掉分隔符

replace(uuid(),'-','')   ---->将uuid()中的‘-’,去掉,即替换成空串;

此外 upper(replace(uuid(),'-',''))用于将字符转换为大写

转载于:https://my.oschina.net/u/1450300/blog/678947

你可能感兴趣的文章
简述安装web.py框架及初次使用概述
查看>>
【Java每日一题】20170329
查看>>
iBatis for net 框架使用
查看>>
在Gluster上使用CTDB和Samba
查看>>
我的友情链接
查看>>
关于360浏览器及搜狗等浏览器兼容性解决方案
查看>>
关于直接继承HibernateTemplate类的错误结果
查看>>
《深入理解Android 卷III》推荐序
查看>>
java中Overload 和 Override 的区别
查看>>
利用pypy提高python脚本的执行速度及测试性能
查看>>
PHP扩展段错误调试
查看>>
移动应用跨平台框架江湖将现终结者?速来参拜来自Facebook的React Native
查看>>
在备份或还原期间启用或禁用备份校验和 (SQL Server)
查看>>
在51CTO的第一篇博文
查看>>
Java学习笔记(16)——Java字符串
查看>>
Android 70道面试题汇总不再愁面试
查看>>
Sitecore7.5 安装指南 -- 补充内容
查看>>
mybaits like查询
查看>>
zookeeper报错问题
查看>>
使用JavaMail发送邮件之发送带附件邮件二
查看>>