MySQL --- Entrada básica a competente (1)

Resumen de la base de datos

1. ¿Qué son los DBMS SQL DB y la relación entre ellos?

DB:
DataBase (base de datos, la base de datos realmente existe en forma de archivo en el disco duro)
DMBS:
DataBase Management System (sistema de gestión de bases de datos, comunes son: MySQL, Oracle, DB2, SqlSever...)
SQL:
lenguaje de consulta estructurado , es un Es un lenguaje común estándar, y SQL estándar es aplicable a todos los productos de base de datos.
SQL es un lenguaje de alto nivel, siempre que pueda entender palabras en inglés, el SQL escrito se puede leer
. Compile y luego ejecute SQL (la compilación de sentencias SQL la realiza DBMS)
DBMS es responsable de ejecutar sentencias SQL y opera los datos en la base de datos a través de las sentencias SQL ejecutadas.

Clasificación de sentencias SQL

DQL (instrucción de consulta de datos): instrucción de consulta, todas las instrucciones de selección son DQL; DML (lenguaje de manipulación de datos): inserte, elimine
, actualice, agregue, elimine y modifique los datos en el destino; DDL (lenguaje de definición de datos): cree, suelte, modifique, en la tabla Adición, eliminación y modificación de la estructura;
TCL (declaración de control de transacciones): commit confirma la transacción, rollback revierte la transacción; DCL (lenguaje de control de datos): otorgar
autorización, revocar revocar autoridad, etc.;

Comandos comunes de MySQL

Ver base de datos:

show databases;

inserte la descripción de la imagen aquí

Crear la base de datos:

create database 数据库名;

inserte la descripción de la imagen aquí

Usar base de datos:

use database 数据库名;

inserte la descripción de la imagen aquí

Compruebe qué tablas hay en la base de datos:

show tables;

inserte la descripción de la imagen aquí
Eliminar base de datos:

drop database 数据库名;

inserte la descripción de la imagen aquí

Ver estructura de la tabla:

desc 表名;

inserte la descripción de la imagen aquíinserte la descripción de la imagen aquíinserte la descripción de la imagen aquí
Ver los datos en la tabla:

select * from 表名;

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

Compruebe qué base de datos está actualmente en uso:

select database();

Compruebe el número de versión de MySQL:

select version();

Terminar una declaración:

\C

Salga de MySQL:

exit

Vea la declaración que crea la tabla:

show create table 表名;

Nota: Lo anterior no es una instrucción SQL, sino un comando SQL;

instrucción SQL

consulta sencilla

Formato de sintaxis:

select 字段名1,字段名2,字段名3,......from 表名;

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
Consulta el salario anual del empleado (los campos pueden estar involucrados en operaciones matemáticas):

select enname,sal * 12 from emp;

inserte la descripción de la imagen aquí
Cambio de nombre de columna de los resultados de la consulta:

select ENNAME ,sal * 12 as yearsal from emp;
//如果含有中文字符需要用单引号括起来:
select ENNAME ,sal * 12 as '年薪' from emp;
//as 关键字可以省略
select ENNAME ,sal * 12 yearsal from emp;

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
Consultar todos los campos:

select * from emp;
//实际开发中 不建议使用*,效率较低.

inserte la descripción de la imagen aquí

Sugerencia: cualquier instrucción SQL termina con ";".

Vea la declaración que crea la tabla:

select create table 表名;

inserte la descripción de la imagen aquí

consulta condicional

Formato de sintaxis:

select 
    字段,字段,...
from
    表名
where
    条件;
执行顺序:先from,然后where,最后select.

Consulta el nombre del empleado cuyo salario es igual a 5000:

select enname from emp where sal = 5000;

inserte la descripción de la imagen aquí
Verifique el salario de SMITH:

select sal from emp where name = 'SMITH';

inserte la descripción de la imagen aquí
Encuentre empleados con salario superior a 3000:

select enname ,sal from emp where sal > 3000;

inserte la descripción de la imagen aquí
Encuentre empleados cuyo salario no sea igual a 3000:

select enname,sal from emp where sal <> 3000;

inserte la descripción de la imagen aquí
Encuentre empleados con salarios entre 1100 y 3000, incluidos 1100 y 3000:

select enname ,sal from emp where sal >= 3000 and sal <=1100;
select enname ,sal from emp where sal between 1100 and 3000;
//between...and... 是闭区间[1100 ~ 3000]
//between...and...除了应在数字方面, 也可以用在字符串方面.

La consulta condicional es nula y no es nula

Descubre quién no tiene estipendio:

select enname ,sal ,comm from emp where comm is null;
//在数据库中null不是一个值,代表什么也没有,为空,空不是一个值,不能赢等号衡量,必须是is null 或 is not null.

inserte la descripción de la imagen aquí
Infórmate de los que no tienen mesada no nula:

select enname ,sal ,comm from emp where comm is not null;

inserte la descripción de la imagen aquí
Descubra qué trabajos son empleados de MABAGER y VENDEDOR:

select enname,job from emp where job = 'MABAGER' or 'SALESMAN';

inserte la descripción de la imagen aquí

y y o cuestiones prioritarias

Encuentre empleados cuyo salario sea mayor a 1000 y cuyo número de departamento sea 20 o 30:

select enname,sal depyno from emp where sal > 1000 and (deptno = 20 or deptno = 30);
//当优先级不确定的时候加小括号

inserte la descripción de la imagen aquí

Consulta condicional en

Descubra qué trabajos son empleados de MABAGER y VENDEDOR:

select enname,job from emp where job in ('MABAGER' , 'SALESMAN');
//in 等同于 or.
//in 后面不是区间 是具体的值

inserte la descripción de la imagen aquí

consulta difusa como

Descubre que la segunda letra es A:

select enname from emp where enname like '_A%';
//如果要查找name列中含有'_'的,需要加上转义字符'\';
//select enname from emp where enname like '\_';

inserte la descripción de la imagen aquí

Ordenar datos (ascendente, descendente)

select enname,sal from emp order by sal;//默认升序
select enname,sal from emp order by sal asc;//升序
select enname,sal from emp order by sal desc;//降序

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
Ordenar por salario en orden descendente, y luego por nombre en orden ascendente cuando el salario es el mismo:

select enname,sal from tmp order by sal desc,enname asc;
//越靠前面的字段越起到引导作用,只有当前面的字段无法排序的时候.才会启用后面的字段

inserte la descripción de la imagen aquí

select enname,sal from tmp order by 2;
//这里的2表示的是第二列;

inserte la descripción de la imagen aquí
Conozca los empleados cuyas funciones son VENDEDOR, y los requisitos están en orden decreciente de salario:

select 
    enname,job,sal      //3
from
    emp                 //1
where
    job = 'SALESMAN'    //2
order by 
    sal desc;           //4
    //按照顺序依次执行;

inserte la descripción de la imagen aquí

función de agrupación

contar: contar
suma: suma
avg: promedio
max: valor máximo
min: valor mínimo
Nota: todas las funciones de agrupación operan en un determinado conjunto de datos

Suma de salarios:

select sum(sal) from emp;

inserte la descripción de la imagen aquí

//找出最高工资
select max(sal) from emp;
//找出最低工资
select min(sal) from emp;
//找出平均工资
select avg(sal) from emp;
//找出总人数
select count(*) from emp;
select count(enname) from emp;

Las funciones de agrupación ignoran automáticamente los valores NULL:

select count(comm) from emp;

inserte la descripción de la imagen aquí
Calcule el salario anual de cada empleado:

select enname,(sal+comm)*12 as yearsal from emp;
//所有数据库中,只要是有null的运算,计算结果都是NULL

inserte la descripción de la imagen aquí
Ortografía correcta:

select enname,(sal+if null(comm,0))*12 as yearsal from emp;

inserte la descripción de la imagen aquí

count(*) y count (específicamente un campo)

inserte la descripción de la imagen aquí

count(*) : En lugar de contar el número de datos en un campo, veinte cuenta el número total de registros (no tiene nada que ver con un campo)
count(comm): Representa el número total de datos que no son nulos en el campo com. Las funciones de agrupación también se pueden combinar:

select count(*),sum(sal),avg(sal),max(sal),min(sal) from emp;

inserte la descripción de la imagen aquí

select enname,sal from emp where sal > avg(sal);//ERROR

El mensaje de error de la declaración SQL anterior: uso no válido de la función de agrupación. Razón: hay una regla de sintaxis en la declaración SQL, la función de agrupación no se puede usar directamente en la cláusula where. Porque group
by se ejecuta después de que se ejecuta where.

