Funciones y declaraciones de uso común de MySQL

base de datos mysql, un conjunto completo de declaraciones de consulta de uso común

Los siguientes registros de declaraciones SQL DQL de uso común; consulta básica, consulta condicional, consulta difusa, consulta de clasificación, función agregada, deduplicación, consulta de paginación, salida limitada, consulta de varias tablas ...

基本语法:
增:
添加数据:inset into 表名 (列名1,列名2...values(1,值2...)
添加列:alter table 表名 add 列名 数据类型(长度);
删:delete from 表名
删除列:alter table 表名 drop 列名
 可根据需要加上条件,否则删除全表
改:update 表名 set 字段1=值,字段2=...
可根据需要加上条件,否则更新全表
更新列名:alter table 表名 change 旧列名 新列名 数据类型(长度)
查:select 查询列名(多个列名用,隔开)from 表名

1. Consulta básica

Sintaxis: seleccione el nombre de la columna de la consulta (se usa para varios nombres de columna, separados) del nombre de la tabla
* PS: se pueden consultar todas las columnas en *lugar de todos los nombres de columna, *la complejidad de tiempo es alta, al escribir un proyecto para enumerar toda la necesidad de consulta
Ejemplo de columna :
-Columna de consulta especificada
-Identificación de consulta, nombre, edad del estudiante
Columna de consulta especificada

Consulta de dos condiciones

comprensión
La consulta condicional es usar la
instrucción where después de la consulta básica durante la consulta , y usar el operador después de where para retener los datos elegibles.
Símbolo de condición
= Igual
! = <> varía
<menor que> mayor que <= menor o igual> = mayor o igual que
y / y
----------- las condiciones en ambos lados se cumplen al mismo tiempo
o o
------------- Se cumple una de las condiciones en ambos lados
en (conjunto) rango está dentro del rango de colección de conjuntos
entre el valor 1 y el valor 2
------------ entre el valor 1 y el valor 2 (incluido el valor crítico, de pequeño a grande)
no en el
ejemplo invertido :
- Consultar registros de estudiantes de entre 20
Inserte la descripción de la imagen aquí
y 40 años - Verificar registros que el número de estudiante no sea 1, 2
Inserte la descripción de la imagen aquí

Tres consultas difusas

La consulta difusa debe colocarse después de donde y usar la palabra clave like
: comodín:
%, puede coincidir con cualquier número de caracteres
_, puede coincidir con cualquier carácter

 例·:-- 查询姓名以“张”开头的学生记录
select * from stu where sname like '张%';
-- 查询姓名中包含“三”的学生记录
select * from stu where sname like '%三%'

Cuatro consultas de clasificación

Ordene los resultados de la consulta en un orden determinado
por campo [desc | asc] ==> desc orden descendente, asc orden ascendente

例:
-- 不写排序类型,默认是升序
select * from stu order by age
-- 查询所有学生记录,按年龄升序排序,如果年龄相同时,按编号降序排序
select * from stu order by age asc,sid desc

Cinco funciones agregadas

Función agregada:
       count (nombre de la columna) cuenta el número de filas donde la columna especificada no es nula.
       Max (nombre de columna) obtiene el valor máximo en la columna especificada. Si es una cadena,
       min (nombre de columna) obtiene la
       suma mínima (nombre de la columna) en orden de caracteres Especifique el valor de la suma de la columna, calcule el no número, el resultado es 0
       avg (nombre de la columna) Calcule el valor promedio de la columna especificada, calcule el no número, el resultado es 0

Sintaxis:
seleccione la función agregada del nombre de la tabla [donde ...]

-- 查询最高成绩和最低成绩:
select max(score) '最高分',min(score) '最低分' from stu;
-- 统计stu表中成绩大于60的最高成绩和最低成绩:
select max(score) '最高分',min(score) '最低分' from stu where score > 60;

ps:
El nombre de la columna que aparece con la función agregada debe aparecer después del grupo por.
Por el contrario, si hay un campo que no aparece después del grupo por, ¡el resultado de la consulta es anormal!

Seis deduplicaciones

La función de deduplicación distinta (columna)
deduplica los datos en la columna especificada

Sintaxis:
selectdistinct (nombre de columna) del nombre de la tabla [donde ...]

-- 不重复的年龄
select distinct(age) from stu;
-- 查询年龄不重复的共有多少人
select count(distinct age) from stu;

Consulta de siete grupos

Cuando necesite realizar una consulta por grupo, debe utilizar el grupo por declaración.

Sintaxis:
seleccionar * de stu [donde…] agrupar por campo [ordenar por…]

Los grupos con el mismo valor de campo se agrupan.
Nota:
1 Generalmente, las operaciones después de la agrupación son operaciones de agregación.
2 Dividir en varios grupos. El resultado de la tabla virtual son unas pocas filas de datos.
3 Las funciones de agregación son para realizar operaciones de agregación separadas para cada grupo.

Filtrar después de agrupar, debe usar la cláusula have

La diferencia entre hacing y where:
where es el filtrado antes de agrupar y have es el filtrado
después de agrupar. Las funciones agregadas no se pueden usar después de dónde, pero las funciones agregadas se pueden usar para tener.
Ejemplo:

-- 查询男生多少人,女生多少人
select sex,count(*) '人数' from stu group by sex;
-- 查询每个班级的班级编号和每个班级的成绩和:
select cid,sum(score) from stu group by cid;
-- 查询每个班级的班级编号以及每个班级的人数:
select cid '班级',count(sid) '人数' from stu group by cid;
-- 查询成绩总和大于200的班级编号以及成绩和
select cid,sum(score) from stu group by cid having sum(score) > 200
-- having可以使用前面定义的别名
select cid,sum(score) 'sum' from stu group by cid having sum > 200
-- 查询成绩总和大于200的班级编号以及成绩和并根据成绩总和降序
select cid,sum(score) 'sum' from stu group by cid having sum > 200 order by sum asc;

Salida de ocho límites

Puede limitar la salida de los resultados de la consulta.
Puede limitar la cantidad de salida y el lugar de salida.

Sintaxis:
escribir compensación de límite al final de la declaración sql, subíndice de
inicio de límite de recuento de filas, número de filas;
por ejemplo: límite 0,2; ==> salida de la primera, salida 2

Ejemplo:

   -- 输出前两条
select * from stu limit 0,2;

-- 从第四条开始,输出三条
select * from stu limit 3,3;

Nueve funciones

Función de proceso

If (expr1, expr2, expr3)
Si expr1 es verdadero, devuelve expr2, de lo contrario devuelve expr3
- función isnull (), juzga si está vacía
- isnull (campo) Si es nulo, devuelve 1 si no es nulo devuelve 0

Ejemplo:

-- 查询学生id,姓名,成绩,如果成绩为null,显示缺考
select sid,sname,if(isnull(score)=1,'缺考',score) from stu;

CASE WHEN [expr1] THEN [result1]… ELSE [default] END Si expr es verdadero, devuelve result1, de lo contrario regresa al
caso predeterminado
cuando condición luego ejecuta instrucción
cuando condición luego ejecuta instrucción
... en caso
contrario ejecuta instrucción
end
ejecuta la condición después de la primera cuando Si es verdadero, ejecute la declaración después de entonces,
si la condición después de cuándo es falsa, ejecute la condición después del segundo cuando
Si todo es falso, ejecute la declaración después de else

Ejemplo:

-- 查询学生id,姓名,成绩,以及等级
-- (0-59 不及格,60-69中,70-89良,90-100优 )
select sid,sname,score,
	case 
		when score < 60 then '不及格'
    when score < 70 then '中'
		when score < 90 then '良'
		when isnull(score)=1 then '缺考'
		else '优'
	end as '等级'
from stu

Más de diez consultas de tabla

** Conjunto de resultados combinados de consultas de unión **

Los resultados de la consulta de las dos tablas se empalman verticalmente . Se garantiza que el número, tipo y orden de los campos de las dos tablas unidas por
unión / unión
son iguales. La
unión se duplicará al empalmar,
unión todas empalmará todos los datos de las dos tablas

P.ej:

select sid,sname from stu
union all
select cid,cname from class;

Conectar consulta:

Hay tres tipos de relaciones entre tablas: uno a uno, uno a muchos y muchos
a muchos. Relación uno a uno: puede agregar campos relacionados a cualquier tabla.
Relación uno a muchos : solo puede agregar campos relacionados en el extremo de varios.
Relación de varios a varios: necesita crear una nueva tabla, utilizar un tercero para representar la relación

La consulta de unión sirve para multiplicar varias tablas y varias filas de datos. También producirá un producto cartesiano

Conexión interna:

Sintaxis de combinación interna:
seleccione * de la Tabla 1 combinación interna Tabla 2 sobre condiciones de asociación Las
combinaciones internas solo retendrán los datos que cumplan completamente las condiciones de asociación

Ejemplo:

-- 查询学生名称、学生成绩、班级名称、班级地址
select sname,score,cname,caddress from stu inner join class on stu.cid = class.cid

-- 内连接可以简写
select * from stu inner join class on stu.cid = class.cid 
-- 简写成
select * from stu,class where stu.cid = class.cid

Unión externa


Combinación externa : conservará los datos que no cumplan con las condiciones. Unión externa izquierda - combinación externa izquierda activada
conservará los datos que no cumplan las condiciones en la tabla de la izquierda.
Unión externa derecha-combinación externa derecha activada
conservará los datos que sí no cumplen las condiciones de la tabla de la derecha.
Las palabras clave externas generales se pueden omitir

Ejemplo:

-- 查询全部学生信息,如果有班级信息,一并查出.
select * from stu s left outer join class c on s.cid = c.cid
-- 查询全部班级信息,如果有学生,将学生信息查出
select * from stu s right outer join class c on s.cid = c.cid

Subconsulta

Una subconsulta es una consulta anidada.
Generalmente, una subconsulta aparece después de:
desde y después de usar
where como tabla , se usa como condición.

Ejemplo:

-- 查询与张三同一个班级的学生。
-- 1查出张三的班级
select cid from stu where sname = '张三'
-- 2查出1班的学生
select * from stu where cid = 1
-- 合并成子查询
select * from stu where cid = (select cid from stu where sname = '张三')
-- 成绩高于3号班级所有人的学生信息
-- 1 找到3班最高分
select max(score) from stu where cid = 3
-- 2 找成绩比96高的学生
select * from stu where score > 96
-- 合并
select * from stu where score > (select max(score) from stu where cid = 3)

Auto-conexión
Auto-conexión es para conectarse a sí mismo, una tabla se usa como dos tablas

s1 es la tabla de estudiantes s2 es la tabla líder
-el líder de s1 es el estudiante en s2
seleccione s1.sid, s1.sname, s2.sid, s2.sname de stu s1, stu s2 donde s1.groupLeaderId = s2.sid y s1.sid = 1008

Tabla de ejemplo:
crear una tabla de estudiantes:

DROP TABLE IF EXISTS `stu`;
CREATE TABLE `stu` (
  `sid` int(11) DEFAULT NULL,
  `sname` varchar(25) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `sex` char(6) DEFAULT NULL,
  `score` int(11) DEFAULT NULL,
  `cid` int(11) DEFAULT NULL,
  `groupLeaderId` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- 添加数据
INSERT INTO `stu` VALUES ('1001', '张三', '20', '男', '72', '1', '1003');
INSERT INTO `stu` VALUES ('1002', '李四', '15', '女', '78', '1', '1003');
INSERT INTO `stu` VALUES ('1003', '王五', '95', '男', '99', '1', '1010');
INSERT INTO `stu` VALUES ('1004', '赵六张', '65', '女', '60', '1', '1007');
INSERT INTO `stu` VALUES ('1005', '周七', '55', '男', '78', '3', '1007');
INSERT INTO `stu` VALUES ('1006', '茅十八', '75', '女', '96', '3', '1007');
INSERT INTO `stu` VALUES ('1007', '张三丰', '40', '男', '85', '3', '1010');
INSERT INTO `stu` VALUES ('1008', '李四方', '45', '女', '90', '2', '1010');
INSERT INTO `stu` VALUES ('1009', '艾三弗森', '45', '', '35', '4', '1008');
INSERT INTO `stu` VALUES ('1010', '三欧文', '35', '女', '49', '2', '1008');


Mesa de estudiantes:
Mesa de estudiantes
crea una mesa de clase:

DROP TABLE IF EXISTS `class`;
CREATE TABLE `class` (
  `cid` int(11) DEFAULT NULL,
  `cname` varchar(255) COLLATE utf8_bin NOT NULL,
  `caddress` varchar(255) COLLATE utf8_bin DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

-- ----------------------------
--  添加数据
-- ----------------------------
INSERT INTO `class` VALUES ('1', 'BigData', '102');
INSERT INTO `class` VALUES ('2', 'HTML', '103');
INSERT INTO `class` VALUES ('3', 'VR', '104');
INSERT INTO `class` VALUES ('4', 'Java', '105');

Horario de clases:
Horario de clases

para resumir:

Sintaxis de escritura:
seleccionar
lista_de_selección - columna a consultar
desde
nombre_tabla-nombre de tabla a consultar
donde condición-filtrar fila condición
agrupar por agrupación_clumnas-agrupar los resultados por columna que
tiene condición-filtro después de agrupar
orden por clasificación_columna-clasificación
límite de compensación, fila_contar - limitar los resultados

Supongo que te gusta

Origin blog.csdn.net/CV_Ming/article/details/112389340
Recomendado
Clasificación