Banco de dados MySQL - declaração de consulta avançada

1. Consulta de banco de dados

Um banco de dados é uma ferramenta usada para armazenar, atualizar e consultar dados, e consultar dados é a função principal de um banco de dados. O banco de dados é usado para transportar informações e as informações são usadas para análise e visualização. Portanto, é necessário dominar um método de consulta mais refinado. Este artigo se concentrará em instruções de consulta avançada para dados.

2. Método de consulta eficiente

1. Especifique o campo a ser consultado - SELECT

Sintaxe: SELECT "字段" FROM "表名";
Exemplo: SELECT Store_Name FROM fxk002;
insira a descrição da imagem aqui

2. Realize a consulta de desduplicação no campo - DISTINCT

Sintaxe: SELECT DISTINCT "字段" FROM "表名";
Exemplo: SELECT DISTINCT Store_Name FROM fxk003;

insira a descrição da imagem aqui

3. Consulta de condição - onde

Sintaxe: SELECT "字段" FROM "表名" WHERE "条件";
Exemplo: SELECT Store_Name FROM fxk002 WHERE Sales > 1000;
insira a descrição da imagem aqui

3. Aumente a consulta de relacionamento lógico - e e ou

Exemplo SELECT "字段" FROM "表名" WHERE "条件1" {[AND|OR] "条件2"}+ ;
: SELECT Store_Name FROM fxk003 WHERE Sales > 1000 OR (Sales < 500 AND Sales > 200);
insira a descrição da imagem aqui

4. Consulta de registro de dados de valor conhecido - IN

语法:SELECT "字段" FROM "表名" WHERE "字段" IN ('值1', '值2', ...);
例:SELECT * FROM fxk003 WHERE Store_Name IN ('Los Angeles', 'Houston');
insira a descrição da imagem aqui

5. Consulta de registro de dados dentro do intervalo - ENTRE

Sintaxe: SELECT "字段" FROM "表名" WHERE "字段" BETWEEN '值1' AND '值2';
Exemplo: SELECT * FROM fxk003 WHERE Data ENTRE '2020-12-06' AND '2020-12-10';
insira a descrição da imagem aqui

6. Consulta curinga

Normalmente curingas são usados ​​junto com LIKE

curinga ilustrar
% Um sinal de porcentagem significa zero, um ou mais caracteres
_ Sublinhados representam caracteres únicos

LIKE——corresponde a um padrão para localizar os registros de dados que desejamos
Sintaxe: SELECT "字段" FROM "表名" WHERE "字段" LIKE {模式};
Exemplo: SELECT * FROM fxk003 WHERE Store_Name like '%on%';

insira a descrição da imagem aqui

7. Consulta de classificação de palavras-chave - ORDER BY

Exemplo SELECT "字段" FROM "表名" [WHERE "条件"] ORDER BY "字段" [ASC, DESC];
ASC 是按照升序进行排序的,是默认的排序方式。
DESC 是按降序方式进行排序。
: SELECT Store_Name,Sales,Data FROM fxk003 ORDER BY Sales DESC;

insira a descrição da imagem aqui

3. Consulta de função

1. Funções matemáticas comumente usadas no banco de dados

função matemática efeito
abs(x) retorna o valor absoluto de x
rand() Retorna um número aleatório entre 0 e 1
mod(x,y) Retorna o restante após a divisão de x por y
potência(x,y) retorna x à potência de y
redondo(x) retorna o inteiro mais próximo de x
redondo(x,y) Valor arredondado com x a y casas decimais
quadrado(x) retorna a raiz quadrada de x
truncar(x,y) Retorna o valor do número x truncado para y casas decimais
teto(x) retorna o menor inteiro maior ou igual a x
andar(x) retorna o maior inteiro menor ou igual a x
maior(x1,x2…) Retorna o maior valor da coleção e também pode retornar o maior valor de vários campos
menos(x1,x2…) Retorna o menor valor na coleção e também pode retornar o menor valor de vários campos

insira a descrição da imagem aqui

2. Função de agregação:

função agregada efeito
média() Retorna a média da coluna especificada
contar() Retorna o número de valores não NULL na coluna especificada
min() Retorna o valor mínimo da coluna especificada
max() Retorna o valor máximo da coluna especificada
soma(x) Retorna a soma de todos os valores na coluna especificada

insira a descrição da imagem aqui

3. Função de string:

