Descarga la aplicación para disfrutar aún más
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
Compartir