📅  最后修改于: 2020-11-30 07:43:53             🧑  作者: Mango
在本节中,我们将了解PostgreSQL UUID数据类型的工作方式。我们还将看到UUID数据类型的示例,并且还将看到一些如何在提供的模块的帮助下创建UUID值的方法。
在PostgreSQL中,下一个数据类型是通用唯一标识符,也称为RFC 4122和另一个连接的标准指定的UUID。
UUID值是由算法创建的128位长值,借助类似的算法来识别信息,从而使其在已知的Universe中是唯一的。
让我们看一下UUID值的一些示例示例,如下图所示:
6ecd8c99-4036-403d-bf84-cf8400f67836
c81d4e2e-bcf2-11e6-869b-7df92533d2db
237e9877-e79b-12d4-a765-321741963000
从上面的示例中可以看到,UUID是由32位十六进制数字和四个连字符(-)组成的。 UUID可以为nil ,其中所有位均设置为零。
我们经常在分布式系统中识别UUID的独特功能。与PostgreSQL SERIAL数据类型(在单个数据库内创建唯一值)相比,它还确保了更好的个性。
注意:在PostgreSQL数据库中,我们可以使用UUID数据类型存储UUID值,并提供产生它们的模块。
PostgreSQL使我们能够存储和等价UUID值,但它不包含函数,并在其核心中创建UUID值。
而不是依靠提供特定算法来创建UUID的第三方模块,例如uuid-ossp模块包含一些可访问的函数,这些函数执行用于创建UUID的标准算法。
我们将使用以下CREATE EXTENSION命令在Javatpoint数据库中安装uuid-ossp模块。
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
输出量
实施上述命令后,我们将获得以下消息: uuid_ossp已使用“创建扩展名”命令成功安装。
我们在上面的命令中使用了IF NOT EXISTS子句,这避免了重新安装模块。
我们可以使用uuid_generate_v1()函数来创建UUID值,具体取决于当前时间戳,计算机的MAC地址分组和随机值:
SELECT uuid_generate_v1();
输出量
执行上述命令后,我们将获得以下结果,该命令显示由uuid_generate_v1()函数创建的UUID值。
在以下命令中,我们将使用uuid_generate_v4()函数创建唯一依赖于随机数的UUID值:
SELECT uuid_generate_v4();
输出量
成功执行上述命令后,我们将得到以下结果,该结果显示了uuid_generate_v1()函数创建的UUID值。
让我们看一个示例示例,以了解PostgreSQL UUID数据类型如何工作。
我们将在CREATE命令的帮助下创建一个新表作为Client和UUID列,并使用INSERT命令插入一些值。
客户端表包含各种列,例如Client_id,client_first_name,client_last_name,client_email_id和client_address。
对于client_id列,我们使用UUID数据类型,它也是主键。此外,基本基本列值将使用uuid_generate_v4()函数自动创建。
要在类似的数据库Javatpoint中创建Client表,并在其中安装uuid_ossp模块,请使用CREATE命令,如以下命令所示:
CREATE TABLE Client (
Client_id uuid DEFAULT uuid_generate_v4 (),
client_first_name VARCHAR NOT NULL,
client_last_name VARCHAR NOT NULL,
client_email_id VARCHAR NOT NULL,
Client_address VARCHAR,
PRIMARY KEY (Client_id)
);
输出量
执行上述命令后,我们将获得以下消息,该消息显示Client表已成功创建。
在上面的命令中,我们为Client_id列使用了UUID数据类型,其中Client_id列具有uuid_generate_v4()函数给定的默认值。
因此,如果我们在未定义Client_id列值的情况下插入新行,则PostgreSQL将调用uuid_generate_v4()函数来创建Client_id值。
成功创建Client表后,我们将在INSERT命令的帮助下向其中插入一些值。
INSERT INTO Client (client_first_name, client_last_name,
client_email_id, Client_address)
VALUES('Mike','Ross', 'ross.mike@hotmail.com','Houston'),
('Hannah','Garcia','hannahgarcia@gmail.com','San Diego'),
('Maria ','Hernandez','Maira.hernandez@gmail.com','Seattle'),
('Robert','Smith','smith.robert@hotmail.com','Dallas');
输出量
实施上述命令后,我们将获得以下消息窗口,该窗口显示指定的值已成功插入到Client表中。
创建并插入Client表的值之后,我们将使用SELECT命令返回Client表的所有行:
SELECT *
FROM Client;
输出量
成功执行上述命令后,我们将获得以下输出,该输出显示Client表中存在的所有数据:
正如我们在上面的屏幕截图中看到的那样,由uuid_generate_v4()函数创建的UUID值填充了Client_id列。
在PostgreSQL UUID数据类型部分中,我们学习了以下主题: