Directorio de artículos
1. Consulta agregada
1. consulta de conteo (estadísticas totales)
1.1 recuento de uso 1
Recomendado, el más estándar, puede consultar todos los datos nulos y no nulos
1.2 recuento de uso 2
Puede consultar todos los datos (nulos y no nulos)
Desventajas: baja compatibilidad
1.3 conteo de uso 3
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)
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
función 3.PROMEDIO
Devuelve el promedio de los datos consultados, no un número sin sentido
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.
5. Función mínima
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
Ejemplo 2
空
Ejemplo 3
Ejemplo 4 (resolución de una consulta con una puntuación total nula)
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
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
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
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:
- Realizar consulta de unión interna (hacer producto cartesiano)
select s.*,st.* from student s join score_table st;
- Eliminar calificaciones no válidas (en el filtro)
select s.*,st.* from student s join score_table st on s.id = st.student_id;
- 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 = '张三';
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
derecha
La sintaxis de la unión izquierda es la siguiente:
select * from t1 left join t2 on连接条件 [where 条件查询]
La sintaxis de unión derecha es la siguiente:
select * from t1 right join t2 on连接条件 [where 查询条件]
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;
4.3.3 La diferencia entre on y where
- La unión interna se puede omitir, la unión izquierda y la unión derecha no se pueden omitir,
- 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.
- Unirse a la izquierda sin activar informará un error
- 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)
- Primero consulte la identificación del sujeto de acuerdo con el nombre del sujeto
- auto-indagación
- 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;
- 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;
- 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;
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;
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
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 = '张三');
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.