¿Qué es PostgreSQL Existe?
El operador EXISTS prueba si existe una fila en una subconsulta. Esto significa que el operador se usa junto con una subconsulta. Se dice que el operador Exists se ha cumplido cuando se encuentra al menos una fila en la subconsulta. Puede usar 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 Instrucción INSERT
- Con Instrucción UPDATE
- Con Instrucción DELETE
- Con pgAdmin
Sintaxis
Aquí es la sintaxis de la instrucción PostgreSQL EXISTS:
WHERE EXISTS (subquery);
La sintaxis anterior muestra que el operador EXISTS toma un argumento, que es una subconsulta. La subconsulta es simplemente una instrucción SELECT que debe comenzar con un SELECT * en lugar de una lista de nombres de columna o expresiones.
Con la instrucción SELECT
Veamos cómo usar una instrucción SELECT con el operador EXISTS. Tenemos las siguientes tablas:
Reservar:
Precio:
Ejecute la siguiente instrucción:
SELECT *FROM BookWHERE EXISTS (SELECT * FROM Price WHERE Book.id = Price.id);
Esto devuelve lo siguiente:
El comando anterior debe devolver todos los registros de la tabla Book cuyo id coincida con el id de cualquier registro de la subconsulta. Sólo una identificación coincidió. Por lo tanto, solo se devolvió un registro.
Con la instrucción INSERT
Podemos usar el operador EXISTS en una instrucción INSERT. Tenemos los siguientes 3 tablas:
Libro:
Precio:
Price2:
podemos, a continuación, ejecute la siguiente instrucción:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT id FROM Book WHERE Book.id = Price2.id);
La tabla de Precios es la siguiente:
La fila con un id de 5 en la tabla denominada Price2 fue igualada. Este registro se insertó en la tabla de precios.
Con la instrucción UPDATE
Podemos usar el operador EXISTS en una instrucción UPDATE.
Ejecute la siguiente consulta:
UPDATE PriceSET price = (SELECT price FROM Price2 WHERE 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 una fila coincidió, 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 hecho una actualización.
Con la instrucción DELETE
Una instrucción PostgreSQL DELETE puede usar el operador EXISTS. Aquí hay un ejemplo:
DELETE FROM PriceWHERE EXISTS (SELECT * FROM Price2 WHERE Price.id = Price2.id);
La tabla de precios es ahora la siguiente:
Se ha eliminado la fila con un id de 5.
Con pgAdmin
Ahora veamos cómo se pueden realizar estas acciones usando pgAdmin.
Con la instrucción SELECT
Para lograr lo mismo a través de pgAdmin, haga lo siguiente:
Paso 1) Inicie sesión en su cuenta de pgAdmin.
Paso 2)
- Desde la barra de navegación en las Bases de datos del botón izquierdo del ratón.
- Haga clic en Demo.
Paso 3) Escriba la consulta en el editor de consultas:
SELECT *FROM BookWHERE EXISTS (SELECT * FROM Price WHERE Book.id = Price.id);
Paso 4) Haga clic en el botón Ejecutar.
Debe devolver lo siguiente:
Con la instrucción INSERT
Para lograr lo mismo a través de pgAdmin, haga lo siguiente:
Paso 1) Inicie sesión en su cuenta de pgAdmin.
Paso 2)
- Desde la barra de navegación en las Bases de datos del botón izquierdo del ratón.
- Haga clic en Demo.
Paso 3) Escriba la consulta en el editor de consultas:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT id FROM Book WHERE Book.id = Price2.id);
Paso 4) Haga clic en el botón Ejecutar.
La tabla de precios ahora debería ser la siguiente:
Con la instrucción de actualización
Para lograr lo mismo a través de pgAdmin, haga lo siguiente:
Paso 1) Inicie sesión en su cuenta de pgAdmin.
Paso 2)
- Desde la barra de navegación en las Bases de datos del botón izquierdo del ratón.
- Haga clic en Demo.
Paso 3) Escriba la consulta en el editor de consultas:
UPDATE PriceSET price = (SELECT price FROM Price2 WHERE 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 la instrucción DELETE
Para lograr lo mismo a través de pgAdmin, haga lo siguiente:
Paso 1) Inicie sesión en su cuenta de pgAdmin.
Paso 2)
- Desde la barra de navegación en las Bases de datos del botón izquierdo del ratón.
- Haga clic en Demo.
Paso 3) Escriba la consulta en el editor de consultas:
DELETE FROM PriceWHERE EXISTS (SELECT * FROM Price2 WHERE 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 prueba si existe una fila en una subconsulta.
- Se utiliza con una subconsulta y se dice que se ha cumplido cuando la subconsulta devuelve al menos una fila.
- Se utiliza junto con las instrucciones SELECT, UPDATE, INSERT y DELETE.
Descargue la base de datos utilizada en este tutorial