funções de string efeito
aparar() Retorna o valor com o formato especificado removido
concat(x,y) Concatene os parâmetros fornecidos x e y em uma string
substr(x,y) Obtenha a string começando na posição y na string x, que tem o mesmo efeito que a função substring()
substr(x,y,z) Obtém uma string de comprimento z começando na posição y na string x
comprimento(x) Retorna o comprimento da string x
substituir(x,y,z) substitua a string z pela string y na string x
superior(x) converter todas as letras da string x para maiúsculas
inferior(x) Converter todas as letras da string x para minúsculas
esquerda(x,y) Retorna os primeiros y caracteres da string x
direita(x,y) Retorna os últimos y caracteres da string x
repita(x,y) repita a string x y vezes
espaço(x) retorna x espaços
strcmp(x,y) Compare x e y, o valor retornado pode ser -1,0,1
reverso(x) inverta a string x
1. Remova a guarnição do personagem
1.去除字符 trim
语法格式:SELECT TRIM ([ [位置] [要移除的字符串] FROM ] 字符串);
#[位置]:的值可以为 LEADING (起头), TRAILING (结尾), BOTH (起头及结尾)。 
#[要移除的字符串]:从字串的起头、结尾,或起头及结尾移除的字符串。缺省时为空格。

2. 截取 substr
语法格式:SELECT substr(x,y)    #截取x字符串 从第y个开始,截取到末尾

3.字段拼接 concat
语法格式: select concat(字段1,字段2) from 表名;
使用 || 符号
将info表中,name字段值和height字段值拼接在一起。
语法格式: select 字段1 || 字段2 from 表名;

将info表中,name字段值和height字段值拼接在一起,且中间加空格。
语法格式: select 字段1 || ' ' || 字段2 from 表名;

4.返回字符长度 length 
语法格式: select length(字段1) from 表名;

5.替换 replace
select replace(字段1,'替换前字符段','替换后字符段') from 表名;

insira a descrição da imagem aqui
insira a descrição da imagem aqui

4. Declaração de consulta avançada

1. Agrupamento e resumo - GROUP BY

Resuma e agrupe os resultados da consulta dos campos atrás de GROUP BY, que geralmente é usado em combinação com funções de agregação. Há
um princípio em GROUP BY de que todos os campos que aparecem após GROUP BY devem aparecer após SELECT;
todos os campos que aparecem após SELECT e Campos que não aparecem em funções agregadas devem aparecer após GROUP BY

语法:SELECT "字段1", SUM("字段2") FROM "表名" GROUP BY "字段1";
例:SELECT Store_Name, SUM(Sales) FROM fxk003 GROUP BY Store_Name ORDER BY sales;
insira a descrição da imagem aqui

2.过滤——HAVING

用来过滤由 GROUP BY 语句返回的记录集,通常与 GROUP BY 语句联合使用
HAVING 语句的存在弥补了 WHERE 关键字不能与聚合函数联合使用的不足。

语法:SELECT "字段1", SUM("字段2") FROM "表格名" GROUP BY "字段1" HAVING (函数条件);
例:SELECT Store_Name, SUM(Sales) FROM fxk003 GROUP BY Store_Name HAVING SUM(Sales) > 1500;
insira a descrição da imagem aqui

3.别名设置

----字段別名 表格別名
语法:SELECT "表格別名"."字段1" [AS] "字段別名" FROM "表格名" [AS] "表格別名";
例:SELECT A.Store_Name Store, SUM(A.Sales) “Total Sales” FROM fxk003 A GROUP BY A.Store_Name;
insira a descrição da imagem aqui

4.子查询

连接表格,在WHERE 子句或 HAVING 子句中插入另一个 SQL 语句
语法:SELECT "字段1" FROM "表格1" WHERE "字段2" [比较运算符] 外查询
(SELECT "字段1" FROM "表格2" WHERE "条件"); 内查询
insira a descrição da imagem aqui

5.EXISTS

用来测试内查询有没有产生任何结果,类似布尔值是否为真
#如果有的话,系统就会执行外查询中的SQL语句。若是没有的话,那整个 SQL 语句就不会产生任何结果。
语法:SELECT "字段1" FROM "表格1" WHERE EXISTS (SELECT * FROM "表格2" WHERE "条件");
例:SELECT SUM(Sales) FROM fxk003 WHERE EXISTS (SELECT * FROM fxk002 WHERE Region = ‘West’);
insira a descrição da imagem aqui

五、表连接查询

MYSQL数据库中常用的表连接有三种

