Base de datos MySQL - declaración de consulta avanzada

1. Consulta de base de datos

Una base de datos es una herramienta que se utiliza para almacenar, actualizar y consultar datos, y la consulta de datos es la función principal de una base de datos. La base de datos se utiliza para transportar información y la información se utiliza para el análisis y la visualización. Por lo tanto, es necesario dominar un método de consulta más refinado. Este artículo se centrará en declaraciones de consulta avanzadas para datos.

2. Método de consulta eficiente

1. Especifique el campo a consultar - SELECCIONAR

Sintaxis: SELECT "字段" FROM "表名";
Ejemplo: SELECT Store_Name FROM fxk002;
inserte la descripción de la imagen aquí

2. Realice una consulta de deduplicación en el campo - DISTINTO

Sintaxis: SELECT DISTINCT "字段" FROM "表名";
Ejemplo: SELECT DISTINCT Store_Name FROM fxk003;

inserte la descripción de la imagen aquí

3. Consulta de condición - donde

Sintaxis: SELECT "字段" FROM "表名" WHERE "条件";
Ejemplo: SELECT Store_Name FROM fxk002 WHERE Ventas > 1000;
inserte la descripción de la imagen aquí

3. Aumentar la consulta de la relación lógica - y y o

语法:SELECT "字段" FROM "表名" WHERE "条件1" {[AND|OR] "条件2"}+ ;
例:SELECCIONE Store_Name FROM fxk003 DONDE Ventas > 1000 O (Ventas < 500 Y Ventas > 200);
inserte la descripción de la imagen aquí

4. Consulta de registro de datos de valor conocido - IN

语法:SELECT "字段" FROM "表名" WHERE "字段" IN ('值1', '值2', ...);
例:SELECT * FROM fxk003 WHERE Store_Name IN ('Los Ángeles', 'Houston');
inserte la descripción de la imagen aquí

5. Consulta de registro de datos dentro del rango - ENTRE

Sintaxis: SELECT "字段" FROM "表名" WHERE "字段" BETWEEN '值1' AND '值2';
Ejemplo: SELECT * FROM fxk003 WHERE Fecha ENTRE '2020-12-06' Y '2020-12-10';
inserte la descripción de la imagen aquí

6. Consulta comodín

Por lo general, los comodines se usan junto con LIKE

comodín ilustrar
% Un signo de porcentaje significa cero, uno o más caracteres
_ Los guiones bajos representan caracteres individuales

LIKE: haga coincidir un patrón para encontrar los registros de datos que queremos.
Sintaxis: SELECT "字段" FROM "表名" WHERE "字段" LIKE {模式};
Ejemplo: SELECT * FROM fxk003 WHERE Store_Name like '%on%';

inserte la descripción de la imagen aquí

7. Consulta de clasificación de palabras clave - ORDENAR POR

语法:SELECT "字段" FROM "表名" [WHERE "条件"] ORDER BY "字段" [ASC, DESC];
ASC 是按照升序进行排序的,是默认的排序方式。
DESC 是按降序方式进行排序。
例:SELECCIONE Store_Name,Ventas,Fecha DESDE fxk003 ORDEN POR Ventas DESC;

inserte la descripción de la imagen aquí

3. Consulta de función

1. Funciones matemáticas de uso común en la base de datos

función matemática efecto
abdominales(x) devuelve el valor absoluto de x
al azar() Devuelve un número aleatorio entre 0 y 1
módulo(x,y) Devuelve el resto después de dividir x por y
potencia(x,y) devuelve x a la potencia de y
redondo(x) devuelve el entero más cercano a x
redondo (x, y) Valor redondeado con decimales de x a y
sqrt(x) devuelve la raíz cuadrada de x
truncar(x,y) Devuelve el valor del número x truncado a y decimales
techo(x) devuelve el entero más pequeño mayor o igual que x
piso(x) devuelve el entero más grande menor o igual que x
mayor(x1,x2…) Devuelve el valor más grande de la colección y también puede devolver el valor más grande de varios campos
menos(x1,x2…) Devuelve el valor más pequeño de la colección y también puede devolver el valor más pequeño de varios campos

inserte la descripción de la imagen aquí

2. Función de agregación:

función agregada efecto
promedio() Devuelve la media de la columna especificada
contar() Devuelve el número de valores no NULL en la columna especificada
min() Devuelve el valor mínimo de la columna especificada
máx() Devuelve el valor máximo de la columna especificada
suma(x) Devuelve la suma de todos los valores en la columna especificada

inserte la descripción de la imagen aquí

3. Función de cadena:

