[Principio de base de datos] SQL de lenguaje estándar de bases de datos relacionales y sistema de gestión de bases de datos relacionales SQL Server (4)

Consulta de unión multirrelacional.

Anteriormente dijimos que hay varias tablas básicas en la base de datos y que se almacenan diferentes datos en cada tabla. Lo mismo es cierto para los ejemplos de varias operaciones de consulta que presentamos anteriormente, como la tabla de relaciones de estudiantes, la tabla de relaciones de profesores, la tabla de relaciones de cursos, la tabla de relaciones de selección de cursos y la tabla de relaciones de enseñanza. Los usuarios a menudo tienen la necesidad de usar los datos en varias tablas para combinar y extraer información. Si un proceso de consulta necesita operar en varias tablas, se denomina consulta de combinación. La tabla de resultados de la consulta de conexión se denomina conexión entre las tablas. La consulta de conexión en realidad consulta los datos a través de la correlación de las columnas comunes entre las tablas. La conexión entre las tablas de datos se refleja en los valores de campo de las tablas. Este tipo de campo se denomina campo de conexión. El propósito de la operación de conexión es conectar varias tablas a través de las condiciones agregadas al campo de conexión para consultar datos de varias tablas. Las consultas involucradas
en el lenguaje estándar de bases de datos relacionales SQL y el sistema de administración de bases de datos relacionales SQL Server (3) se realizan todas en una tabla. Cuando la consulta involucra dos o más tablas al mismo tiempo, se denomina consulta de combinación.

Unir la estructura de la consulta.

Hay dos formas de conectarse entre tablas:

  • Cuando se conectan filas que satisfacen determinadas condiciones entre tablas, la FROMcláusula indica el nombre de la tabla a conectar y la cláusula indica el nombre WHEREde la columna a conectar y sus condiciones de conexión.
  • Use palabras clave JOINpara conectarse, y los métodos de conexión específicos se dividen en los siguientes tipos:
    ① 【INNER JOIN】 La conexión interna muestra registros elegibles, que también es el método predeterminado;
    ② 【LEFT (OUTER) JOIN】 La conexión externa izquierda se usa para mostrar filas de datos elegibles y la tabla de la izquierda no cumple con las condiciones de la fila de datos, esta vez en la fila de datos de la derecha NULLse mostrará.
    ③ [ RIGHT (OUTER) JOIN] para mostrar filas de datos calificadas de unión externa derecha y la tabla derecha no cumple las condiciones de las líneas de datos, las líneas de datos se dejarán en este momento para NULLmostrarse.
    ④ [ FULL (OUTER) JOIN] que se muestran filas de datos calificados y la tabla a la izquierda y derecha de la tabla no cumple las condiciones de las filas de datos, entonces NULLse mostrará la falta de datos en la línea de datos .
    ⑤ 【CROSS JOIN】 Haga coincidir cada registro de una tabla con cada registro de otra tabla en una nueva fila de datos.

Además, debe tenerse en cuenta que al colocar JOINpalabras clave en FROMcláusulas, debe haber palabras clave ONcorrespondientes a ellas para obtener las condiciones de conexión.

Consulta de unión interna.

Primero, damos un ejemplo, usando diferentes métodos para lograr la función de consulta:

[Ejemplo] Consulte el número de curso del curso impartido por el profesor Liu Wei y pida que se indique el número de profesor y el nombre del profesor Liu Wei.

Método 1:

SELECT T.TNo,TN,CNo
FROM T,TC
WHERE T.TNo=TC.TNo AND TN='刘伟'

Aquí T.TNo=TC.TNolas condiciones de conexión, TNodeben estar conectadas con el campo de prefijo de la tabla, el campo de referencia, que es debido Ty la TCtabla tiene TNolos campos mostrados que deben distinguirse. TN='刘伟'Es la condición de consulta, en el proceso de consulta anterior se conecta la Ttabla y las filas con los mismos campos en la TCtabla TNo, luego las TN='刘伟'filas seleccionadas y finalmente se realiza la TNo,TN,CNooperación de proyección para obtener el resultado.

Método 2:

SELECT T.TNo,TN,CNo
FROM T INNER JOIN TC
ON T.TNo=TC.TNo
WHERE TN='刘伟'

La diferencia entre el Método 2 y el Método 1 son en realidad solo dos formas de escribir consultas de combinación internas. La última FROMespecifica la tabla que se unirá en la WHEREcláusula y coloca la condición de combinación en la cláusula; mientras que la primera usa JOINpalabras clave para especificar la combinación. Table, y las condiciones de conexión se ONindican mediante palabras clave.

Método 3 (que involucra subconsultas):

SELECT R1.TNo,R2.TN,R1.CNo
FROM
(
	SELECT TNo,CNo 
	FROM TC
) AS R1 INNER JOIN 
(
	SELECT TNo,TN 
	FROM T 
	WHERE TN='刘伟'
) AS R2
ON R1.TNo=R2.TNo

