7th Jul 2022 Lectura de 6 minutos ¿Qué es una consulta SQL en línea? Kamil Bladoszewski SQL aprender SQL subconsulta Índice Subconsulta vs. Vistas en línea ¿Qué es una consulta en línea? Vistas en línea fuera de Oracle Vistas en línea vs. Subconsultas ¿Cuánto importan los nombres? ¡No mucho! ¿Ha oído alguna vez el término "consulta en línea"? ¿En qué se diferencian de las subconsultas y las tablas derivadas? ¿Has buscado esto en numerosos lugares y todavía no sabes la respuesta? Emprendamos un viaje para descubrirlo juntos. La primera vez que oí el término "consulta en línea", me sorprendió un poco. No parece uno de los matices de SQL y creía conocer todos los conceptos básicos. Desgraciadamente, buscar el término en Google no fue de mucha ayuda: sólo había unos pocos resultados y todas las respuestas eran vagas. Me llevó bastante tiempo investigar bien y aprender sobre las consultas en línea en SQL. Por eso he decidido escribir este artículo y reunir todo lo que he aprendido en un solo lugar. Subconsulta vs. Vistas en línea ¿Has oído hablar de una subconsulta? Es una consulta dentro de otra consulta - al menos en la terminología que me enseñaron. Luego, está la frase vista en línea. Una vista en línea es una consulta en la cláusula FROM de otra consulta. Según aprendí, esto la convierte en lo mismo que una subconsulta. Sin embargo, en Oracle, las vistas inline se colocan sólo en la cláusula FROM, mientras que las sub consultas están en las cláusulas SELECT o WHERE. (Ver subconsulta en las preguntas frecuentes de Oracle y vista en línea en las preguntas frecuentes de Oracle). En otras palabras, Oracle los trata como dos conceptos distintos. Por lo tanto, si has aprendido sobre subconsultas fuera de Oracle, podrás entender las vistas en línea. Sin embargo, debes recordar que los usuarios de Oracle pueden malinterpretarte si utilizas los términos subconsultas y vistas en línea indistintamente. No vamos a dedicar más tiempo a las subconsultas ahora. Si no estás familiarizado con ellas, te recomiendo que leas el Subconsultas SQL artículo en el blog LearnSQL.es para obtener una visión general del tema. ¿Qué es una consulta en línea? Una consulta en línea es una consulta en la cláusula FROM. Los datos se seleccionan de la misma manera que en una tabla. Veamos un ejemplo de una consulta en línea. Trabajaremos con algunos datos de películas de un sitio donde la gente califica las películas que ha visto: movie - Contiene información sobre las películas: id - Un ID único para cada película. title - El título de la película. year - Cuándo se estrenó la película. director_id - El ID del director de la película. rating - Almacena las valoraciones de los usuarios sobre las películas: id - Un identificador único para cada calificación. rating - Un número del 1 (que significa "es tan mala que mostrar esta película debería ser ilegal") al 10 (que significa "podría ver esta película el resto de mi vida, 24/7"). movie_id - El ID de la película calificada. user_id - el ID del usuario que ha calificado la película. movie idtitleyeardirector_id 1The Lord of the Rings: The Return of the King200314 2Mad Max: Fury Road201569 3Avengers: Endgame201971 rating idratingmovie_iduser_id 171332 261469 3101767 4101111 58184 622417 772441 8102118 95274 1022630 1110399 1243189 1373887 1483521 1543144 La consulta mostrará la calificación media más alta de la película. Echa un vistazo: SELECT MAX(avg_rating) AS max_avg_rating FROM ( SELECT AVG(rating) AS avg_rating FROM rating GROUP BY movie_id ) AS avg_movie_ratings; max_avg_rating 8.2 En la cláusula FROM, hemos utilizado la vista en línea (llamada avg_movie_ratings y mostrada en negrita) para calcular la calificación media de cada película. Luego, a partir de los promedios, seleccionamos el valor más alto. La vista en línea que hemos utilizado funciona como una tabla temporal. Vistas en línea fuera de Oracle Como he mencionado antes, la vista en línea es más bien un término de Oracle. También me he topado con él al leer sobre MySQL; sin embargo, algunas personas se refieren a él como vista en línea y otras como subconsulta. En otros motores de bases de datos, las vistas en línea tienen nombres diferentes. Por ejemplo, en MS SQL Server, una subconsulta en una cláusula FROM se llama tabla derivada. Probablemente te hayas dado cuenta de que estoy utilizando el término subconsulta aquí. Esto se debe a que subconsulta (o a veces subselección) es el nombre utilizado en PostgreSQL - el motor de base de datos que más utilizo. Este nombre también es utilizado por la mayoría de los usuarios de MySQL. No importa cómo llames a las vistas en línea, recuerda: es sólo el nombre de un concepto. Realmente no importa cómo lo nombras. Lo importante es saber cómo utilizar correctamente el concepto en sus consultas. Vistas en línea vs. Subconsultas Volvamos a la terminología de Oracle por un momento. ¿Cuál es la diferencia entre las vistas en línea y las subselectas (Ver subconsulta en las preguntas frecuentes de Oracle) si en algunos motores tienen el mismo nombre? Aunque parezcan similares, funcionan de forma diferente. Nos centraremos en las dos mayores diferencias. La primera diferencia es que las vistas en línea pueden contener múltiples columnas, mientras que las subconsultas (en el sentido de Oracle) deben devolver sólo una. La razón es sencilla: una vista en línea funciona como una tabla y las tablas pueden contener más de una columna. Las subconsultas, en cambio, suelen funcionar como un único valor. La segunda es la correlación. En las vistas no en línea, puede utilizar un valor para la consulta externa (principal). De esta manera, su subconsulta puede devolver un valor diferente para diferentes filas. Este concepto es muy poderoso y puede ahorrarte tiempo cuando escribes consultas complicadas. Lea más sobre este tema en Correlated Subquery in SQL: A Beginner's Guide en el blogLearnSQL.es . Si crees que necesitas más información sobre el tema y los diferentes tipos de subselectos (incluyendo las vistas en línea), consulta el artículo ¿Cuáles son los diferentes tipos de subconsultas SQL?. ¿Cuánto importan los nombres? ¡No mucho! Como ya he mencionado, no importa si llamas al concepto vista en línea, tabla derivada, subconsulta o subselección. Todo se reduce a tu conocimiento y uso de esta poderosa técnica SQL. Por supuesto, cuando te comuniques con otras personas, debes hacer todo lo posible para evitar una mala comunicación. Por eso vale la pena conocer los diferentes nombres que recibe este concepto. Sin embargo, si tu equipo está de acuerdo, la vista en línea podría llamarse desde la parte thingamajig - ¡siempre y cuando todo el mundo sepa de qué está hablando! Si nunca has oído hablar del concepto, tal vez quieras consultar el SQL para principiantes curso en LearnSQL.es. Si ya has aprendido sobre el tema pero no te sientes muy seguro de tus habilidades, puedes resolver algunos ejercicios del curso Ejercicios prácticos de SQL. Sólo esperamos que no te importe que llamemos al concepto subconsulta. Tags: SQL aprender SQL subconsulta