MySQL____ consulta avanzada, consulta de unión

1. Consulta agregada

1. consulta de conteo (estadísticas totales)

1.1 recuento de uso 1

inserte la descripción de la imagen aquí
Recomendado, el más estándar, puede consultar todos los datos nulos y no nulos

1.2 recuento de uso 2

inserte la descripción de la imagen aquí
Puede consultar todos los datos (nulos y no nulos)
Desventajas: baja compatibilidad

1.3 conteo de uso 3

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
Contar el número de valores no nulos en el campo actual

1.4 Notas:

En diferentes escenarios de estadísticas de conteo, debe usar diferentes consultas de conteo, como consultar todas las cantidades de datos (nulas y no nulas) -> estadísticas de conteo ( )
en escenarios especiales, considere usar conteo (
) de table_name+donde

no se recomienda la consulta condicional El uso de recuento (nombre de campo) es inestable

2. Función SUM (estadísticas de suma)

inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí
Y las estadísticas, si hay valores nulos o estadísticos no enteros, entonces su resultado es que solo se cuentan los valores enteros válidos
inserte la descripción de la imagen aquí

función 3.PROMEDIO

Devuelve el promedio de los datos consultados, no un número sin sentido

inserte la descripción de la imagen aquí
Cuando avg calcula el valor promedio, si hay algún dato que no se ajusta a la especificación, como (nulo), esta fila de datos se descartará directamente

4. Función MÁX.

inserte la descripción de la imagen aquí

5. Función mínima

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

2. si la función es nula

La función que determina si es nulo Si el primer parámetro no es nulo, devuelve el primer parámetro, de lo contrario, devuelve el segundo parámetro

Ejemplo 1

inserte la descripción de la imagen aquí

Ejemplo 2

inserte la descripción de la imagen aquí

Ejemplo 3

inserte la descripción de la imagen aquí

Ejemplo 4 (resolución de una consulta con una puntuación total nula)

inserte la descripción de la imagen aquí

3. Consulta de grupo GROUP BY

3.1 Sintaxis

select colum1,sum(colum2),..from table group by colum2;

Consulta el salario máximo de cada rol
inserte la descripción de la imagen aquí

3.2 Consulta de condición de grupo HABER

tener consulta: filtrar datos
en grupo por Sintaxis: tener es una condición después de agrupar por, y su orden de ejecución también es después de agrupar por

inserte la descripción de la imagen aquí

4. Consulta conjunta (consulta multitabla)

4.1 Preconocimiento ---- Producto cartesiano

El producto cartesiano, también conocido como producto directo, se expresa como XY . Por ejemplo, los datos de la tabla A tienen m filas y los datos de la tabla B tienen n filas, luego se realiza el producto cartesiano de A y B, y el el resultado es m n filas.

Preparación:
construir la mesa

-- 创建数据库
drop database if exists java33;
create database java33 default character set 'utf8mb4';

-- 切换数据库
use java33;

-- 创建班级表
drop table if exists class;
create table class(
  id int primary key auto_increment comment '班级编号',
  classname varchar(250) not null comment '班级名称'
);

-- 创建学生表
drop table if exists student;
create table student(
  id int primary key auto_increment comment '学生编号',
  sn varchar(50) comment '学号',
  username varchar(250) not null comment '学生名称',
  `mail` varchar(250) comment '邮箱',
  class_id int,
  foreign key (class_id) references class(id)
);

-- 创建课程表
drop table if exists course;
create table course(
  id int primary key auto_increment comment '课程编号',
  name varchar(250) not null
);

-- 成绩表
drop table if exists score_table;
create table score_table(
  id int primary key auto_increment comment '成绩编号',
  score decimal(4,1),
  student_id int not null,
  course_id int not null,
  foreign key (student_id) references student(id),
  foreign key (course_id) references course(id)
);
-- 班级表添加数据
insert into class(id,classname) values(1,'Java班级'),(2,'C++班级');

-- 课程表添加数据
insert into course(id,name) values(1,'计算机'),(2,'英语');

-- 学生表添加数据
insert into student(id,sn,username,mail,class_id) values(1,'CN001','张三','[email protected]',1),(2,'CN002','李四','[email protected]',2),(3,'CN003','王五','[email protected]',1);

-- 成绩表添加数据
insert into score_table(id,score,student_id,course_id) values(1,90,1,1),(2,59,1,2),(3,65,2,1),(4,NULL,2,2);

4.2 Conexión interna

La combinación interna se centra en los puntos en común entre dos tablas, su función es usar combinaciones para comparar datos comunes entre dos (o más) tablas
inserte la descripción de la imagen aquí

4.2.1 Sintaxis de combinación interna

select * from t1 [inner|cross] join t2 [on 过滤条件] [where 过滤条件]

on ------ Sintácticamente se puede omitir, pero si se omite, la consulta es el producto cartesiano de varias tablas

Dos sintaxis comunes:

select * from t1 join t2 [on 过滤条件] [where 过滤条件]
select * from t1,t2[where 过滤条件]

4.2.2 Combate de conexión interna 1

Compruebe los resultados de Zhang San:

  1. Realizar consulta de unión interna (hacer producto cartesiano)
 select s.*,st.* from student s join score_table st;

inserte la descripción de la imagen aquí

  1. Eliminar calificaciones no válidas (en el filtro)
 select s.*,st.* from student s join score_table st on s.id = st.student_id;

inserte la descripción de la imagen aquí

  1. Consultar los resultados de Zhang San (donde la condición del filtro)
    método 1
 select s.*,st.* from student s join score_table st on s.id = st.student_id where s.username = '张三';

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

select s.*,st.* from student s cross join score_table st on s.id = st.student_id where s.username = '张三'; 

Método 3

 select s.*,st.* from student s inner join score_table st on s.id = st.student_id where s.username = '张三';

Método 4

select s.*,st.* from student s,score_table st where s.id = st.student_id and s.username = '张三';

4.3 Uniones externas

Unión izquierda Unión
inserte la descripción de la imagen aquí
derecha
inserte la descripción de la imagen aquí
La sintaxis de la unión izquierda es la siguiente:

select * from t1 left join t2 on连接条件 [where 条件查询]

inserte la descripción de la imagen aquí

La sintaxis de unión derecha es la siguiente:

select * from t1 right join t2 on连接条件 [where 查询条件]

inserte la descripción de la imagen aquí
La unión izquierda y la unión derecha solo necesitan dominar una sintaxis, porque usar la unión izquierda puede realizar la "unión derecha", y solo es necesario cambiar el orden de consulta de la tabla para realizar la unión izquierda/derecha

4.3.2 Conexión externa en la práctica 1

Consulte la información personal de todos + nombre del curso + información de puntuación
Primero analice las necesidades:
(1) Qué tablas se necesitan: tabla de estudiantes, tabla de cursos, tabla de puntuaciones
(2) todas - use la tabla principal de combinación externa - tabla de estudiantes

select s.sn,s.username,s.mail,c.name,st.score from student s left join score_table st on s.id = st.student_id left join course c on c.id = st.course_id;

inserte la descripción de la imagen aquí

4.3.3 La diferencia entre on y where

  1. La unión interna se puede omitir, la unión izquierda y la unión derecha no se pueden omitir,
  2. En segundo lugar, el papel de encendido en la conexión izquierda/derecha es diferente, y los roles de encendido y dónde en la conexión izquierda/derecha también son diferentes.
  3. Unirse a la izquierda sin activar informará un error
  4. Nota:
    En la consulta de combinación externa, si hay varias condiciones de consulta, nuestra forma correcta de escribir es escribir todas las expresiones de las condiciones de consulta en la expresión where en lugar de on. En on, generalmente solo necesitamos escribir una. La condición de filtro de producto cartesiano para datos no válidos es suficiente.

4.4 Autoconexión

Hace referencia a la misma tabla, únete a sí misma para consultar.

4.4.1 Sintaxis de autoconexión

select * from table_name as t1, table_name as t2 where t1.id = t2.id[...];

4.4.2 Combate de conexión interna 1

Consultar puntaje en inglés > Puntaje de computadora
Problema de análisis: hoja de puntaje score_name (consulta propia y de uno mismo)

  1. Primero consulte la identificación del sujeto de acuerdo con el nombre del sujeto
    inserte la descripción de la imagen aquí
  2. auto-indagación

inserte la descripción de la imagen aquí

  1. Eliminar datos sin sentido en el producto cartesiano
    Datos válidos: misma clave principal, misma identificación de estudiante
select * from score_table st1,score_table st2 where st1.student_id = st2.student_id;

inserte la descripción de la imagen aquí

  1. Establezca la condición de consulta where, deje que la tabla uno consulte los puntajes en inglés y deje que la tabla dos consulte los puntajes de la computadora
 select * from score_table st1,score_table st2 where st1.student_id = st2.student_id and st1.course_id = 2 and st2.course_id = 1;

inserte la descripción de la imagen aquí

  1. Establezca donde la consulta de condiciones múltiples, deje que el puntaje en inglés> puntaje de la computadora
 select * from score_table st1,score_table st2 where st1.student_id = st2.student_id and st1.course_id = 2 and st2.course_id = 1 and st1.score < st2.score;

inserte la descripción de la imagen aquí

 select st1.score'英语成绩',st2.score'计算机成绩' from score_table st1,score_table st2 where st1.student_id = st2.student_id and st1.course_id = 2 and st2.course_id = 1 and st1.score < st2.score;

inserte la descripción de la imagen aquí

4.5 Subconsultas (consultas anidadas)

Una subconsulta se refiere a una declaración de selección incrustada en otras declaraciones de SQL, también llamada consulta anidada.

4.5.1 Práctica de subconsulta 1

Consultar a los compañeros de clase de Zhang San
1. Consultar la identificación de estudiante de Zhang San
inserte la descripción de la imagen aquí

2. Consulta todas las listas según la identificación de clase de la consulta anterior

select * from student where class_id=(select class_id from student where username = '张三');

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

4.5.2 Diferencia entre en y =

= La consulta requiere un valor específico
en la consulta, que puede ser uno o más valores, y satisfacer cualquiera devolverá verdadero.

4.6 Consultas combinadas

Supongo que te gusta

Origin blog.csdn.net/biteqq/article/details/123521495
Recomendado
Clasificación