MariaDB SYS_GUID() 函数的基础用法与实例
MariaDB SYS_GUID()
函数用来生成一个符合 UUID(Universally Unique Identifier) 规范的36位字符串。
MariaDB SYS_GUID()
函数用来生成一个符合 UUID(Universally Unique Identifier) 规范的 36 位字符串。UUID 是一种唯一标识符,通常用于为各种资源分配唯一的标识号。该函数可以在需要生成全局唯一标识符的场景中使用,比如生成订单号、会话 ID 等。
语法
MariaDB SYS_GUID()
函数的语法非常简单:
SYS_GUID()
该函数不需要任何参数,直接调用即可。它返回一个格式为 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
的 36 位字符串,这种格式符合标准 UUID 格式。
实例
生成一个 UUID
SELECT SYS_GUID();
以下是该语句的输出:
+----------------------------------+
| SYS_GUID() |
+----------------------------------+
| ef56d408ea4b11eea78428c5d2301aff |
+----------------------------------+
本示例直接调用 SYS_GUID()
函数,得到一个新生成的 UUID 字符串。每次执行该语句,都会返回不同的 UUID。
为新建表的主键生成 UUID
DROP TABLE IF EXISTS users;
CREATE TABLE users (
id CHAR(36) PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(100)
);
INSERT INTO users (id, name, email)
VALUES (SYS_GUID(), 'John Doe', '[email protected]');
SELECT * FROM users;
以下是该语句的输出:
+----------------------------------+----------+----------------------+
| id | name | email |
+----------------------------------+----------+----------------------+
| feaa23adea4b11eea78428c5d2301aff | John Doe | [email protected] |
+----------------------------------+----------+----------------------+
本示例创建一个 users
表,其主键 id
字段类型为 CHAR(36)
。在插入新用户时,使用 SYS_GUID()
为主键生成一个 UUID。
生成多个 UUID
SELECT SYS_GUID() AS uuid1, SYS_GUID() AS uuid2, SYS_GUID() AS uuid3;
以下是该语句的输出:
+----------------------------------+----------------------------------+----------------------------------+
| uuid1 | uuid2 | uuid3 |
+----------------------------------+----------------------------------+----------------------------------+
| 0fb00de7ea4c11eea78428c5d2301aff | 0fb00df4ea4c11eea78428c5d2301aff | 0fb00df9ea4c11eea78428c5d2301aff |
+----------------------------------+----------------------------------+----------------------------------+
本示例一次生成多个不同的 UUID,可用于批量插入测试数据等场景。
生成格式化的 UUID
SELECT UPPER(REPLACE(SYS_GUID(),'-','')) AS compact_uuid;
以下是该语句的输出:
+----------------------------------+
| compact_uuid |
+----------------------------------+
| 1AE2320CEA4C11EEA78428C5D2301AFF |
+----------------------------------+
本示例使用 UPPER()
函数将 UUID 转换为大写,并使用 REPLACE()
函数将 UUID 中的 -
字符移除,从而生成一个紧凑格式的 UUID。
生成伪随机 UUID
SELECT LPAD(CONV(FLOOR(RAND()*1000000000000000000), 16, 36), 32, '0') AS random_uuid;
以下是该语句的输出:
+----------------------------------+
| random_uuid |
+----------------------------------+
| 00000000000000000003W5E11264SGSF |
+----------------------------------+
本示例利用 RAND()
、CONV()
和 LPAD()
函数生成一个类似 UUID 的 32 位十六进制字符串。这样生成的字符串不符合标准 UUID 规范,但可以用作伪随机 UUID。
相关函数
以下是几个与 MariaDB SYS_GUID()
相关的几个函数:
- MariaDB
UUID()
函数也可以生成一个 UUID 字符串,但格式与SYS_GUID()
略有不同。 - MariaDB
RAND()
函数可以生成一个 0 到 1 之间的伪随机数。 - MariaDB
CONV()
函数用于进行进制转换。 - MariaDB
LPAD()
函数用于通过在字符串左侧填充指定字符达到指定长度。
结论
MariaDB SYS_GUID()
函数是生成符合标准 UUID 规范的唯一标识符的便捷方式。结合主键约束,可以有效防止出现重复主键的情况。除了用作主键外,UUID 还可以用于生成会话 ID、文件名等需要全局唯一标识符的场景。同时,我们也可以利用其他字符串函数对 UUID 进行格式化处理,以满足特殊的需求。总的来说,掌握 SYS_GUID()
函数的用法,可以更好地规避潜在的数据冲突风险,并提高开发效率。