funciones de cadena efecto
recortar() Devuelve el valor con el formato especificado eliminado
concat(x,y) Concatenar los parámetros proporcionados x e y en una cadena
substr(x,y) Obtenga la cadena a partir de la posición y-ésima en la cadena x, que tiene el mismo efecto que la función substring()
substr(x,y,z) Obtiene una cadena de longitud z que comienza en la posición y en la cadena x
longitud (x) Devuelve la longitud de la cadena x
reemplazar (x, y, z) sustituir la cadena z por la cadena y en la cadena x
superior (x) convertir todas las letras de la cadena x a mayúsculas
inferior (x) Convierte todas las letras de la cadena x a minúsculas
izquierda (x, y) Devuelve los primeros y caracteres de la cadena x
derecha (x, y) Devuelve los últimos y caracteres de la cadena x
repetir (x, y) repite la cadena x y veces
espacio(x) devuelve x espacios
strcmp(x,y) Compare x e y, el valor devuelto puede ser -1,0,1
inversa(x) invertir la cadena x
1. Eliminar recorte de caracteres
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 表名;

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

4. Declaración de consulta avanzada

1. Agrupación y resumen - GROUP BY

Resuma y agrupe los resultados de la consulta de los campos detrás de GROUP BY, que generalmente se usa en combinación con funciones agregadas. Hay
un principio en GROUP BY de que todos los campos que aparecen después de GROUP BY deben aparecer después de SELECT;
todos los campos que aparecen después de SELECT y Los campos que no aparecen en funciones agregadas deben aparecer después de GROUP BY

语法:SELECT "字段1", SUM("字段2") FROM "表名" GROUP BY "字段1";
例:SELECT Store_Name, SUM(Sales) FROM fxk003 GROUP BY Store_Name ORDER BY sales;
inserte la descripción de la imagen aquí

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;
inserte la descripción de la imagen aquí

3.别名设置

----字段別名 表格別名
语法:SELECT "表格別名"."字段1" [AS] "字段別名" FROM "表格名" [AS] "表格別名";
例:SELECT A.Store_Name Store, SUM(A.Sales) “Total Sales” FROM fxk003 A GROUP BY A.Store_Name;
inserte la descripción de la imagen aquí

4.子查询

连接表格,在WHERE 子句或 HAVING 子句中插入另一个 SQL 语句
语法:SELECT "字段1" FROM "表格1" WHERE "字段2" [比较运算符] 外查询
(SELECT "字段1" FROM "表格2" WHERE "条件"); 内查询
inserte la descripción de la imagen aquí

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’);
inserte la descripción de la imagen aquí

五、表连接查询

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

1.inner join(内连接)

只返回两个表中联结字段相等的行
inserte la descripción de la imagen aquí
语法:select * from 表1 A inner join 表2 B on A.字段 = B.字段;

inserte la descripción de la imagen aquí

2.left join(左连接)

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

inserte la descripción de la imagen aquí
语法:select * from 表1 A left join 表2 B on A.字段 = B.字段;

inserte la descripción de la imagen aquí

3.right join(右连接)

:返回包括右表中的所有记录和左表中联结字段相等的记录
inserte la descripción de la imagen aquí
语法:select * from 表1 A right join 表2 B on A.字段 = B.字段;
inserte la descripción de la imagen aquí

六、视图的运用—— view

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

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

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

inserte la descripción de la imagen aquí

七、联级——UNION

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

UNION ALL :将生成结果的数据记录值都列出来,无论有无重复
语法:[SELECT 语句 1] UNION ALL [SELECT 语句 2];
inserte la descripción de la imagen aquí

八、交集值 ----取两个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;

inserte la descripción de la imagen aquí

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);
inserte la descripción de la imagen aquí

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

inserte la descripción de la imagen aquí

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子句则并不是必须的

inserte la descripción de la imagen aquí

十、正则表达式

匹配模式 描述 实例
^ 匹配文本的开始字符 ‘^bd’ 匹配以 bd 开头的字符串
$ 匹配文本的结束字符 ‘qn$’ 匹配以 qn 结尾的字符串
. 匹配任何单个字符 ‘s.t’ 匹配任何 s 和 t 之间有一个字符的字符串
* coincide con cero o más de los caracteres que lo preceden 'fo*t' coincide con t precedida por cualquier o
+ Coincide con el carácter anterior 1 o más veces 'hom+' coincide con una cadena que comienza con ho seguida de al menos una m
字符串 coincide con la cadena especificada 'clo' coincide con cadenas que contienen clo
p1丨p2 coincide con p1 o p2 'bg丨fg' coincide con bg o fg
[...] Coincide con cualquier carácter en el conjunto de caracteres '[abc]' coincide con a o b o c
[^...] coincide con cualquier carácter que no esté entre paréntesis '[^ab]' coincide con una cadena que no contiene a o b
{n} Coincide con la cadena anterior n veces 'g{2}' coincide con una cadena que contiene 2 g
{n,m} Coincide con la cadena anterior al menos n y como máximo m veces 'f{1,3}' coincide con f al menos 1 vez y como máximo 3 veces

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

inserte la descripción de la imagen aquí

Supongo que te gusta

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