Mysql 简明教程
MySQL - UUID
The MySQL UUID function
MySQL UUID() 函数用于根据 RFC 4122 生成“通用唯一标识符”(UUID)。UUID 被设计成在不同的服务器上生成时也是全局唯一的。UUID 是使用当前时间戳、服务器的唯一标识符和随机数组合生成的。
UUID Format
UUID 值表示为 UTF-8 字符串,并且是一个 128 位的数。UUID 值的格式为十六进制数,它由五个用连字符分隔的段组成。
UUID 值的一般格式为: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee ,其中每个段表示一个十六进制值。
UUIDs in a Database Table
您可以在数据库表中使用 UUID 作为唯一标识符。以下是如何创建具有 UUID 列的表和插入数据的示例 -
在这里,我们首先使用以下查询创建一个名为“ORDERS”的表,其中 ORDER_ID 列的类型为 VARCHAR -
CREATE TABLE ORDERS(
ID int auto_increment primary key,
NAME varchar(40),
PRODUCT varchar(40),
ORDER_ID varchar(100)
);
现在,我们使用 UUID() 函数为 ORDER_ID 列生成唯一值,将数据插入到 ORDERS 表 -
INSERT INTO ORDERS (NAME, PRODUCT, ORDER_ID) VALUES ("Varun", "Headphones", UUID());
INSERT INTO ORDERS (NAME, PRODUCT, ORDER_ID) VALUES ("Priya", "Mouse", UUID());
INSERT INTO ORDERS (NAME, PRODUCT, ORDER_ID) VALUES ("Nikhil", "Monitor", UUID());
INSERT INTO ORDERS (NAME, PRODUCT, ORDER_ID) VALUES ("Sarah", "Keyboard", UUID());
INSERT INTO ORDERS (NAME, PRODUCT, ORDER_ID) VALUES ("Vaidhya", "Printer", UUID());
得到的 ORDERS 表如下 -
Modifying UUIDs
您可以在不丢失唯一性的情况下修改 UUID。例如,您可以使用 REPLACE() 和 TO_BASE64() 等函数删除连字符或将其转换为 base64 编码。
Verification
要验证修改后的 UUID 值,我们可以使用以下 SELECT 查询:
SELECT * FROM ORDERS;
正如我们在下面的输出中看到的,每当我们执行 UUD() 函数时,我们得到一个不同的 UUID 值:
Example
假设先前创建的表,让我们使用 REPLACE() 函数(如下所示)从 ID = 2 的行的 UUID 中删除连字符:
UPDATE ORDERS
SET ORDER_ID = REPLACE(UUID(), '-', '')
WHERE ID = 2;
Verification
要验证修改后的 UUID 值,我们可以使用以下 SELECT 查询:
SELECT * FROM ORDERS;
正如我们在下面的输出中看到的,行 = 2 的 UUID 被修改了,而没有破坏其“唯一”部分: