Uso de SI EXISTE en la base de datos MySQL
En este tutorial, nuestro objetivo es explorar la declaración IF EXISTS
en MySQL.
Sin embargo, antes de comenzar, creamos un conjunto de datos ficticio para trabajar. Aquí creamos una tabla, student_details
, junto con algunas filas en ella.
-- create the table student_details
CREATE TABLE student_details(
stu_id int,
stu_firstName varchar(255) DEFAULT NULL,
stu_lastName varchar(255) DEFAULT NULL,
primary key(stu_id)
);
-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_lastName)
VALUES(1,"Preet","Sanghavi"),
(2,"Rich","John"),
(3,"Veron","Brow"),
(4,"Geo","Jos"),
(5,"Hash","Shah"),
(6,"Sachin","Parker"),
(7,"David","Miller");
La consulta anterior crea una tabla junto con filas con el nombre y apellido del estudiante. Para ver las entradas en los datos, usamos el siguiente código.
SELECT * FROM student_details;
El código mencionado anteriormente dará el siguiente resultado:
stu_id stu_firstName stu_lastName
1 Preet Sanghavi
2 Rich John
3 Veron Brow
4 Geo Jos
5 Hash Shah
6 Sachin Parker
7 David Miller
Uso básico del operador EXISTS
en MySQL
La condición EXISTS
en MySQL se usa generalmente junto con una subconsulta que consiste en una condición que debe cumplirse. Si se cumple esta condición, la subconsulta devuelve un mínimo de una fila. Este método se puede utilizar para DELETE
, SELECT
, INSERT
, o UPDATE
una sentencia.
-- Here we select columns from the table based on a certain condition
SELECT column_name
FROM table_name
WHERE EXISTS (
SELECT column_name
FROM table_name
WHERE condition
);
Aquí, condition
representa la condición de filtrado al seleccionar las filas de una columna en particular.
Para comprobar si existe un alumno en la columna stu_firstName
donde stu_id
= 4, usaremos el siguiente código:
-- Here we save the output of the code as RESULT
SELECT EXISTS(SELECT * from student_details WHERE stu_id=4) as RESULT;
El código mencionado anteriormente dará el siguiente resultado:
RESULT
1
1 en el bloque de código anterior representa un valor booleano, lo que sugiere que hay un estudiante con stu_id
= 4.
Uso del operador IF EXISTS
en MySQL
A veces, deseamos verificar la existencia de un valor particular en una tabla y alterar nuestra salida en función de la existencia de esa condición. La sintaxis de esta operación es la siguiente:
SELECT IF( EXISTS(
SELECT column_name
FROM table_name
WHERE condition), 1, 0)
Aquí, la salida de la consulta es 1, si la declaración IF
devuelve Verdadero. De lo contrario, devuelve 0.
Escribamos una consulta que devuelva Yes, exists
, si un estudiante con stu_id
=4 existe en la tabla. De lo contrario, queremos devolver No, no existe
. Para realizar esta operación, eche un vistazo al siguiente código:
SELECT IF( EXISTS(
SELECT stu_firstName
FROM student_details
WHERE stu_id = 4), 'Yes, exists', 'No, does not exist') as RESULT;
El código mencionado anteriormente dará el siguiente resultado:
RESULT
Yes, exists
Ahora, intentemos encontrar un alumno con stu_id
= 11. Esta operación se puede realizar con la siguiente consulta:
SELECT IF( EXISTS(
SELECT stu_firstName
FROM student_details
WHERE stu_id = 11), 'Yes, exists', 'No, does not exist') as RESULT;
Nota: Usamos ALIAS RESULT
para mostrar nuestra salida en el bloque de código de salida.
El código mencionado anteriormente dará el siguiente resultado:
RESULT
No, does not exist
Nota: Generalmente, las consultas SQL que usan el método EXISTS
en MySQL son muy lentas porque la subconsulta es RE-EJECUTAR para cada entrada en la tabla de la consulta externa. Existen métodos más rápidos y eficientes para formular la mayoría de las consultas sin utilizar la condición EXISTS
.
Por lo tanto, hemos implementado con éxito IF EXISTS
en MySQL.