PostgreSQLArray-PostgreSQL教程|
PostgreSQL Array
在本节中,我们要了解的工作PostgreSQL的数组数据类型,例子中的数组数据类型,以及一些访问阵列功能,如UNNEST(),ANY(),它帮助我们处理数组值更有效。我们还看到了在WHERE子句中使用数组元素的示例。
什么是 PostgreSQL 数组数据类型?
在PostgreSQL 中,Array 数据类型发挥了重要作用。我们知道,每种数据类型都有其伴随的数组类型,例如字符具有字符[]数组类型,整数具有整数[]数组类型等。
PostgreSQL 允许我们将列指定为任何有效数据类型的数组,包括用户定义数据类型、枚举数据类型和内置数据类型。
注意:PostgreSQL 在后台生成了一致的数组类型供我们描述我们的数据类型。
PostgreSQL Array 数据类型的语法
PostgreSQL Array 数据类型的语法如下:
variable_name DATA TYPE[];
PostgreSQL 数组数据类型示例
让我们查看示例以了解PostgreSQL 数组数据类型的工作原理。
我们正在使用 CREATE 命令的帮助创建一个新表作为person_details并使用INSERT 命令插入一些值。
创建 PostgreSQL 数组表
该person_details表包含各列,如ID,PERSON_NAME和Mobile_numbers,并为MOBILE_NUMBER专栏中,我们使用一维数组包含几个手机号码,一个人可能有。
CREATE TABLE person_details (
id serial PRIMARY KEY,
person_name VARCHAR (200) ,
mobile_numbers TEXT []
);
输出
在执行上述命令时,我们将得到以下消息窗口,其中显示person_details表已成功创建到Organization数据库中。
插入 PostgreSQL 数组值
当person_details成功创建表,我们将插入一些值与INSERT命令的帮助。
INSERT INTO person_details (person_name, mobile_number)
VALUES('Maria Smith',ARRAY [ '(444)-333-1234','(555)-333-5432' ]);
输出
执行上述命令后,我们将得到如下消息窗口,显示值已成功插入到person_details表中。
在上面的插入命令中,我们使用了ARRAY 构造函数来创建一个数组并将其添加到Person_details表中。
我们也可以使用花括号{} 而不是使用方括号 [] ,就像我们在下面的命令中看到的那样:
INSERT INTO person_details (person_name, mobile_number)
VALUES('Mike Taylor','{"(444)-333-1234"}'),
('Emma Garcia','{"(568)-333-5678"}'),
('David Smith','{"(444)-333-7658","(308)-589-23458"}');
输出
执行上述命令后,我们将得到如下消息窗口,显示三个值已成功插入到person_details表中。
注意:正如我们在上面的命令中看到的,当我们使用花括号{}时,我们使用了单引号 ' ' 将数组括起来,并使用双引号 " " 将文本数组项括起来。
选择 PostgreSQL 数组数据值
创建并插入person_details表的值后,我们将使用SELECT命令返回person_details表的所有行:
SELECT person_name, mobile_number
FROM person_details;
输出
成功执行上述命令后,我们将得到以下输出,其中显示了person_details表中存在的所有数据:
默认情况下,如果我们借助方括号 []内的下标访问数组元素, PostgreSQL对数组元素使用基于一个的编号,这意味着第一个数组元素以数字 1开头。
假设我们需要返回此人的姓名和第一个mobile_number,如下面的命令所示:
SELECT person_name, mobile_number[1]
FROM person_details;
输出
执行上面的命令,我们将得到下面的结果,它显示了person_details表中一个人的第一个手机号码。
使用 where 子句查找 PostgreSQL 数组元素
要过滤行,我们可以使用WHERE 子句中的数组元素作为条件。
在下面的示例中,我们将使用以下命令来识别那些将mobile_number (308)-589-23458作为第二个手机号码的人:
SELECT person_name
FROM person_details
WHERE mobile_number[2]='(308)-589-23458';
输出
成功执行上述命令后,我们将得到以下输出,其中显示了超过两个 mobile_numbers 的person_name。
更改 PostgreSQL 数组
PostgreSQL 为我们提供更新整个数组或数组的所有元素。
下面的命令来更新第二个电话号码的大卫·史密斯。
UPDATE person_details
SET mobile_number [2] = '(308)-859-54378'
WHERE ID = 4;
输出
执行上述命令后,我们将得到以下消息窗口,显示特定值已成功更新。
要整体更新数组,我们可以使用以下命令:
UPDATE person_details
SET mobile_number = '{"(308)-859-54378"}'
WHERE ID = 4;
输出
执行完上面的命令后,我们会得到如下消息窗口,它代表了整个数组:
之后,我们将使用以下命令;我们将在SELECT命令的帮助下检查更新的值:
SELECT person_name, Mobile_number
FROM person_details
WHERE id = 4;
输出
成功执行上述命令后,我们将得到以下输出,其中显示了指定的更新值。
扩展 PostgreSQL 数组数据类型
为了将数组扩展为行列表,PostgreSQL 提供了unnest()函数。
让我们看一个例子来理解我们如何使用unnest()函数扩展数组:
在以下示例中,以下命令扩展 mobile_number 数组的所有手机号码。
SELECT person_name,
unnest(mobile_number)
FROM person_details;
输出
我们将在执行上述命令时获得以下输出,该输出将展开的数组显示为行列表。
在 PostgreSQL 数组中搜索
如果我们想确定谁拥有以下mobile_number (555)-333-5432 而不管 mobile_number 数组的位置如何,我们可以使用ANY()函数,如下面的命令所示:
SELECT person_name, mobile_number
FROM person_details
WHERE '(555)-333-5432' = ANY (mobile_number);
输出
执行上述命令后,我们将得到如下结果:
概述
在PostgreSQL 数组数据类型部分,我们学习了以下主题:
- PostgreSQL的数组数据类型用于存储数组值指定列。
- 我们在WHERE 子句中使用了Array 元素来过滤指定表中的检索行。
- 我们使用了不同的 Array 函数;例如,ANY() 函数用于在 PostgreSQL 数组中搜索。
- 的UNNEST()函数是用于扩展的阵列,以用于处理该特定表的阵列值的行的列表。
相关文章:
- [PostgreSQL教程]PostgreSQL特性-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL版本-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL语法-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL序列-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL数字-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL字符-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL文本-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL变量-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL整数-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL串行-PostgreSQL教程|
相关推荐:
- [PostgreSQL教程]PostgreSQL与SQLite-PostgreSQL教程|
- [PostgreSQL教程]MongoDB与PostgreSQL-PostgreSQL教程|
- [PostgreSQL教程]psqlcommands-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQLDate&TimeFunction-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQLFunctions-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQLMulti-columnIndexes-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL禁用触发器-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL左连接-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQLANDCondition-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL获取子句-PostgreSQL教程|
- PostgreSQL与SQLite-PostgreSQL教程|
- PostgreSQL与Oracle-PostgreSQL教程|
- PostgreSQL与MariaDB-PostgreSQL教程|
- PostgreSQL与SQLServer-PostgreSQL教程|
- MongoDB与PostgreSQL-PostgreSQL教程|
- PostgreSQLEXCEPT-PostgreSQL教程|
- PostgreSQLINTERSECT-PostgreSQL教程|
- PostgreSQLUnion-PostgreSQL教程|
- psqlcommands-PostgreSQL教程|
- PostgreSQLDate&TimeFunction-PostgreSQL教程|
- PostgreSQL删除触发器-PostgreSQL教程|
- PostgreSQLOrderby子句-PostgreSQL教程|
- PostgreSQL与SQLite-PostgreSQL教程|
- PostgreSQLINTERSECT-PostgreSQL教程|
- PostgreSQLAlias-PostgreSQL教程|
- PostgreSQLNot-NullConstraint-PostgreSQL教程|
- PostgreSQL与MariaDB-PostgreSQL教程|
- PostgreSQLUnion-PostgreSQL教程|
- PostgreSQLMulti-columnIndexes-PostgreSQL教程|
- PostgreSQL左连接-PostgreSQL教程|