PostgreSQL Matriz: funciones, tipo, ejemplo
ยฟQuรฉ es PostgreSQL ยฟFormaciรณn?
In PostgreSQL, podemos definir una columna como una matriz de tipos de datos vรกlidos. El tipo de datos puede ser un tipo integrado, definido por el usuario o enumerado. Aparte de esto, las matrices juegan un papel importante en PostgreSQL.
Cada correspondiente PostgreSQL El tipo de datos viene con un tipo de matriz relevante. Por ejemplo, el tipo de datos entero tiene el tipo de matriz entero[], el tipo de datos carรกcter tiene el tipo de matriz carรกcter[], etc.
Creamos PostgreSQL Matrices
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.
Inserciรณn PostgreSQL Valores de matriz
Dรฉjanos ahora insertar valores en la tabla anterior:
INSERT INTO Employees
VALUES
(
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 el empleado Alice John.
Todavรญa es posible que utilicemos llaves {} como se muestra a continuaciรณn:
INSERT INTO Employees
VALUES
(
2,
'Kate Joel',
'{"(408)-783-5731"}'
),
(
3,
'James Bush',
'{"(408)-745-8965","(408)-567-78234"}'
);
El comando deberรญa ejecutarse correctamente.
Las instrucciones anteriores insertarรกn dos filas en la tabla Empleados. Cuando se utilizan llaves, la matriz se encierra entre comillas simples ('), mientras que los elementos de la matriz de texto se encierran entre comillas dobles (โ).
Consultar datos de matriz
Para consultar los elementos de una matriz, usamos la declaraciรณn SELECT.
Para ver el contenido de nuestra tabla 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:
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
Esto devolverรก lo siguiente:
Modificaciรณn PostgreSQL Formaciรณn
Puede actualizar todo o un solo elemento de una matriz.
Aquรญ estรก el contenido 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 Employees SET contact [ 2 ] = '(408)-589-89347' WHERE id = 3;
El comando deberรญa ejecutarse correctamente:
Consultamos la tabla para comprobar si el cambio fue exitoso:
El cambio fue exitoso.
Buscando en un PostgreSQL Formaciรณn
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:
SELECT name, contact FROM Employees WHERE '(408)-783-5731' = ANY (contact);
Esto devolverรก lo siguiente:
Matrices en expansiรณn
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:
SELECT name, unnest(contact) FROM Employees;
Esto devolverรก lo siguiente:
Los empleados Alice John y James Bush tienen dos contactos. Podemos dividirnos en filas separadas.
Usando pgAdmin
Creamos PostgreSQL Matrices
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 Demostraciรณn
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.
Inserciรณn PostgreSQL Valores de matriz
Paso 1) Escriba la siguiente consulta en el editor de consultas:
INSERT INTO Employees
VALUES
(
1,
'Alice John',
ARRAY [ '(408)-743-9045',
'(408)-567-7834' ]
);
Paso 2) Haga clic en el botรณn Ejecutar:
Paso 3)
Para utilizar llaves en la consulta
Paso 1) Escriba la siguiente consulta en el editor de consultas:
INSERT INTO Employees
VALUES
(
2,
'Kate Joel',
'{"(408)-783-5731"}'
),
(
3,
'James Bush',
'{"(408)-745-8965","(408)-567-78234"}'
);
Paso 2) Haga clic en el botรณn Ejecutar:
Consultar 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 los 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:
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
- Haga clic en el botรณn Ejecutar.
Deberรญa devolver lo siguiente:
Modificaciรณn PostgreSQL Formaciรณn
Paso 1) Para actualizar el segundo contacto del usuario con id 3, ejecute el siguiente comando:
UPDATE Employees SET contact [ 2 ] = '(408)-589-89347' WHERE id = 3;
Paso 2) Haga clic en el botรณn Ejecutar.
Paso 3)
1. Escriba el siguiente comando en el editor de consultas para comprobar si el cambio se realizรณ correctamente:
SELECT * FROM Employees;
2.Haga clic en el botรณn Ejecutar.
Deberรญa devolver lo siguiente:
Buscando en un PostgreSQL Formaciรณn
Paso 1) Escriba la siguiente consulta en el editor de consultas:
SELECT name, contact FROM Employees WHERE '(408)-783-5731' = ANY (contact);
Paso 2) Haga clic en el botรณn Ejecutar.
Deberรญa devolver lo siguiente:
Matrices en expansiรณn
Paso 1) Escriba la siguiente consulta en el editor de consultas:
SELECT name, unnest(contact) FROM Employees;
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 vรกlida. tipo de datos como tipos enteros, de caracteres o 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 columnas de matriz usando la funciรณn ANY().






