1.inner join(内连接)

只返回两个表中联结字段相等的行
insira a descrição da imagem aqui
语法:select * from 表1 A inner join 表2 B on A.字段 = B.字段;

insira a descrição da imagem aqui

2.left join(左连接)

返回包括左表中的所有记录和右表中联结字段相等的记录

insira a descrição da imagem aqui
语法:select * from 表1 A left join 表2 B on A.字段 = B.字段;

insira a descrição da imagem aqui

3.right join(右连接)

:返回包括右表中的所有记录和左表中联结字段相等的记录
insira a descrição da imagem aqui
语法:select * from 表1 A right join 表2 B on A.字段 = B.字段;
insira a descrição da imagem aqui

六、视图的运用—— view

视图:可以被当作是虚拟表或存储查询。

  • 视图跟表格的不同是,表格中有实际储存数据记录,而视图是建立在表格之上的一个架构,它本身并不实际储存数据记录。
  • 临时表在用户退出或同数据库的连接断开后就自动消失了,而视图不会消失。
  • 视图不含有数据,只存储它的定义,它的用途一般可以简化复杂的查询。比如你要对几个表进行连接查询,而且还要进行统计排序等操作,写SQL语句会很麻烦的,用视图将几个表联结起来,然后对这个视图进行查询操作,就和对一个表查询一样,很方便。

语法格式:
创建视图表:CREATE VIEW "视图表名" AS "SELECT 语句";
删除视图表: DROP VIEW "视图表名";

insira a descrição da imagem aqui

七、联级——UNION

记录种类
UNION :生成结果的数据记录值将没有重复,且按照字段的顺序进行排序
语法:[SELECT 语句 1] UNION [SELECT 语句 2];

UNION ALL :将生成结果的数据记录值都列出来,无论有无重复
语法:[SELECT 语句 1] UNION ALL [SELECT 语句 2];
insira a descrição da imagem aqui

八、交集值 ----取两个SQL语句结果的交集

1.联级视图求交集值

create view v_info as select distinct name from info union all select distinct name from info3;
select name,count(*) from v_info group by name;
select name from v_info group by name having count(*) >1;

insira a descrição da imagem aqui

2.内连接求交集值

select A.name from info A inner join info3 B on A.name=B.name;

select A.name from info A inner join info3 B using(name);
insira a descrição da imagem aqui

3.使用子查询的方式求交集值

insira a descrição da imagem aqui

4.取非交集值

  1. 联级方法中 count(*)<=1
  2. 左右内连接 将is not null 改为 is null
  3. 子查询 外连接查询 not in (内连接查询)

九、case 条件选择查询语句

 SELECT CASE ("字段名")
     WHEN "条件1" THEN "结果1"
     WHEN "条件2" THEN "结果2"
     [ELSE "结果N"]
     END
 FROM "表名";
     
 # "条件"可以是一个数值或是公式。ELSE子句则并不是必须的

insira a descrição da imagem aqui

十、正则表达式

匹配模式 描述 实例
^ 匹配文本的开始字符 ‘^bd’ 匹配以 bd 开头的字符串
$ 匹配文本的结束字符 ‘qn$’ 匹配以 qn 结尾的字符串
. 匹配任何单个字符 ‘s.t’ 匹配任何 s 和 t 之间有一个字符的字符串
* corresponde a zero ou mais dos caracteres que o precedem 'fo*t' corresponde a t precedido por qualquer o
+ Corresponde ao caractere anterior 1 ou mais vezes 'hom+' corresponde a uma string começando com ho seguido por pelo menos um m
字符串 corresponde à string especificada 'clo' corresponde a strings contendo clo
p1丨p2 corresponde a p1 ou p2 'bg丨fg' corresponde a bg ou fg
[...] Corresponde a qualquer caractere no conjunto de caracteres '[abc]' corresponde a a ou b ou c
[^...] corresponde a qualquer caractere que não esteja entre parênteses '[^ab]' corresponde a uma string que não contém a ou b
{n} Corresponde à string anterior n vezes 'g{2}' corresponde a uma string contendo 2 g
{n,m} Corresponde à string anterior pelo menos n e no máximo m vezes 'f{1,3}' corresponde a f pelo menos 1 vez e no máximo 3 vezes

gramática:SELECT "字段" FROM "表名" WHERE "字段" REGEXP {模式};

insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/weixin_67300995/article/details/131347229
Recomendado
Clasificación