MySQL: unir consulta y subconsulta

1. Consulta de conexión

Consulta de tabla única: la consulta de datos en una tabla se denomina consulta de tabla única.

Consulta unida, combinando dos (múltiples) tablas, consultando datos en dos (múltiples) tablas, consultando parte de una tabla y consultando otra parte de datos en otra tabla, esta consulta entre tablas, conectando varias tablas El método de consultar datos de ¡una tabla se llama consulta de unión!

La consulta de conexión se divide en: sintaxis SQL92 y sintaxis SQL99. En la actualidad, la corriente principal utiliza la sintaxis SQL99.

La estructura gramatical de SQL92 es más tosca y la estructura gramatical no está clara. El juicio de la conexión de la tabla y otras condiciones se colocan después de dónde, lo cual es muy confuso. seleccione.....de.....dónde....

La estructura gramatical de SQL99 es clara: una determinada tabla se conecta con otra tabla mediante unión y luego la condición de juicio se coloca después de on. seleccionar.....desde...unión interna.....en...unión interna...en...dónde...(el interior se puede omitir, pero agregar La estructura gramatical anterior es más clara)

Fenómeno del producto cartesiano:

Al conectar dos tablas para realizar consultas, si no hay límite, el número de consultas es el producto de todos los registros en las dos tablas.

¡En este momento, se refleja el papel de las limitaciones de las conexiones internas y externas!

1. Conexión interna:

Conexión equivalente: el resultado de la consulta está determinado por el signo igual de la condición donde

Aunque los resultados deseados se consultaron anteriormente, el número de consultas aún no disminuyó, simplemente se filtró. Al mismo tiempo, también sabemos que cuanto menor sea el número de tablas conectadas en el futuro, mejor; de lo contrario, la eficiencia se reducirá.

Unión de no equivalencia:

Autounión: una tabla se trata como dos tablas.

2. Unión externa (derecha/izquierda + exterior [el exterior se puede omitir]):

La diferencia entre unión interna y unión externa: la unión interna no tiene una relación primaria y secundaria, dos (múltiples) tablas están al mismo nivel, mientras que la unión externa tiene una relación primaria y secundaria, principalmente para verificar qué y, en segundo lugar, para verificar qué.

Unión externa izquierda (izquierda): indica que la tabla a la izquierda de la palabra clave de unión es la tabla principal, principalmente para encontrar los datos en la tabla de la izquierda y, por cierto, también encontrar los datos en la tabla de la derecha.

Unión externa derecha (derecha): indica que la tabla a la derecha de la palabra clave de unión es la tabla principal, principalmente para encontrar los datos en la tabla de la derecha y, por cierto, también encontrar los datos en la tabla de la izquierda.

Resumen: el número de consultas para uniones externas >= el número de consultas para uniones internas.

Consulta de varias tablas:

使用seleccione .....de ......unirse....en......unirse....en.....donde.....agrupar por..... ..teniendo........ordenar por.......

Por ejemplo, verifique: Descubra el nombre del departamento y el nivel salarial de cada empleado, y el líder superior, muestre el nombre del empleado, el nombre del líder, el nombre del departamento, el salario y el nivel salarial.

seleccione e.ename,d.dname,n.ename como '上级',e.sal,s.grade de emp e join dept d on e.deptno = d.deptno left join emp n on e.mgr = n.empno unir salgrade s en e.sal entre s.losal y s.hisal;

3. Conexión completa (rara vez se usa)


Dos, subconsulta

Subconsulta: la declaración de selección está anidada en la declaración de selección, y la declaración de selección anidada se denomina subconsulta.

Las declaraciones de subconsulta se pueden colocar detrás de select, from, where.

Aparece una subconsulta en la cláusula donde:

Por ejemplo: consultar el nombre y el salario de los empleados cuyo salario sea superior a 800 yuanes

Aparece una subconsulta en la cláusula from:

Nota: La subconsulta desde puede ser una tabla temporal entre los elementos que se encuentran en la subconsulta.

Ejemplo: ¿Averiguar el grado salarial del salario promedio de cada trabajo?

seleccione t.*,s.grade from (select job,avg(sal) as avgsal from emp group by job) t una a salgrade s en t.avgsal entre s.losal y s.hisal;

seleccione t.*,s.grade from (select ename,avg(sal) as avgsal from emp) t une salgrade s en t.avgsal entre s.losal y s.hisal;

Subconsultas que aparecen en la cláusula select:

¿Consultar el nombre del departamento de cada empleado y solicitar mostrar el nombre del departamento y el nombre del empleado?

seleccione e.ename,e.deptno,(seleccione dname del departamento unirse emp en emp.deptno = dept.deptno) de emp e;

Nota: El resultado devuelto por la subconsulta después de la selección solo puede devolver un resultado. Cuando hay más de un resultado, se informará un error. ! !

Supongo que te gusta

Origin blog.csdn.net/m0_73968621/article/details/132678288
Recomendado
Clasificación