SQL Esencial: Joins, Subconsultas y Cláusulas de Filtrado Avanzadas

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 6,8 KB

Tipos de JOIN en SQL

El comando JOIN se emplea para obtener información de dos o más tablas y combinar dicha información en una única salida.

Combinaciones Externas

  • LEFT JOIN (o LEFT OUTER JOIN): Se emplea una combinación externa izquierda para mostrar todos los registros de la tabla de la izquierda. Si no se encuentra coincidencia con la tabla de la derecha, el registro muestra los campos de la segunda tabla establecidos a NULL.

  • RIGHT JOIN (o RIGHT OUTER JOIN): Una combinación externa derecha opera del mismo modo, solo que la tabla derecha es la que localiza los registros en la tabla izquierda. Si no se encuentra coincidencia, los campos de la tabla izquierda se establecen a NULL.

Subconsultas en SQL

Las subconsultas son consultas anidadas dentro de otra consulta SQL. Permiten realizar operaciones complejas de filtrado y selección.

Subconsultas en la Cláusula WHERE

Las subconsultas en la cláusula WHERE se utilizan para filtrar los resultados de la consulta principal basándose en los resultados de la subconsulta. A continuación, se describen los tipos de tests más comunes:

  • Test de Comparación: Compara el valor de una expresión con el valor único producido por una subconsulta y devuelve un resultado TRUE si la comparación es cierta.

  • Test de Pertenencia al Conjunto IN: Compara un único valor de datos con una columna de valores producida por una subconsulta y devuelve un resultado TRUE si el valor coincide con uno de los valores de la columna.

  • Test de Existencia EXIST: El test de existencia EXIST comprueba si una subconsulta produce alguna fila de resultados. Devuelve TRUE si la subconsulta devuelve al menos una fila, y FALSE en caso contrario.

  • Test Cuantificado ANY: Se utiliza con uno de los seis operadores de comparación (=, <>, <, <=, >, >=) para comprobar el valor del test con cada valor de datos en la columna de la subconsulta, uno a la vez. Si alguna de las comparaciones individuales produce un resultado TRUE, el test ANY devuelve un resultado TRUE.

  • Test Cuantificado ALL: Se utiliza también con uno de los seis operadores de comparación. Funciona igual que ANY, con la diferencia de que si todas las comparaciones individuales producen un resultado TRUE, el test ALL devuelve un resultado TRUE.

Consideraciones para Subconsultas en WHERE

  • Una subconsulta debe devolver una única columna como resultado (es decir, en la sentencia SELECT de la subconsulta solo se especifica un elemento).

  • La cláusula ORDER BY no puede usarse directamente en una subconsulta dentro de WHERE.

  • Las subconsultas se utilizan para realizar comparaciones que implican condiciones como 'alguno', 'todas', 'nunca', 'más o menos que', 'superior a', 'inferior a'.

Subconsultas en la Cláusula HAVING

También pueden utilizarse subconsultas en la cláusula HAVING y funcionan como parte de la selección de un grupo de filas efectuada por esta cláusula. Se aplican después de la agrupación.

  • Debe estar asociada a una cláusula GROUP BY.

  • Permite comparar agregados (que algo sea más o menos que algo), donde la condición se especifica en la subconsulta.

Ejemplos de Condiciones Comunes en la Cláusula WHERE

La cláusula WHERE es fundamental para filtrar registros en SQL. A continuación, se presentan ejemplos de su uso:

  • Igualdad exacta: WHERE APELLIDO = 'ALVAREZ'

  • Comienza con: WHERE APELLIDO LIKE 'A%' (para apellidos que comienzan con 'A')

  • Termina con: WHERE APELLIDO LIKE '%Z' (para apellidos que terminan con 'Z')

  • Contiene: WHERE APELLIDO LIKE '%Z%' (para apellidos que contienen 'Z')

  • Empieza con un rango de caracteres: WHERE APELLIDO LIKE '[A-B]%' (para apellidos que empiezan con 'A' o 'B')

  • Dentro de un rango alfabético: WHERE APELLIDO LIKE '[A-F]%' (para apellidos que empiezan con una letra entre 'A' y 'F')

  • Coincidencia con patrón de caracteres: WHERE APELLIDO LIKE 'PERE_' (para 'Perez' o 'Perea', donde '_' representa un solo carácter)

  • Rango numérico o de fecha: WHERE VALOR BETWEEN 1 AND 5 (para valores entre 1 y 5, ambos inclusive)

  • Pertenencia a un conjunto de valores: WHERE COD_CLIENTE IN (12345, 67890) (para códigos de cliente específicos)

  • Facturas del año actual: WHERE YEAR(FECHA) = YEAR(GETDATE())

  • Facturas del año pasado: WHERE YEAR(FECHA) = YEAR(GETDATE()) - 1

  • Exclusión de un valor: WHERE NRO_FACTURA NOT IN (1) (para número de factura diferente de 1)

Consideraciones Generales en Consultas SQL

  • En la cláusula SELECT solo se especifican las columnas que se desean listar o mostrar en el resultado de la consulta. Si se utiliza GROUP BY, las columnas seleccionadas deben ser parte de la agrupación o funciones de agregado.

  • Si se requiere una condición de filtrado para algo que no se necesita mostrar en el resultado final, esta condición se incluye en la cláusula WHERE o HAVING, no necesariamente en SELECT.

Entradas relacionadas: