Directorio de artículos
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;
Crear la base de datos:
create database 数据库名;
Usar base de datos:
use database 数据库名;
Compruebe qué tablas hay en la base de datos:
show tables;
Eliminar base de datos:
drop database 数据库名;
Ver estructura de la tabla:
desc 表名;
Ver los datos en la tabla:
select * from 表名;
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 表名;
Consulta el salario anual del empleado (los campos pueden estar involucrados en operaciones matemáticas):
select enname,sal * 12 from emp;
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;
Consultar todos los campos:
select * from emp;
//实际开发中 不建议使用*,效率较低.
Sugerencia: cualquier instrucción SQL termina con ";".
Vea la declaración que crea la tabla:
select create table 表名;
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;
Verifique el salario de SMITH:
select sal from emp where name = 'SMITH';
Encuentre empleados con salario superior a 3000:
select enname ,sal from emp where sal > 3000;
Encuentre empleados cuyo salario no sea igual a 3000:
select enname,sal from emp where sal <> 3000;
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.
Infórmate de los que no tienen mesada no nula:
select enname ,sal ,comm from emp where comm is not null;
Descubra qué trabajos son empleados de MABAGER y VENDEDOR:
select enname,job from emp where job = 'MABAGER' or 'SALESMAN';
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);
//当优先级不确定的时候加小括号
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 后面不是区间 是具体的值
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 '\_';
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;//降序
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;
//越靠前面的字段越起到引导作用,只有当前面的字段无法排序的时候.才会启用后面的字段
select enname,sal from tmp order by 2;
//这里的2表示的是第二列;
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
//按照顺序依次执行;
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;
//找出最高工资
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;
Calcule el salario anual de cada empleado:
select enname,(sal+comm)*12 as yearsal from emp;
//所有数据库中,只要是有null的运算,计算结果都是NULL
Ortografía correcta:
select enname,(sal+if null(comm,0))*12 as yearsal from emp;
count(*) y count (específicamente un campo)
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;
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;
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;
Paso 2: Identifique a los empleados con un salario superior al promedio:
select enname,sal from emp where sal > 2073.214286;
Combinar anidado:
//子查询
select enname,sal from emp where sal > (select avg(sal) from emp);
Salario promedio por puesto de trabajo:
select job ,avg(sal) from emp group by job;
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;
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
Paso 2: encuentre el salario mayor a 2900.
El método anterior es ineficiente;
Ortografía correcta:
select max(sal),deptno from emp where sal > 2900 group by deptno;
//效率较高,建议能够使用where 过滤的尽量使用where
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;
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;
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;
Nota: distinto solo puede aparecer en la parte superior de todos los campos.
select distinct deptno,job from emp;
Caso: Cuente el número de trabajos:
select count(distinct job) from emp;
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.
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.