Colección de citas famosas - Consulta de diccionarios - Comprenda las subconsultas SQL en un artículo

Comprenda las subconsultas SQL en un artículo

Hola a todos, mi nombre es Ning Yi.

Hoy explicaré la Lección 18 del Tutorial de SQL: Subconsulta.

Las sentencias SQL se pueden anidar y la más común es el anidamiento de sentencias de consulta.

Sintaxis básica:

Generalmente llamamos a la declaración anidada fuera de la consulta principal y a la declaración anidada dentro de la subconsulta. A veces también se les llama consulta externa y consulta interna. significa.

Las subconsultas deben estar entre paréntesis. Las subconsultas se pueden colocar no solo después de DÓNDE, sino también después de SELECCIONAR y DESDE. Las explicaremos una por una.

1. Subconsulta + cláusula WHERE

Cuando se ejecuta SQL, la subconsulta entre paréntesis se ejecutará primero. Las subconsultas se utilizan con mayor frecuencia en combinación con la cláusula WHERE. Los resultados de la subconsulta se utilizan como condiciones de filtrado de la cláusula WHERE para completar una recuperación de datos más compleja.

Ejemplo: en la tabla Estudiantes, busque todos los estudiantes nacidos después de "Ning Yi".

Análisis de ejemplo: primero es necesario determinar el cumpleaños de "Ning Yi" y luego usar el cumpleaños como condición de filtro DÓNDE para obtener los datos finales.

El primer paso: encontrar el cumpleaños de "Ning Yi"

El segundo paso: utilizar el cumpleaños como condición de filtro WHERE para obtener los datos finales. La declaración de subconsulta debe estar adjunta. entre paréntesis.

Las subconsultas de sentencias SELECT se utilizan a menudo junto con funciones agregadas. Porque cuando usamos funciones agregadas, los registros se combinarán en uno y no se podrán mostrar otros detalles de datos.

Por ejemplo: queremos ver todos los nombres de los estudiantes, los cumpleaños de los estudiantes y el cumpleaños máximo del estudiante en la tabla de estudiantes.

Resultados de ejemplo:

Escritura incorrecta:

Escribir como el anterior informará un error porque la función agregada es diferente de las columnas de otras tablas (Nombre, Sage) y colóquelo después de SELECT. Debe utilizar la instrucción GROUP BY para agrupar las columnas (Sname, Sage) en estas tablas.

Simplemente agregue GROUP BY Sname,Sage después de la declaración anterior.

Pero escribirlo así agregará los datos de cada grupo en un solo dato. Por ejemplo, si hay 3 datos en cada grupo, use la función agregada MAX()+GROUP BY, solo se mostrará un dato como máximo en cada grupo de datos de valor.

Necesitamos mostrar a todos los estudiantes en la tabla Estudiantes y escribir de esta manera no puede satisfacer nuestras necesidades.

Forma correcta de escritura: Combinada con subconsulta para lograr.

La subconsulta se utiliza junto con la cláusula FROM. El resultado de la subconsulta se trata como una "tabla" y se puede filtrar más utilizando la instrucción SELECT.

Por ejemplo: primero escribamos una declaración de consulta SELECT

Coloque la declaración de consulta anterior después de FROM, luego los resultados de la consulta anterior se considerarán como una "tabla".

Hay algo especial a tener en cuenta aquí. La subconsulta colocada después de FROM debe tener un alias.

Anidar subconsultas complejas en FROM hará que toda la consulta parezca demasiado complicada. Generalmente almacenamos los resultados de la subconsulta como vistas y luego usamos directamente las vistas como la tabla fuente. Las vistas serán intensivas en SQL. detalle en el curso de primer nivel.

De hecho, las subconsultas son declaraciones de consulta anidadas. No hay nada nuevo, solo un nivel más. Quedará muy claro si lo ordenas capa por capa desde adentro hacia afuera.

Asignación: combinada con la tabla Estudiantes, busque el profesor que es el director en la tabla Profesores (implementada mediante subconsulta).

Análisis de trabajo: primero, busque las Tids de todos los directores en la tabla Estudiantes y elimine los duplicados. Utilice los resultados de la consulta como condiciones de filtro y colóquelos en la declaración WHERE.