PostgreSQL EXISTE con ejemplos

¿Qué es PostgreSQL Exists?

El operador EXISTS comprueba si existen filas en una subconsulta. Esto significa que el operador se usa junto con una subconsulta. Se dice que el operador Exists se cumple cuando se encuentra al menos una fila en la subconsulta. Puede utilizar esta operación junto con las instrucciones SELECT, UPDATE, INSERT y DELETE.

En este tutorial de PostgreSQL, aprenderá lo siguiente:

  • Sintaxis
  • Con instrucción SELECT
  • Con declaración INSERT
  • Con declaración UPDATE
  • Con declaración DELETE
  • Con pgAdmin

Sintaxis

Aquí está la sintaxis de la declaración EXISTS de PostgreSQL:

WHERE EXISTS (subquery);

La sintaxis anterior muestra que el operador EXISTS acepta un argumento, que es una subconsulta. La subconsulta es simplemente una instrucción SELECT que debe comenzar con SELECT * en lugar de una lista de expresiones o nombres de columna.

Con instrucción SELECT

Veamos cómo usar una instrucción SELECT con el operador EXISTS. Disponemos de las siguientes tablas:

Libro:

Precio:

Ejecute la siguiente declaración:

SELECT *FROM BookWHERE EXISTS (SELECT *FROM PriceWHERE Book.id = Price.id);

Esto devuelve lo siguiente:

El comando anterior debe devolver todos los registros de la tabla Libro cuyo id coincida con el id de cualquier registro de la subconsulta. Solo se coincidió con una identificación. Por lo tanto, solo se devolvió un registro.

Con declaración INSERT

Podemos usar el operador EXISTS en una instrucción INSERT. Tenemos las siguientes 3 tablas:

Libro:

Precio:

Precio2:

Luego podemos ejecutar la siguiente declaración:

INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT idFROM BookWHERE Book.id = Price2.id);

La tabla de precios ahora es la siguiente:

Se hizo coincidir la fila con un id de 5 en la tabla denominada Price2. Luego, este registro se insertó en la tabla de precios.

Con declaración UPDATE

Podemos usar el operador EXISTS en una instrucción UPDATE.

Ejecute la siguiente consulta:

UPDATE PriceSET price = (SELECT priceFROM Price2WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);

Estamos actualizando la columna de precios de la tabla de precios. Nuestro objetivo es que los precios de los artículos que comparten una identificación sean los mismos. Solo se emparejó una fila, es decir, 5.

Sin embargo, dado que los precios son iguales, es decir, 205, no se realizó ninguna actualización. Si hubiera una diferencia, se habría realizado una actualización.

Con declaración DELETE

Una declaración DELETE de PostgreSQL puede utilizar el operador EXISTS. Aquí hay un ejemplo:

DELETE FROM PriceWHERE EXISTS (SELECT *FROM Price2WHERE Price.id = Price2.id);

La tabla de precios ahora es la siguiente:

Se eliminó la fila con una identificación de 5.

Con pgAdmin

Ahora veamos cómo se pueden realizar estas acciones usando pgAdmin.

Con instrucción SELECT

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 Bases de datos.
  2. Haga clic en Demo.

Paso 3) Escriba la consulta en el editor de consultas:

SELECT *FROM BookWHERE EXISTS (SELECT *FROM PriceWHERE Book.id = Price.id);

Paso 4) Haga clic en el botón Ejecutar.

Debería devolver lo siguiente:

Con declaración INSERT

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 Bases de datos.
  2. Haga clic en Demo.

Paso 3) Escriba la consulta en el editor de consultas:

INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT idFROM BookWHERE Book.id = Price2.id);

Paso 4) Haga clic en el botón Ejecutar.

La tabla de precios ahora debería ser la siguiente:

Con declaración UPDATE

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 Bases de datos.
  2. Haga clic en Demo.

Paso 3) Escriba la consulta en el editor de consultas:

UPDATE PriceSET price = (SELECT priceFROM Price2WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);

Paso 4) Haga clic en el botón Ejecutar.

La tabla de precios ahora debería ser la siguiente:

Con declaración DELETE

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 Bases de datos.
  2. Haga clic en Demo.

Paso 3) Escriba la consulta en el editor de consultas:

DELETE FROM PriceWHERE EXISTS (SELECT *FROM Price2WHERE Price.id = Price2.id);

Paso 4) Haga clic en el botón Ejecutar.

La tabla de precios ahora debería ser la siguiente:

Resumen

  • El operador EXISTS comprueba si existen filas en una subconsulta.
  • Se usa con una subconsulta y se dice que se cumple cuando la subconsulta devuelve al menos una fila.
  • Se utiliza junto con las sentencias SELECT, UPDATE, INSERT y DELETE.

Descargue la base de datos utilizada en este tutorial

Articulos interesantes...