8.4.4 Consulta avançada

1. Classifique os resultados da consulta (ordenar por)

Use a cláusula order by
para classificar por um ou mais atributos Ordem ascendente
: ASC (valor padrão) Ordem descendente: DESC
当排序列含有NULL时,认为NULL最小
ASC: Tuplas com valor nulo na coluna de classificação são exibidas primeiro
DESC: Tuplas com valor nulo na coluna de classificação são exibidas exibido por último
[Exemplo] Consulte o número de alunos e as notas dos alunos que fizeram o curso C3 e os resultados da consulta serão organizados em ordem decrescente de pontuação.

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

[Exemplo] Consultar a situação de todos os alunos, os resultados são dispostos em ordem crescente de turma, e os alunos da mesma turma são dispostos em ordem decrescente de aniversário.

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

2. Limite o número de resultados da consulta exibidos (LIMIT)

Use a frase LIMIT m,n na cláusula SELECT.
Formato:
LIMIT [m,]n | n OFFSET m
Explicação: m representa o deslocamento, que é obtido do m-ésimo registro, e a primeira linha padrão é 0
n representa o número de linhas a serem obtidas

  • limit N: retorna N registros
  • offset M: Pular registros M, padrão M=0, não parece funcionar sozinho
  • limit N,M : equivalente ao limite M offset N , começando do Nth registro, retorna M registros
    [exemplo] consulta o nome do aluno dos 3 primeiros registros na tabela Stu
SELECT Sname 
FROM Stu
LIMIT O,3;
或:LIMIT 3 OFFSET 0

3. Definir consulta (COUNT)

Funções agregadas comuns Função
AVG() retorno médio
CONTAR() Retorna o número de linhas
PRIMEIRO() Retorna o valor do primeiro registro
DURAR() Retorna o valor do último registro
MAX() retornar o valor máximo
MIN() retorno mínimo
SOMA() soma de retorno
[Exemplo] Consultar a nota máxima dos alunos que fazem o curso C2.
SELECT  Cno, max(Grade)
FROM SC
WHERE Cno= 'C2';

Consulta para calcular o total de alunos da turma 1401

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

4. Consulta de grupo (agrupar por)

Formato gramatical:

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

WITH ROLLUP pode obter as mesmas estatísticas com base em dados estatísticos agrupados, adicionando uma linha total
在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。HAVING 子句可以让我们筛选分组后的各组数据。

[Exemplo 29] Realizar consulta de grupo de acordo com o gênero da tabela de alunos.

SELECT *
FROM Stu
GROUP BY Ssex;

[Exemplo] Consultar a quantidade de alunos matriculados em cada curso.

SELECT COUNT(*)
FROM sc
GROUP BY Cno;

[Exemplo] Consultar alunos que fizeram pelo menos 3 cursos

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

A diferença entre a frase HAVING e a cláusula WHERE:

  1. A cláusula WHERE atua na tabela ou view básica, da qual são selecionadas as tuplas que atendem às condições;
  2. A frase HAVING atua sobre grupos, dos quais é selecionado o grupo que satisfaz a condição.

おすすめ

転載: blog.csdn.net/qq_25887493/article/details/124081449