Directorio de artículos
Base de datos MySQL
Clasificar
- Para facilitar la visualización de los datos, puede ordenar los datos
gramática:
select * from 表名 order by 列1 asc|desc ,列2 asc|desc,...
Descripción:
- Ordene los datos de la fila de acuerdo con la columna 1, si algunas filas y la columna 1 tienen el mismo valor, ordene de acuerdo con la columna 2, y así sucesivamente
- De forma predeterminada, ordene de pequeño a grande por valor de columna (asc)
- asc ordenados de pequeño a grande, es decir, ascendente
- desc se ordena de mayor a menor, es decir, descendente
Ejemplo 1: Consultar la información de los chicos sin borrarlos, en orden descendente por ID de alumno
select * from students where gender=1 and is_delete=0 order by id desc;
Ejemplo 2: Consultar la información del alumno que no se elimina, en orden ascendente por nombre
ordenar por campo
select * from students where is_delete=0 order by name;
ordenar por varios campos
select * from students where age between 18 and 34 order by height desc,id desc;
Ejemplo 3: Mostrar toda la información del estudiante, primero ordenar por edad -> más joven, cuando la edad es la misma, ordenar por altura -> más corto
select * from students order by age desc,height desc;
Función agregada
- Para obtener datos estadísticos rápidamente, a menudo se utilizan las siguientes 5 funciones de agregación
total
- count (*): cuente el número total de filas, escriba la estrella y el nombre de la columna entre paréntesis, el resultado es el mismo
Ejemplo 1: consultar el número total de alumnos
select count(*) from students;
select count(*) as 男性人数 from students where gender=0;
select count(*) as 女性人数 from students where gender=1;
Max
- max (columna) significa encontrar el valor máximo de esta columna
Ejemplo 2: consultar el número máximo de niñas
select max(id) from students where gender=2;
Mínimo
- min (columna) significa encontrar el valor mínimo de esta columna
Ejemplo 3: consultar el número mínimo de estudiantes no eliminados
select min(id) from students where is_delete=0;
Suma
- suma (columna) significa encontrar la suma de esta columna
Ejemplo 4: consultar la edad total de los niños
select sum(age) from students where gender=1;
-- 平均年龄
select sum(age)/count(*) from students where gender=1;
valor promedio
- avg (columna) significa encontrar el valor promedio de esta columna
Ejemplo 5: consultar el número medio de chicas que no se han eliminado
select avg(id) from students where is_delete=0 and gender=2;
Agrupamiento
agrupar por
- El significado de agrupar por: agrupa los resultados de la consulta según uno o más campos, el mismo valor de campo es un grupo
- Agrupar por se puede utilizar para agrupar un solo campo o varios campos.
select * from students;
+----+-----------+------+--------+--------+--------+-----------+
| id | name | age | height | gender | cls_id | is_delete |
+----+-----------+------+--------+--------+--------+-----------+
| 1 | 小明 | 18 | 180.00 | 女 | 1 | |
| 2 | 小月月 | 18 | 180.00 | 女 | 2 | |
| 3 | 彭于晏 | 29 | 185.00 | 男 | 1 | |
| 4 | 刘德华 | 59 | 175.00 | 男 | 2 | |
| 5 | 黄蓉 | 38 | 160.00 | 女 | 1 | |
| 6 | 凤姐 | 28 | 150.00 | 保密 | 2 | |
| 7 | 王祖贤 | 18 | 172.00 | 女 | 1 | |
| 8 | 周杰伦 | 36 | NULL | 男 | 1 | |
| 9 | 程坤 | 27 | 181.00 | 男 | 2 | |
| 10 | 刘亦菲 | 25 | 166.00 | 女 | 2 | |
| 11 | 金星 | 33 | 162.00 | 中性 | 3 | |
| 12 | 静香 | 12 | 180.00 | 女 | 4 | |
| 13 | 周杰 | 34 | 176.00 | 女 | 5 | |
| 14 | 郭靖 | 12 | 170.00 | 男 | 4 | |
+----+-----------+------+--------+--------+--------+-----------+
select gender from students group by gender;
+--------+
| gender |
+--------+
| 男 |
| 女 |
| 中性 |
| 保密 |
+--------+
Agrupados según el campo de género, todos los valores del campo de género tienen 4 'masculino', 'femenino', 'neutral' y 'confidencial', por lo que se dividen en 4 grupos. Cuando se usa group by solo, solo se muestra el número de cada grupo Un registro, por lo que el significado real de grupo por solo es de poca utilidad.
agrupar por + group_concat ()
- group_concat (nombre de campo) se puede utilizar como campo de salida,
- Después de agrupar, de acuerdo con el resultado de la agrupación, use group_concat () para colocar la colección del valor de un determinado campo en cada grupo.
select gender from students group by gender;
+--------+
| gender |
+--------+
| 男 |
| 女 |
| 中性 |
| 保密 |
+--------+
select gender,group_concat(name) from students group by gender;
+--------+-----------------------------------------------------------+
| gender | group_concat(name) |
+--------+-----------------------------------------------------------+
| 男 | 彭于晏,刘德华,周杰伦,程坤,郭靖 |
| 女 | 小明,小月月,黄蓉,王祖贤,刘亦菲,静香,周杰 |
| 中性 | 金星 |
| 保密 | 凤姐 |
+--------+-----------------------------------------------------------+
select gender,group_concat(id) from students group by gender;
+--------+------------------+
| gender | group_concat(id) |
+--------+------------------+
| 男 | 3,4,8,9,14 |
| 女 | 1,2,5,7,10,12,13 |
| 中性 | 11 |
| 保密 | 6 |
+--------+------------------+
agrupar por + función agregada
- Inspirándonos en group_concat (), ya que podemos contar el conjunto de valores de un determinado campo de cada grupo, también podemos usar la función set para realizar algunas operaciones en este conjunto de valores
select gender,group_concat(age) from students group by gender;
+--------+----------------------+
| gender | group_concat(age) |
+--------+----------------------+
| 男 | 29,59,36,27,12 |
| 女 | 18,18,38,18,25,12,34 |
| 中性 | 33 |
| 保密 | 28 |
+--------+----------------------+
分别统计性别为男/女的人年龄平均值
select gender,avg(age) from students group by gender;
+--------+----------+
| gender | avg(age) |
+--------+----------+
| 男 | 32.6000 |
| 女 | 23.2857 |
| 中性 | 33.0000 |
| 保密 | 28.0000 |
+--------+----------+
分别统计性别为男/女的人的个数
select gender,count(*) from students group by gender;
+--------+----------+
| gender | count(*) |
+--------+----------+
| 男 | 5 |
| 女 | 7 |
| 中性 | 1 |
| 保密 | 1 |
+--------+----------+
agrupar por + tener
- tener expresión condicional: se utiliza para especificar algunas condiciones después de agrupar la consulta para generar resultados de la consulta
- El papel de tener es el mismo que el de dónde, pero el tener solo se puede usar para el grupo por
select gender,count(*) from students group by gender having count(*)>2;
+--------+----------+
| gender | count(*) |
+--------+----------+
| 男 | 5 |
| 女 | 7 |
+--------+----------+
agrupar por + con rollup
- La función de con rollup es agregar una nueva fila al final para registrar la suma de todos los registros en la columna actual
select gender,count(*) from students group by gender with rollup;
+--------+----------+
| gender | count(*) |
+--------+----------+
| 男 | 5 |
| 女 | 7 |
| 中性 | 1 |
| 保密 | 1 |
| NULL | 14 |
+--------+----------+
select gender,group_concat(age) from students group by gender with rollup;
+--------+-------------------------------------------+
| gender | group_concat(age) |
+--------+-------------------------------------------+
| 男 | 29,59,36,27,12 |
| 女 | 18,18,38,18,25,12,34 |
| 中性 | 33 |
| 保密 | 28 |
| NULL | 29,59,36,27,12,18,18,38,18,25,12,34,33,28 |
+--------+-------------------------------------------+