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.

Creamos  PostgreSQL Matrices

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.

Inserciรณn PostgreSQL Valores de matriz

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.

Inserciรณn PostgreSQL Valores de matriz

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:

Consultar datos de matriz

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:

Consultar datos de matriz

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:

Consultar datos de matriz

Modificaciรณn PostgreSQL Formaciรณn

Puede actualizar todo o un solo elemento de una matriz.

Aquรญ estรก el contenido de la tabla Empleados:

Modificaciรณn PostgreSQL Formaciรณn

Actualicemos el segundo nรบmero de telรฉfono del empleado James Bush, cuya identificaciรณn es 3:

Modificaciรณn PostgreSQL Formaciรณn

Ejecute el siguiente comando:

UPDATE Employees
SET contact [ 2 ] = '(408)-589-89347'
WHERE
   id = 3;

El comando deberรญa ejecutarse correctamente:

Modificaciรณn PostgreSQL Formaciรณn

Consultamos la tabla para comprobar si el cambio fue exitoso:

Modificaciรณn PostgreSQL Formaciรณn

El cambio fue exitoso.

Buscando en un PostgreSQL Formaciรณn

Actualmente, nuestra tabla de Empleados es la siguiente:

Buscando en un PostgreSQL Formaciรณn

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:

Buscando en un PostgreSQL Formaciรณn

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:

Matrices en expansiรณn

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)

  1. Desde la barra de navegaciรณn de la izquierda, haga clic en rbases.
  2. Haga clic en el botรณn Demostraciรณn

Creamos  PostgreSQL Matrices usando pgAdmin

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.

Creamos  PostgreSQL Matrices usando pgAdmin

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:

Inserciรณn PostgreSQL Valores de matriz

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:

Inserciรณn PostgreSQL Valores de matriz

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:

Consulta de datos de matriz utilizando pgAdmin

Deberรญa devolver lo siguiente:

Consulta de datos de matriz utilizando pgAdmin

Paso 3) Para ver los primeros contactos de los empleados:

  1. Escriba la siguiente consulta en el editor de consultas:
    SELECT name, contact[1]
    FROM Employees;
    
  2. Haga clic en el botรณn Ejecutar.

Consulta de datos de matriz utilizando pgAdmin

Deberรญa devolver lo siguiente:

Consulta de datos de matriz utilizando pgAdmin

Paso 4) Para combinar la instrucciรณn SELECT con la clรกusula WHERE:

  1. Escriba el siguiente comando en el editor de consultas:
    SELECT
       name
    FROM
       Employees
    WHERE
       contact [ 2 ] = '(408)-567-78234';
    
  2. Haga clic en el botรณn Ejecutar.

Consulta de datos de matriz utilizando pgAdmin

Deberรญa devolver lo siguiente:

Consulta de datos de matriz utilizando pgAdmin

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.

Modificaciรณn PostgreSQL Matriz usando pgAdmin

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.

Modificaciรณn PostgreSQL Matriz usando pgAdmin

Deberรญa devolver lo siguiente:

Modificaciรณn PostgreSQL Matriz usando pgAdmin

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.

Buscando en un PostgreSQL Matriz usando pgAdmin

Deberรญa devolver lo siguiente:

Buscando en un PostgreSQL Matriz usando pgAdmin

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.

Expandiendo matrices usando pgAdmin

Deberรญa devolver lo siguiente:

Expandiendo matrices usando pgAdmin

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().

Descargue la Base de Datos utilizada en este Tutorial

Resumir este post con: