Consulta de combinación con consultas anidadas

consulta de combinación

  1. Equijoins
  2. su conexión
  3. Combinación externa
  4. Múltiples uniones de tablas

En primer lugar, la conexión equivalente

  • símbolo de la conexión "="

Varios algoritmos conectados operativamente

  1. método de bucle anidado (nested-LOOP)
    • Dos bucles for correspondiente a cuando la cantidad de datos no es eficiente
    • En primer lugar encontramos la primera tupla en la Tabla 1, y luego atravesar la mesa desde el principio todas las tuplas 2. Después de la mesa de empalme y encontrar una tupla de la Tabla 2, Tabla 1 para encontrar la segunda tupla, a continuación, recorrer la tabla 2.
    • Repitiendo la operación anterior, sabiendo todas las tuplas en la Tabla 1 se han procesado.
  2. Clasificar-algoritmo de combinación de mezcla (sort-merge)
    • Comúnmente se usa en la variante equi-equivalente de un bucle anidado
    • En primer lugar por la conexión atribuye la Tabla 1 y la Tabla 2排序
    • Establecer el punto puntero a una tupla en la Tabla 1 y la Tabla 2, en este caso 表1指针为参照, 表2扫描si se cumplen las condiciones de conexión, los punteros de dos tuplas, y empalmar un movimiento.
    • Si no es así, lugares 表2指针为参照,, 表1扫描(es decir, los libros de texto lo pone: vale menos después de que el puntero pasa una tupla.)
    • Repita los pasos anteriores ( 核心:Tabla 2 turnos tienen que puntero de exploración)
  3. índice de conexión (INDICE-JOIN)好像很少用,网上关于它的信息很少
    • También dé variantes equivalentes de bucle anidado
    • Tabla 2 para la indexación de campo de conexión
    • Para cada tupla de una tabla, seguido de la tabla 2 de consulta de índice.

En segundo lugar, la libre ligadura

  • Una mesa conectado a su propia, es un conector especial
  • Dado que la necesidad de una mesa 别名para mostrar la diferencia
  • Dado que todos los nombres de los atributos son propiedad del mismo nombre, por lo que debe utilizar 别名前缀.

Ejemplo 1 . Requisito previo directamente consulta de nombre de cada curso

SELECT FIRST.Cname , SECOND.Cname
FROM Course FIRST , Course SECOND
WHERE FIRST.Cpno=SECOND.Cno;

resultados:
Aquí Insertar imagen Descripción

En tercer lugar, la conexión externa

Conectado a la distinción conexión externa común :

  • Salida sólo para cumplir con las condiciones de la tupla conexión general
  • conexión externa a la tabla especificada como la conexión principal, el tema de la mesa no cumple con la tupla también juntos de salida (cómo decirlo ???)
  • externa izquierda:
    • Todo se enumeran a la izquierda en tuplas de la relación
  • externa derecha
    • Que aparece en las relaciones correctas en todas las tuplas

2 ejemplos:

//普通连接
SELECT Student.Sno,Sname, Cno 
FROM Student , SC
WHERE Student.Sno = SC.Sno;

//左外连接
SELECT Student.Sno,Sname, Cno 
FROM Student LEFT OUT JOIN  SC ON
	(Student.Sno = SC.Sno);    //WHERE都省去了
这样写会出现 ‘OUT’ 不是可以识别的 join 选项 的报错。需要将OUT改成OUTER,或者将OUT去掉也行。

//左外连接 ,有些商业系统更简介的表达
SELECT Student.Sno,Sname, Cno 
FROM Student , SC
WHERE Student.Sno (+= SC.Sno;

Aquí Insertar imagen Descripción

En cuarto lugar, multi-mesa se une

  • La conexión de dos o más tablas

** Ejemplo 3: consulta ** Cada número de estudiante, el nombre, el nombre y los resultados de los cursos electivos

SELECT Student.Sno,Sname,Cname,Grade
FROM Student,SC,Course
WHERE Student.Sno = SC.Sno
		AND SC.Cno = Course.Cno;

Aquí Insertar imagen Descripción

En quinto lugar, consulta anidada

  • restricciones de subconsulta: No se puede utilizar la cláusula ORDER BY, porque el resultado se utiliza para
    consultas irrelevantes
  • Subconsulta no depende de la consulta externa, la capa de consulta por capa desde el interior hacia fuera
  • 带IN谓词的子查询

[Ejemplo 3.55] consulta en el aprendizaje del estudiante con una línea "Liu Chen."
Método uno: Paso a paso para completar
① OK "Liu Chen" en el nombre del departamento:

SELECT  Sdept  
FROM  Student                            
WHERE  Sname= '刘晨';

Resultados: CS
Buscar todos los estudiantes CS que estudian en el Departamento de ②:

SELECT   Sno, Sname, Sdept     
FROM   Student                 
WHERE   Sdept= 'CS';

Método dos: el primer paso para incrustar la condiciones de la consulta en la segunda etapa de la consulta

SELECT Sno, Sname, Sdept
FROM Student
WHERE Sdept IN
      (SELECT Sdept
       FROM Student
       WHERE Sname= '刘晨');

Método tres: autoligado

SELECT  S1.Sno, S1.Sname,S1.Sdept
FROM  Student S1,Student S2
WHERE  S1.Sdept = S2.Sdept 
       AND S2.Sname = '刘晨';
  • Subconsultas con operadores de comparación
    cuando la consulta interna puede saber exactamente cuándo va a devolver un único valor de comparación disponibles (>, <, =,> =, <= ,! =, o <>).
    En [Ejemplo 3.55], ya que un estudiante puede aprender sólo un sistema, que puede ser sustituido por = IN:
SELECT Sno,Sname,Sdept
FROM Student
WHERE Sdept =
      (SELECT Sdept
      FROM Student
      WHERE Sname='刘晨');

[Ejemplo 3.57] para identificar a cada estudiante por encima de su punto de calificación del curso número medio de cursos electivos.

SELECT Sno, Cno
FROM SC x
WHERE Grade >=(SELECT AVG(Grade)
               FROM SC y
               WHERE y.Sno=x.Sno);

Subconsulta correlacionada : subconsulta consulta depende de la consulta de los padres
primero recuperar la primera tupla en las tablas de consulta externa, de acuerdo con su valor asociado a la capa interior y el procesamiento de consultas consulta interna, devuelve verdadero si la cláusula WHERE, esto se tiene en la tupla tabla de resultados. Y luego tome la siguiente tupla de la tabla externa. Este proceso se repite hasta que todos se han comprobado hasta la tabla externa.

Ejecución:
eliminar una tupla x SC de la consulta externa, el valor Sno (201,215,121) tupla x se transfiere a la consulta interna.

SELECT AVG(Grade)
FROM SC y
WHERE y.Sno='201215121;

ejecución de la consulta interna, el valor de 88 obtenido (aprox.), el valor utilizado en lugar de la consulta interna, la consulta externa para obtener:

SELECT Sno,Cno
FROM SC x
WHERE Grade >=88;

Ejecutar los resultados de la consulta en:

201215121,1)
(201215121,3

consulta externa busca entonces la siguiente tupla repita el paso anterior ① a ③, la capa SC exterior hasta que todas las tuplas procesados. Los resultados son los siguientes:

201215121,1)
(201215121,3)
(201215122,2
Publicado 22 artículos originales · ganado elogios 0 · Vistas 145

Supongo que te gusta

Origin blog.csdn.net/weixin_42649617/article/details/104898633
Recomendado
Clasificación