8.4.4 Consulta avanzada

1. Ordenar los resultados de la consulta (ordenar por)

Use la cláusula order by
para ordenar por uno o más atributos Orden ascendente
: ASC (valor predeterminado) Orden descendente: DESC
当排序列含有NULL时,认为NULL最小
ASC: Las tuplas cuyas columnas de clasificación son valores nulos se muestran primero
DESC: Las tuplas cuyas columnas de clasificación son valores nulos son mostrado al final
[Ejemplo] Consulte los números de estudiantes y las calificaciones de los estudiantes que han tomado el curso C3, y los resultados de la consulta se organizan en orden descendente de puntajes.

SELECT Sno,Grade
FROM sc
WHERE Cno='C3'
ORDER BY Grade DESC;

[Ejemplo] Consulte la situación de todos los estudiantes, los resultados se organizan en orden ascendente de clase y los estudiantes de la misma clase se organizan en orden descendente de cumpleaños.

SELECT *
FROM Stu
ORDER BY Sclass ASC, Sbirth DESC;

2. Limite el número de resultados de consulta mostrados (LIMIT)

Utilice la frase LIMIT m,n en la cláusula SELECT.
Formato:
LIMIT [m,]n | n OFFSET m
Explicación: m representa el desplazamiento, que se toma del m-ésimo registro, y la primera línea predeterminada es 0
n representa el número de filas que se obtendrán

  • límite N: devuelve N registros
  • offset M: omitir registros M, predeterminado M = 0, no parece funcionar solo
  • limit N,M : equivalente a limit M offset N , comenzando desde el N-ésimo registro, devuelve M registros
    [ejemplo] consulta el nombre del estudiante de los primeros 3 registros en la tabla Stu
SELECT Sname 
FROM Stu
LIMIT O,3;
或:LIMIT 3 OFFSET 0

3. Establecer consulta (COUNT)

Funciones agregadas comunes Función
PROMEDIO() promedio de retorno
CONTAR() Devuelve el número de filas
PRIMERO() Devuelve el valor del primer registro.
ÚLTIMO() Devuelve el valor del último registro.
MÁX.() devolver el valor máximo
MIN() retorno mínimo
SUMA() suma devuelta
[Ejemplo] Consultar el puntaje más alto de los alumnos que toman el curso C2.
SELECT  Cno, max(Grade)
FROM SC
WHERE Cno= 'C2';

Consulta para calcular el número total de estudiantes en la clase 1401

SELECT COUNT(*)
FROM Stu
WHERE Sclass='计算1401';

4. Consulta de grupo (agrupar por)

Formato de gramática:

GROUP BY 字段名 [HAVING 条件表达式] 
[WITH ROLLUP]

CON ROLLUP puede lograr las mismas estadísticas sobre la base de datos estadísticos agrupados, agregando una fila total
在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。HAVING 子句可以让我们筛选分组后的各组数据。

[Ejemplo 29] Realizar consulta grupal según el género de la tabla de alumnos.

SELECT *
FROM Stu
GROUP BY Ssex;

[Ejemplo] Consultar el número de alumnos matriculados en cada curso.

SELECT COUNT(*)
FROM sc
GROUP BY Cno;

[Ejemplo] Consulta de estudiantes que han tomado no menos de 3 cursos

SELECT Sno, COUNT(*)
FROM sc
GROUP BY Sno HAVING COUNT(*)>=3;

La diferencia entre la frase HAVING y la cláusula WHERE:

  1. La cláusula WHERE actúa sobre la tabla o vista básica, de la que se seleccionan las tuplas que cumplen las condiciones;
  2. La frase HAVING actúa sobre grupos, de los cuales se selecciona el grupo que cumple la condición.

Supongo que te gusta

Origin blog.csdn.net/qq_25887493/article/details/124081449
Recomendado
Clasificación