我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

本文聊聊在mysql中如何使用uuid作为主键。当然,一般情况下,是使用自增一的id字段作为主键的。随着目前数据库的体量的不断增大,使用uuid做主键的数据表也不断增多。

苏南大叔:mysql数据库,如何使用uuid代替id做数据表的主键? - mysql-uuid
mysql数据库,如何使用uuid代替id做数据表的主键?(图3-1)

大家好,这里是苏南大叔的程序如此灵动博客,这里记录苏南大叔的代码经验所学所想。测试环境:win10mysql@5.7.26

uuid格式

mysql中的uuid()获得是一个用中划线链接的36位的字符串。类似如下:

0a9497de-1e09-11ee-a41f-34363b67eb71

在前面的文章里面,苏南大叔还写过一个nodejs下的uuid()。链接如下:

mysqluuid()结果和nodejsuuid()的第四版结果非常类似。

mysql语句中获得uuid

可以执行下面的语句,获得uuid(),多次执行的时候,每次执行的结果都是不一样的。

select uuid();

如果要获得不带中划线的uuid(),可以使用内置的replace()函数。

select replace(uuid(), '-', '');

苏南大叔:mysql数据库,如何使用uuid代替id做数据表的主键? - mysql-uuid-2
mysql数据库,如何使用uuid代替id做数据表的主键?(图3-2)

作为主键插入uuid

这里uuid字段作为主键:

CREATE TABLE `users2` (
  `uuid` varchar(36) NOT NULL DEFAULT '',
  `name` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`uuid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

苏南大叔:mysql数据库,如何使用uuid代替id做数据表的主键? - insert-into-uuid
mysql数据库,如何使用uuid代替id做数据表的主键?(图3-3)

insert into users2( uuid,name ) values( uuid(), "苏南大叔" );

相关链接

总结

表面上来看,uuid()必然是不重复的。但是,理论上来说,是存在非常微小的概率重复的。更多mysql数据库经验文章,请点击苏南大叔的经验文章:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   mysql