agrupar por 和 tener

agrupar por: agrupar por un campo o algunos campos tener: tener es filtrar los datos después de volver a agrupar.

Ejemplo: Encuentre el salario máximo para cada puesto de trabajo:

select max(sal),job from emp group by job;

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

Nota: La función de agrupación generalmente se usa junto con group by, por lo que se denomina función de agrupación. Y cualquier función de agrupación (count max min
sum avg) se ejecutará después de la ejecución de la instrucción group by. Cuando un SQL declaración no tiene agrupar por, los datos en toda la tabla formarán un grupo por sí mismos.

Encuentre empleados con salarios más altos que el promedio:
Paso 1: Encuentre salarios promedio

select avg(sal) from emp;

inserte la descripción de la imagen aquí
Paso 2: Identifique a los empleados con un salario superior al promedio:

select enname,sal from emp where sal > 2073.214286;

inserte la descripción de la imagen aquí

Combinar anidado:

//子查询
select enname,sal from emp where sal > (select avg(sal) from emp);

inserte la descripción de la imagen aquí
Salario promedio por puesto de trabajo:

select job ,avg(sal) from emp group by job;

inserte la descripción de la imagen aquí

select enname, max(sal), job from emp group by job;
los campos anteriores están en MySQL y los resultados de la consulta están disponibles, pero los resultados no tienen sentido y se informará un error en la base de datos de Oracle, y la sintaxis es mal
Las reglas de sintaxis de Oracle son mejores que la sintaxis de MySQL Las reglas son más rigurosas
Recuerde una regla: cuando hay group by en una declaración, select solo puede ser seguido por la función de agrupación y los campos involucrados en la agrupación.

¿Se pueden combinar y agrupar varios campos?
Caso: Encontrar el salario más alto para diferentes trabajos en cada departamento

select 
    deptno,job,max(sal)
from
    emp
group by 
    deptno,job;

inserte la descripción de la imagen aquí

La elección de tener y dónde

Averigüe el salario máximo de cada departamento y solicite mostrar datos con salario mayor a 2900.
Paso 1: encuentre el salario máximo de cada departamento
inserte la descripción de la imagen aquí
Paso 2: encuentre el salario mayor a 2900.
inserte la descripción de la imagen aquíEl método anterior es ineficiente;

Ortografía correcta:

select max(sal),deptno from emp where sal > 2900 group by deptno;
//效率较高,建议能够使用where 过滤的尽量使用where

inserte la descripción de la imagen aquí
Averigüe el salario máximo de cada departamento y solicite que se muestren los datos con un salario superior a 2000:
Paso 1: encuentre el salario máximo de cada departamento

select max(sal),deptno from emp group by deptno;

inserte la descripción de la imagen aquí
Paso 2: Solicite que se muestren los datos con un salario superior a 2000.

select max(sal),deptno from emp group by having avg(sal) > 2000;

inserte la descripción de la imagen aquí

La función de agrupación no se puede usar después de where: select max(sal),deptno from emp where avg(sal) > 2000
group by deptno; //Error. En este caso, solo se puede usar el filtrado.

Deduplicación de conjuntos de resultados de consultas

1,

select distinct job from emp;

inserte la descripción de la imagen aquí
Nota: distinto solo puede aparecer en la parte superior de todos los campos.

select distinct deptno,job from emp;

inserte la descripción de la imagen aquí
Caso: Cuente el número de trabajos:

select count(distinct job) from emp;

inserte la descripción de la imagen aquí

consulta de conexión

¿Qué es una consulta conjunta? En el desarrollo real, en la mayoría de los casos, se consulta desde una sola tabla. Generalmente, es una consulta conjunta de varias tablas para eliminar el resultado final.
En el desarrollo real, un negocio generalmente corresponde a varias tablas, como: provincia y clase, al menos dos tablas.
inserte la descripción de la imagen aquí
Los estudiantes y las clases se almacenan en una tabla, el resultado es el mismo que el anterior, habrá mucha duplicación de datos, lo que resultará en redundancia de datos.

Supongo que te gusta

Origin blog.csdn.net/m0_62764440/article/details/124144842
Recomendado
Clasificación