Para ser honesto, es un poco más una pérdida de lo que se usa una subconsulta para usar una subconsulta. En cuanto a las subconsultas, las presentaremos más adelante.

[Ejemplo] Consultar ID de alumno, nombre, nombre del curso y calificaciones de todos los alumnos que eligen el curso.

SELECT S.SNo,SN,CN,Score
FROM S,C,SC
WHERE S.SNo=SC.SNo AND SC.CNo=C.CNo

Esta pregunta implica la conexión de tres tablas y la WHEREcláusula contiene dos condiciones de conexión.

[Ejemplo] Consultar el número de curso, el nombre del curso y el número de cursos para cada curso.

SELECT SC.CNo,CN,COUNT(SC.CNo) AS StudentNumber
FROM SC,C
WHERE SC.CNo=C.CNo
GROUP BY SC.CNo,CN

Vale la pena señalar que en la GROUP BYcláusula, debe agrupar por los dos campos CNo y CN; de lo contrario, el sistema dará un mensaje de error: la
columna'C.CN 'en la lista de selección no es válida porque la columna no está incluida en la función agregada o GRUPO BY cláusula. Para obtener más información, puede consultar este artículo .

Consulta de combinación externa.

En la consulta de combinación interna anterior, sin importar el FROM...WHEREformulario o el INNER JOIN...ONformulario, las tuplas que no cumplan con las condiciones de combinación no se mostrarán. En la consulta [ejemplo], la identificación del estudiante, el nombre, el nombre del curso y las calificaciones de todos los estudiantes electivos . S6 Wu Li no eligió ningún curso, por lo que no habría información sobre ella. (La tabla de relaciones mencionada se basa en "Principios de base de datos y tutorial de aplicación" -Chen Zhibo-4th Edition-Page 27). En la conexión externa, las tablas que participan en la conexión se dividen en maestra y esclava, y cada fila de datos en la tabla maestra se usa para hacer coincidir las columnas de datos de la tabla esclava. Los datos que cumplan con las condiciones de conexión se devolverán directamente al conjunto de resultados; y aquellas columnas que no cumplan con las condiciones de conexión se rellenarán con NULL y luego se devolverán al conjunto de resultados (los datos de tipo de bit tienen excepciones, porque el bit no permite valores NULL, por lo que Se rellenará con 0 y luego se devolverá al conjunto de resultados).
Las combinaciones externas se distinguen por la dirección en la que se encuentra la tabla principal. La tabla principal de la izquierda se denomina combinación externa izquierda y la tabla principal de la derecha se denomina combinación externa derecha.

[Ejemplo] Consultar la identificación del estudiante, el nombre, el nombre del curso y las calificaciones de todos los estudiantes. (La información de selección de cursos y los resultados de los estudiantes que no han seleccionado cursos se muestran como NULL)

SELECT S.SNo,SN,CN,Score
FROM S
LEFT OUTER JOIN  SC
ON S.SNo=SC.SNo
LEFT OUTER JOIN C
ON SC.CNo=C.CNo

Inserte la descripción de la imagen aquí
Haga una comparación con la consulta de combinación interna mencionada anteriormente:

SELECT S.SNo,SN,CN,Score
FROM S,C,SC
WHERE S.SNo=SC.SNo AND SC.CNo=C.CNo

Inserte la descripción de la imagen aquí

Consulta cruzada.

La consulta cruzada CROSS JOINno tiene ningún requisito para las tablas unidas.

[Ejemplo] Consulta cruzada la tabla de estudiantes S y la tabla de currículo C.

SELECT *
FROM S CROSS JOIN C

El resultado de la consulta anterior es combinar cada registro en la tabla de estudiantes S y cada registro en la tabla del curso C en una nueva fila de datos. El número de tuplas en el conjunto de resultados es el producto de los dos y el número de columnas es la suma de los dos.

Consulta de autounión.

Cuando una mesa está conectada consigo misma, se denomina autoconexión de la mesa.

[Ejemplo] Consultar el nombre y el salario de todos los maestros cuyo salario sea superior al del maestro Liu Wei y el salario del maestro Liu Wei.

Método 1:

SELECT X.TN,X.Sal AS Sal_a,Y.Sal AS Sal_b
FROM T AS X, T AS Y
WHERE Y.TN='刘伟' AND X.Sal>Y.Sal

Inserte la descripción de la imagen aquí
Método 2:

SELECT X.TN,X.Sal AS Sal_a,Y.Sal AS Sal_b
FROM T AS X INNER JOIN T AS Y
ON Y.TN='刘伟' AND X.Sal>Y.Sal

Método 3:

SELECT R1.TN,R1.Sal,R2.Sal
FROM
(SELECT TN,Sal FROM T) AS R1
INNER JOIN
(SELECT Sal FROM T WHERE TN ='刘伟') AS R2
ON R1.Sal>R2.Sal

Supongo que te gusta

Origin blog.csdn.net/weixin_44246009/article/details/108045436
Recomendado
Clasificación