¿Qué es PostgreSQL Array?
En PostgreSQL, podemos definir una columna como una matriz de tipos de datos válidos. El tipo de datos puede ser integrado, definido por el usuario o enumerado. Aparte de esto, las matrices juegan un papel importante en PostgreSQL.
Cada tipo de datos de PostgreSQL correspondiente viene con un tipo de matriz relevante. Por ejemplo, el tipo de datos entero tiene el tipo de matriz de enteros [], el tipo de datos de caracteres tiene el tipo de matriz de caracteres [], etc.
En este tutorial de PostgreSQL, aprenderá:
- ¿Qué es PostgreSQL Array?
- Creación de matrices PostgreSQL
- Insertar valores de matriz de PostgreSQL
- Consulta de datos de matriz
- Modificar la matriz de PostgreSQL
- Búsqueda en una matriz PostgreSQL
- Expansión de matrices
- Usando pgAdmin
Creación de matrices PostgreSQL
En el siguiente ejemplo, crearemos una tabla llamada Empleados con la columna de contacto definida como una matriz de texto:
CREATE TABLE Employees (id int PRIMARY KEY,name VARCHAR (100),contact TEXT []);
El comando debería ejecutarse correctamente.
Insertar valores de matriz de PostgreSQL
Insertemos ahora valores en la tabla anterior:
INSERT INTO EmployeesVALUES(1,'Alice John',ARRAY [ '(408)-743-9045','(408)-567-7834' ]);
La inserción debería ejecutarse correctamente.
Los valores de la tercera columna, es decir, contacto, se han insertado como una matriz. Esto se ha logrado mediante el uso del constructor ARRAY.
En este ejemplo, los hemos encerrado entre corchetes []. Tenemos dos contactos para la empleada Alice John.
Todavía es posible que usemos llaves {} como se muestra a continuación:
INSERT INTO EmployeesVALUES(2,'Kate Joel','{"(408)-783-5731"}'),(3,'James Bush','{"(408)-745-8965","(408)-567-78234"}');
El comando debería ejecutarse correctamente.
Las declaraciones anteriores insertarán dos filas en la tabla Empleados. Cuando se utilizan llaves, la matriz se ajusta entre comillas simples (') mientras que los elementos de la matriz de texto se envuelven entre comillas dobles (").
Consulta de datos de matriz
Para consultar los elementos de una matriz, usamos la instrucción SELECT.
Para ver el contenido de nuestra tabla de Empleados, ejecutamos el siguiente comando:
SELECT * FROM Employees;
Esto devuelve lo siguiente:
Los elementos de la columna de la matriz, es decir, el contacto, se han encerrado entre llaves {}.
Para acceder a los elementos de la matriz, agregamos un subíndice entre corchetes []. El primer elemento de una matriz está en la posición 1.
Por ejemplo, necesitamos obtener los nombres de los empleados y solo su primer contacto para aquellos empleados con más de un contacto. Podemos acceder a esto como contacto [1].
Veamos esto:
SELECT name, contact[1]FROM Employees;
Esto devolverá lo siguiente:
Podemos usar la instrucción SELECT junto con la cláusula WHERE para filtrar filas según la columna de la matriz.
Por ejemplo, para ver al empleado con (408) -567-78234 como segundo contacto, podemos ejecutar el siguiente comando:
SELECTnameFROMEmployeesWHEREcontact [ 2 ] = '(408)-567-78234';
Esto devolverá lo siguiente:
Modificar la matriz de PostgreSQL
Puede actualizar todo o solo un elemento de una matriz.
A continuación, se muestran los contenidos de la tabla Empleados:
Actualicemos el segundo número de teléfono del empleado James Bush, cuya identificación es 3:
Ejecute el siguiente comando:
UPDATE EmployeesSET contact [ 2 ] = '(408)-589-89347'WHEREid = 3;
El comando debería ejecutarse correctamente:
Consultemos la tabla para verificar si el cambio fue exitoso:
El cambio fue exitoso.
Búsqueda en una matriz PostgreSQL
Actualmente, nuestra tabla de Empleados es la siguiente:
Supongamos que necesitamos saber quién es el propietario del contacto (408) -783-5731 independientemente de la posición dentro de la matriz de contactos, podemos usar la función ANY () como se muestra a continuación:
SELECTname,contactFROMEmployeesWHERE'(408)-783-5731' = ANY (contact);
Esto devolverá lo siguiente:
Expansión de matrices
Podemos dividir los valores de una matriz en filas. Este proceso se conoce como expansión de matriz.
En el ejemplo de la tabla Empleados, hay algunos empleados con dos contactos en la matriz de contactos. Podemos dividirlos en filas separadas.
PostgreSQL proporciona la función unnest () que se puede utilizar para esto.
Por ejemplo:
SELECTname,unnest(contact)FROMEmployees;
Esto devolverá lo siguiente:
Los empleados Alice John y James Bush, tienen dos contactos. Podemos dividir en filas separadas.
Usando pgAdmin
Creación de matrices PostgreSQL
Para lograr lo mismo a través de pgAdmin, haga esto:
Paso 1) Inicie sesión en su cuenta pgAdmin.
Paso 2)
- Desde la barra de navegación de la izquierda, haga clic en rbases.
- Haga clic en el botón Demo
Paso 3) Escriba la consulta en el editor de consultas para crear la tabla Empleados:
CREATE TABLE Employees (id int PRIMARY KEY,name VARCHAR (100),contact TEXT []);
Paso 4) Haga clic en el botón Ejecutar.
Insertar valores de matriz de PostgreSQL
Paso 1) Escriba la siguiente consulta en el editor de consultas:
INSERT INTO EmployeesVALUES(1,'Alice John',ARRAY [ '(408)-743-9045','(408)-567-7834' ]);
Paso 2) Haga clic en el botón Ejecutar:
Paso 3)
Para usar llaves en la consulta
Paso 1) Escriba la siguiente consulta en el editor de consultas:
INSERT INTO EmployeesVALUES(2,'Kate Joel','{"(408)-783-5731"}'),(3,'James Bush','{"(408)-745-8965","(408)-567-78234"}');
Paso 2) Haga clic en el botón Ejecutar:
Consulta de datos de matriz
Paso 1) Para ver el contenido de la tabla Empleados, escriba la siguiente consulta en el editor de consultas:
SELECT * FROM Employees;
Paso 2) Haga clic en el botón Ejecutar:
Debería devolver lo siguiente:
Paso 3) Para ver los primeros contactos de empleados:
- Escriba la siguiente consulta en el editor de consultas:
SELECT name, contact[1]FROM Employees;
- Haga clic en el botón Ejecutar.
Debería devolver lo siguiente:
Paso 4) Para combinar la instrucción SELECT con la cláusula WHERE:
- Escriba el siguiente comando en el editor de consultas:
SELECTnameFROMEmployeesWHEREcontact [ 2 ] = '(408)-567-78234';
- Haga clic en el botón Ejecutar.
Debería devolver lo siguiente:
Modificar la matriz de PostgreSQL
Paso 1) Para actualizar el segundo contacto del usuario con id de 3, ejecute el siguiente comando:
UPDATE EmployeesSET contact [ 2 ] = '(408)-589-89347'WHEREid = 3;
Paso 2) Haga clic en el botón Ejecutar.
Paso 3)
1. Escriba el siguiente comando en el editor de consultas para verificar si el cambio fue exitoso:
SELECT * FROM Employees;
2.Haga clic en el botón Ejecutar.
Debería devolver lo siguiente:
Búsqueda en una matriz PostgreSQL
Paso 1) Escriba la siguiente consulta en el editor de consultas:
SELECTname,contactFROMEmployeesWHERE'(408)-783-5731' = ANY (contact);
Paso 2) Haga clic en el botón Ejecutar.
Debería devolver lo siguiente:
Expansión de matrices
Paso 1) Escriba la siguiente consulta en el editor de consultas:
SELECTname,unnest(contact)FROMEmployees;
Paso 2) Haga clic en el botón Ejecutar.
Debería devolver lo siguiente:
Resumen:
- PostgreSQL nos permite definir una columna de tabla como un tipo de matriz.
- La matriz debe ser de un tipo de datos válido, como enteros, caracteres o tipos definidos por el usuario.
- Para insertar valores en una columna de matriz, usamos el constructor ARRAY.
- Si hay más de un elemento en la misma fila de una columna de matriz, el primer elemento está en la posición 1.
- Se puede acceder a cada valor pasando un subíndice entre corchetes [].
- Los elementos de la matriz se pueden recuperar mediante la instrucción SELECT.
- Los valores de la columna de la matriz se pueden encerrar entre corchetes [] o llaves {}.
- Podemos buscar valores de columna de matriz usando la función ANY ().
Descargue la base de datos utilizada en este tutorial