Logo Studenta

Subconsultas SQL - Inner Join

¡Este material tiene más páginas!

Vista previa del material en texto

Subconsultas en 
SQL
Cláusula INNER 
JOIN
Base de datos I - Profa. Ing. Dennis Chirinos
¿QUÉ ES UNA SUBCONSULTA SQL?
Una subconsulta es una instrucción SELECT SQL anidada
dentro de otra instrucción SELECT, INSERT, DELETE o
UPDATE. Además, debes saber que se realizarán casi siempre
dentro de la cláusula WHERE de las consultas.
Otra forma de explicarlo sería diciendo que tenemos un
SELECT dentro de otra consulta SELECT, INSERT ... INTO,
UPDATE o DELETE.
Además existen tres formas distintas de crear una subconsulta:
● Con ANY, ALL, SOME precediendo a la consulta anidada.
● Haciendo uso de la expresión IN o NOT IN antes de la subconsulta.
● EXISTS o NOT EXISTS y a continuación la subquery.
¿CÓMO SE USA UNA 
SUBCONSULTA SQL?
Para realizar una consulta de SQL con subqueries
(subconsultas) se necesita:
• Una consulta normalmente formada del tipo SELECT,
UPDATE o DELETE.
• Una cláusula WHERE o HAVING con las condiciones
deseadas más uno de los operadores SQL anteriores (ANY,
ALL, SOME, IN, NOT IN, EXISTS o NOT EXISTS) u operadores
de comparación como "=", ">" o "<"
• La consulta SELECT entre paréntesis.
¿CÓMO SE USA UNA 
SUBCONSULTA SQL?
Hay varias puntos importantes sobre su uso a tener en cuenta
para evitar errores:
• La subconsulta siempre irá entre paréntesis, sin excepciones.
• Las subconsultas se pueden anidar dentro de otras
subconsultas.
• La subconsulta siempre deberá devolver el mismo tipo y
número de valores a comparar: no puede haber una
subconsulta que devuelva dos columnas para una
comparación con 1 columna.
• La subconsulta siempre debería (aunque no es obligatorio)
de colocarse a la derecha del operador relacional.
CONSULTA SELECT EJEMPLO
Primero se va a crear una consulta SELECT normal, que obtenga el
nombre y apellidos de las filas de una tala llamada ciudadanos
Ahora se añade la cláusula WHERE a la consulta anterior y se le va
añadir uno de los operadores compatibles.
Añadir la cláusula where
Subconsulta entre paréntesis
Y por último se va a realizar la subconsulta entre paréntesis que
seleccione la columna DNI de una tabla "delincuentes":
¡Y Listo! Lo que ocurrirá ahora es que la base de datos hará:
 Primero resolver la subconsulta.
 Después comparara los valores devueltos por el DNI de la
subconsulta con el dni de la consulta SELECT "PADRE".
 Devolverá los valores de la consulta principal como resultado de la
consulta.
EJEMPLOS DE 
SUBCONSULTAS EN 
SQL
id
título
lenguaje
resumen
nota
total
id
nombre
edad
es_famoso
id_videojuego
fecha_registro
Tabla “videojuego” Tabla “jugador”
Para los siguientes ejemplos se tomarán en cuenta las
siguientes tablas:
Ahora que ya están las dos tablas vamos a realizar unas
subconsultas.
EJEMPLO SUBCONSULTAS 1
Recuperar todos los juegos en los que al menos juega 1 jugador:
Otra forma alternativa de realizar esta subconsulta sería utilizando la
cláusula ANY o SOME:
Nota: las dos condiciones son iguales ya que SOME es un ALIAS de
ANY, lo que quiere decir que son el mismo comando.
Ejemplo subconsultas 2
En el siguiente ejemplo se seleccionará todos los jugadores que
juegan a un juego en Español:
Ejemplo 3 consultas anidadas
Ahora se va a realizar otra consulta con una subconsulta y funciones
agregadas, en concreto utilizando MAX.
Ejemplo de subconsulta con UPDATE SQL
Con las consultas SELECT se ven todas las posibilidades de las subconsultas,
pero para que se vea de forma gráfica un ejemplo de como usarlas en
UPDATE o DELETE te dejo ahora un ejemplo.
Por otra parte, se va a añadir 1 al contador de total_jugadores de aquellos
videojuegos que tienen un jugador jugándolo en la fecha '2019-12-01'
CLÁUSULAS 
JOIN E 
INNER JOIN
¿Qué son las consultas join y por qué son 
importantes? 
Nosotros podemos consultar el contenido de una tabla
muy puntualmente:
Sin embargo, generalmente necesitamos combinar información de
distintas tablas.
Obtener datos específicos de distintas tablas, y presentar la información
de una mejor manera, resulta de ayuda para la toma de decisiones.
¿Qué son las consultas join y por qué son 
importantes? 
Cuando trabajamos con bases de datos relacionales:
 Una tabla fuerte representa una entidad independiente, y una
tabla débil representa una entidad que depende de otra.
 Estas relaciones (dependencias entre tablas) consisten en
columnas que tienen un mismo tipo de dato.
Entonces, la cláusula JOIN nos permite asociar 2 o más tablas, en
base a una columna que tengan en común.
Ejemplo Empleados y Departamentos
A continuación vamos a analizar la cláusula JOIN y sus variantes.
Pero primero, empecemos definiendo 2 tablas, que serán la base
para nuestros ejemplos posteriores.
Por un lado vamos a tener una tabla Empleados (que almacenará
una lista de empleados y el id del departamento al que pertenecen):
Y por otro lado, una tabla Departamentos (con la lista de
departamentos que existen en la empresa).
CLÁUSULA INNER JOIN
Lo más usual, lo primero que se suele aprender, es el uso de INNER
JOIN, o generalmente abreviado como JOIN.
Esta cláusula busca coincidencias entre 2 tablas, en función a una
columna que tienen en común. De tal modo que sólo la intersección
se mostrará en los resultados.
Por ejemplo, si queremos listar a los empleados e indicar el nombre
del departamento al que pertenecen, podemos hacer lo siguiente:
Con esto, nuestro resultado será:
Y a partir de aquí podemos notar lo siguiente:
● El empleado "Williams" no aparece en los resultados, ya que no
pertenece a ningún departamento existente.
● El departamento "Marketing" tampoco aparece, ya que ningún
empleado pertenece a dicho departamento.
¿Por qué ocurre esto? Porque JOIN muestra como resultado la
intersección de ambas tablas.
También hay que tener en cuenta que, en los resultados vemos 4
columnas. Las 2 primeras se corresponden con la tabla Empleados y las
últimas con Departamentos.
Esto ocurre porque estamos seleccionando todas las columnas con un *.
Si queremos, podemos ser específicos y seleccionar sólo 2 columnas
(además de asignarles un alias):
Y obtener:
GRACIAS!
www.dennischirinos.wordpress.com / profedaniela03@gmail.com

Continuar navegando