SQL: la condición existe

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

SQL: la condición existe

Este tutorial de SQL explica cómo usar la condición SQL EXISTS con sintaxis y ejemplos.

describir

La condición SQL EXISTS se usa junto con una subconsulta y se considera satisfecha si la subconsulta devuelve al menos una fila. Se puede usar en declaraciones SELECT, INSERT, UPDATE o DELETE.

sintaxis

La sintaxis de la condición EXISTS en SQL es:

WHERE EXISTS ( subquery );

parámetro o parámetro

Subconsultas Una subconsulta es una instrucción SELECT. Si la subconsulta devuelve al menos un registro en su conjunto de resultados, la cláusula EXISTS se evaluará como verdadera y se cumplirá la condición EXISTS. Si la subconsulta no devuelve registros, la cláusula EXISTS se evalúa como falsa y no se cumple la condición EXISTS.

notas

  • Las instrucciones SQL que utilizan condiciones EXISTS son muy ineficientes porque la subconsulta se vuelve a ejecutar para cada fila en la tabla de consulta externa. Hay formas más eficientes de escribir la mayoría de las consultas que no usan condiciones EXISTS.

Ejemplo de DDL/DML

Si desea seguir este tutorial, obtenga DDL para crear las tablas y DML para completar los datos. ¡Entonces pruebe los ejemplos en su propia base de datos!

Ejemplo: uso de la condición EXISTS con la instrucción SELECT

Primero veamos un ejemplo que muestra cómo usar la condición EXISTS con una instrucción SELECT.

En este ejemplo, tenemos una tabla de clientes con los siguientes datos:

Identificación del clienteapellidonombresitio favorito
4000jacksonJoséRed de Ciencia y Tecnología
5000Herrerosimpledigminecraft.com
6000Fergusonsamanthagranactividad.com
7000ReynoldsAlanrevisatumath.com
8000andersonPáginanulo
9000JohnsonDerekRed de Ciencia y Tecnología

También existe una tabla llamada pedidos con los siguientes datos:

Solicitar IDIdentificación del clientefecha de orden
170002016/04/18
250002016/04/18
380002016/04/19
440002016/04/20

Ahora busquemos todos los registros de la tabla de clientes donde hay al menos un registro con el mismo ID_cliente en la tabla de pedidos. Ingrese la siguiente instrucción SELECT:

SELECT *
FROM customers
WHERE EXISTS 
  (SELECT *
   FROM orders
   WHERE customers.customer_id = orders.customer_id);

Se seleccionarán 4 registros. Estos son los resultados que deberías ver:

Identificación del clienteapellidonombresitio favorito
4000jacksonJoséRed de Ciencia y Tecnología
5000Herrerosimpledigminecraft.com
7000ReynoldsAlanrevisatumath.com
8000andersonPáginanulo

En este ejemplo, hay 4 registros para clientes en los que aparece el valor customer_id en la tabla de pedidos.

Ejemplo: uso de la condición EXISTS con instrucción UPDATE

Veamos un ejemplo del uso de la condición EXISTS en una instrucción UPDATE.

En este ejemplo, tenemos una tabla llamada productos con los siguientes datos:

ID del Productonombre del productocategoria ID
1pera50
2plátano50
3mandarina50
4manzana50
5pan de molde75
6jamón25
7kleenexnulo

También hay una tabla llamada summary_data que contiene los siguientes datos:

ID del Productocategoría actual
110
210
310
410
510

Ahora actualicemos la tabla summary_data con los valores de la tabla de productos. Ingrese la siguiente instrucción SQL:

UPDATE summary_data
SET current_category = (SELECT category_id
   FROM products
   WHERE products.product_id = summary_data.product_id)
WHERE EXISTS (SELECT category_id
   FROM products
   WHERE products.product_id = summary_data.product_id);

Habrá 5 registros actualizados. Seleccione datos de la tabla summary_data nuevamente:

SELECT * FROM summary_data;

Estos son los resultados que deberías ver:

ID del Productocategoría actual
150
250
350
450
575
810

Este ejemplo actualiza el campo categoría_actual en la tabla de datos_resumen con el id_categoría en la tabla de productos donde coincide el valor id_producto. Se han actualizado los primeros 5 registros de la tabla summary_data.

propina: Si no incluyéramos la condición EXISTE, la consulta ACTUALIZAR actualizaría el campo categoría_actual en la fila 6 de la tabla de datos_resumen a NULL (porque la tabla de productos no tiene registro para product_id=8).

Ejemplo: uso de la condición EXISTS con instrucción DELETE

Veamos un ejemplo del uso de la condición EXISTS en una instrucción DELETE.

En este ejemplo, tenemos una tabla llamada clientes con los siguientes datos:

Identificación del clienteapellidonombresitio favorito
4000jacksonJoséRed de Ciencia y Tecnología
5000Herrerosimpledigminecraft.com
6000Fergusonsamanthagranactividad.com
7000ReynoldsAlanrevisatumath.com
8000andersonPáginanulo
9000JohnsonDerekRed de Ciencia y Tecnología

También existe una tabla llamada pedidos con los siguientes datos:

Solicitar IDIdentificación del clientefecha de orden
170002016/04/18
250002016/04/18
380002016/04/19
440002016/04/20
5nulo2016/05/01

Ingrese la siguiente instrucción DELETE:

DELETE FROM orders
WHERE EXISTS
  (SELECT *
   FROM customers
   WHERE customers.customer_id = orders.customer_id
   AND customers.last_name="Jackson");

Se eliminará 1 registro. Seleccione de nuevo los datos de la tabla de pedidos:

SELECT * FROM orders;

Estos son los resultados que deberías ver:

Solicitar IDIdentificación del clientefecha de orden
170002016/04/18
250002016/04/18
380002016/04/19
5nulo2016/05/01

Este ejemplo eliminará todos los registros de la tabla de pedidos donde hay un registro en la tabla de clientes con un last_name de “Jackson” y un valor de customer_id coincidente en ambas tablas. En este ejemplo, se elimina el registro con order_id=4.

Si desea determinar el número de filas para eliminar, puede ejecutar la siguiente instrucción SELECT adelante Ejecutar borrar.

SELECT COUNT(*) FROM orders
WHERE EXISTS
  (SELECT *
   FROM customers
   WHERE customers.customer_id = orders.customer_id
   AND customers.last_name="Jackson");

Esto devuelve la cantidad de registros que se eliminarán cuando se ejecute la instrucción DELETE.

contando

1

Ejemplo: uso de NOT con la condición EXISTS

Finalmente, las condiciones NOT se pueden combinar con las condiciones EXISTS para crear condiciones NOT EXISTS. Veamos un ejemplo de cómo usar la condición NO EXISTE en SQL.

En este ejemplo, tenemos una tabla llamada clientes con los siguientes datos:Identificación del clienteapellidonombre
sitio favorito4000jacksonJosé
Red de Ciencia y Tecnología5000Herrerosimple
digminecraft.com6000Fergusonsamantha
granactividad.com7000ReynoldsAlan
revisatumath.com8000andersonPágina
nulo9000JohnsonDerek

Red de Ciencia y Tecnología

También existe una tabla llamada pedidos con los siguientes datos:Solicitar IDIdentificación del cliente
fecha de orden17000
2016/04/1825000
2016/04/1838000
2016/04/1944000
2016/04/205nulo

2016/05/01

SELECT *
FROM customers
WHERE NOT EXISTS
  (SELECT * 
   FROM orders
   WHERE customers.customer_id = orders.customer_id);

Ingrese la siguiente instrucción SQL:

Se seleccionarán 2 registros. Estos son los resultados que deberías ver:Identificación del clienteapellidonombre
sitio favorito6000Fergusonsamantha
granactividad.com9000JohnsonDerek

Red de Ciencia y Tecnología Este ejemplo devolverá todos los registros en la tabla de clientes. No

Un registro en la tabla de pedidos para un customer_id determinado.

(Visited 12 times, 1 visits today)