Notas de estudio de MySQL (2) -DML declaración

Introduccion

Lenguaje de manipulación de datos DML (lenguaje de manipulación de datos) : se utiliza para agregar, eliminar, cambiar, consultar y verificar la integridad de los datos de los registros de la base de datos. Las palabras clave de uso común son insertar (insertar), eliminar (eliminar), actualizar (actualizar), seleccionar (consultar), etc.

Pasos específicos

Insertar registro

INSERTAR EN nombre de tabla (campo1, campo2, ..., campo) VALORES (valor1, valor2, ..., valorn);

Campos en la tabla:
Inserte la descripción de la imagen aquí
Por ejemplo, inserte los siguientes registros en la tabla emp: ename es llw1, hiredate es 2020-01-01, sal es 20000, la ejecución del comando es la siguiente:

mysql>insert into emp (ename, hiredate, sal, deptno) values('llw1', '2020-01-01', '20000', 1);

No es necesario especificar el nombre del campo, pero el orden de los valores debe ser coherente con el orden de los campos, por ejemplo:

mysql>insert into emp values('lw', '2018-01-01', '30000', 2);

También puede insertar explícitamente solo los campos "ename" y "sal" en la tabla:

mysql>insert into emp (ename, sal) values('llw2', '20000');

Los resultados muestran que
Inserte la descripción de la imagen aquí
estos campos no escritos se pueden establecer automáticamente en NULL, el valor predeterminado y el siguiente número incrementado, lo que puede reducir en gran medida la complejidad de la instrucción SQL en algunos casos.

Inserte varios elementos a la vez:

INSERTAR EN nombre de tabla (campo1, campo2,…, campon)
VALORES
(record1_value1, record1_value2, ..., record1_valuesn),
(record2_value1, record2_value2, ..., record2_valuesn),
...
(recordn_value1, recordn_value2,…, recordn_valuesn);

Por ejemplo:

mysql>insert into dept values(5,'dept5'),(6,'dept6');

Los resultados muestran:
Inserte la descripción de la imagen aquí

Actualizar registros

El valor de registro en la tabla se puede cambiar con el comando de actualización, la sintaxis es la siguiente:

ACTUALIZAR nombre de tabla SET field1 = value1, field2. = Value2,…, fieldn = valuen [DONDE CONDICIÓN]

Por ejemplo, cambie el salario (sal) con esmalte "llw1" en la tabla emp de 20000 a 10000:

mysql> update emp set sal = 10000 where ename='llw1';

Los resultados muestran: El
Inserte la descripción de la imagen aquí
comando de actualización también puede actualizar datos en varias tablas al mismo tiempo, la sintaxis es la siguiente:

ACTUALIZACIÓN t1, t2, ..., tn set t1.field1 = expr1, tn.fieldn = exprn [DONDE ESTADO]

Por ejemplo:

mysql>update emp a,dept b set a.sal=a.sal*2, b.deptname=a.ename where a.deptno=2;

Los resultados muestran:
Inserte la descripción de la imagen aquí

Eliminar registro

Si el registro ya no es necesario, puede usar el comando eliminar para eliminar, la sintaxis es la siguiente:

DELETE FROM tablename [WHERE CONDITION]

Por ejemplo:

mysql>delete from emp where ename='llw2';

En MySQL, puede eliminar datos de varias tablas a la vez. La sintaxis es la siguiente:

ELIMINAR t1, t2, ..., tn DE t1, t2, ..., tn [DONDE ESTADO]

mysql>delete a,b from emp a,dept b where a.deptno=2 and b.deptno=6;

Los resultados muestran:
Inserte la descripción de la imagen aquí

Consultar registro

La sintaxis de SELECT es muy complicada, aquí solo se presenta la sintaxis más básica:

SELECT * FROM tablename [WHERE CONDITION]

mysql>select * from emp;

Inserte la descripción de la imagen aquí
Lo “*”que significa que todos los registros deben mostrarse, o todos los campos separados por comas pueden usarse en su lugar, por ejemplo:

mysql>select ename,hiredate,sal,deptno from emp;

Consultar registros únicos

La palabra clave distinta se puede usar para mostrar registros sin repetirlos, por ejemplo:

mysql>select distinct ename from emp;

Los resultados muestran:
Inserte la descripción de la imagen aquí

Consulta condicional

Mostrar registros con " deptno " como " 1 ":

mysql>select * from emp where deptno = 1;

Los resultados muestran:
Inserte la descripción de la imagen aquí
el ejemplo anterior, DONDE última condición es a = comparación de campos, además de = , pero también puede ser utilizado > , < ,> = , <= , ! = , Etc. operadores de comparación, entre una pluralidad de condiciones pueden ser también Utilice operadores lógicos como o , y para realizar consultas conjuntas con múltiples condiciones

Los resultados muestran:
Inserte la descripción de la imagen aquí

Ordenar y limitar

Si desea mostrar los resultados ordenados por un campo, puede usar el orden de las palabras clave para lograr, la sintaxis es la siguiente:

SELECT * FROM tablename [WHERE CONDITION] [ORDER BY field1 [DESC | ASC] , field2 [DESC | ASC],…, fieldn [DESC | ASC]]

Entre ellos, DESC y ASC son palabras clave de orden de clasificación, DESC significa orden descendente de acuerdo con el campo, ASC significa orden ascendente, si no escribe esta palabra clave, el valor predeterminado es el orden ascendente. ORDER BY puede ser seguido por múltiples campos de clasificación diferentes, y cada campo de clasificación puede tener un orden de clasificación diferente.

Por ejemplo:

mysql>select * from emp order by sal desc;

Los registros se muestran en orden descendente de sal . Los resultados son los siguientes:
Inserte la descripción de la imagen aquí
si los valores de los campos de clasificación son los mismos, los campos con el mismo valor se ordenan según el segundo campo de clasificación, y así sucesivamente. Si solo hay un campo de clasificación, los registros con el mismo campo se organizarán aleatoriamente.

Después de ordenar los registros, si solo desea mostrar una parte de los registros, puede usar la palabra clave de límite para lograr, la sintaxis es la siguiente:

SELECCIONAR… [LIMIT offset_start, row_count]

Por ejemplo:

mysql>select * from emp order by sal desc limit 3;

Solo se
Inserte la descripción de la imagen aquí
muestran los primeros 3 registros . El resultado es el siguiente: se muestran los registros de enésima a enésima.

Por ejemplo, mostrando los registros 2 a 3:

mysql>select * from emp order by sal desc limit 1, 2;

Los resultados son los siguientes:
Inserte la descripción de la imagen aquí

Agregado

En muchos casos, los usuarios necesitan realizar algunas operaciones de resumen, como contar el número de personas en toda la empresa o contar el número de personas en cada departamento. En este momento, se utilizan las operaciones de agregación SQL.

La sintaxis de la operación de agregación es la siguiente:

SELECCIONE [field1, field2, ..., fieldn]
fun_name FROM tablename
[WHERE here_contition]
[GROUP BY field1, field2, ..., fieldn [WITH ROLLUP]]
[HAVING where_contition]

La siguiente descripción de sus parámetros:

fun_name representa la operación de agregación a realizar, es decir, la función de agregación. Comúnmente se usan sum (sum), count (*) (número de registros), max (valor máximo), min (valor mínimo).
La palabra clave GROUP BY indica el campo que se debe clasificar y agregar, por ejemplo, para contar el número de empleados de acuerdo con la clasificación del departamento, el departamento debe escribirse después de agrupar por.
WITH ROLLUP es una sintaxis opcional que indica si se deben volver a agregar los resultados después de la agregación de clasificación.
La palabra clave HAVING significa filtrar condicionalmente los resultados clasificados.

Nota:

La diferencia entre tener y dónde es que tener es un filtrado condicional de los resultados agregados, mientras que dónde es filtrar los registros antes de la agregación. Si la lógica lo permite, usamos dónde filtrar los registros tanto como sea posible, porque el conjunto de resultados se reduce , Mejorará en gran medida la eficiencia de la agregación, y finalmente de acuerdo con la lógica para ver si se usa el filtrado para volver a filtrar.

Los registros en la tabla actual son los siguientes:
Inserte la descripción de la imagen aquí
Por ejemplo, se cuenta el número total de empresas en la tabla emp:

mysql>select count(1) from emp;

Inserte la descripción de la imagen aquí
Cuente la cantidad de personas en cada departamento:

mysql>select deptno,count(1) from emp group by deptno;

Inserte la descripción de la imagen aquí
Es necesario contar el número de personas en cada departamento y el número total de personas:

mysql> select deptno, count(1) from emp group by deptno with rollup;

Inserte la descripción de la imagen aquí
Departamentos con más de 1 estadística:

mysql> select deptno,count(1) from emp group by deptno having count(1) > 1;

Inserte la descripción de la imagen aquí
Calcule el salario total, el salario máximo y mínimo de todos los empleados de la empresa:

mysql> select sum(sal), max(sal), min(sal) from emp;

Inserte la descripción de la imagen aquí

Conexión de mesa

Cuando necesite mostrar campos en varias tablas al mismo tiempo, puede usar una conexión de tabla para lograr dicha función. En términos de categorías, las combinaciones de tabla se dividen en combinaciones internas y combinaciones externas. La principal diferencia entre ellas es que las combinaciones internas solo seleccionan registros que coinciden entre sí en las dos tablas, mientras que las combinaciones externas seleccionan otros registros no coincidentes.

Los registros en la tabla actual son los siguientes:
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
nuestro más utilizado es la conexión interna. Por ejemplo, consulte los nombres de todos los empleados y el nombre del departamento:

mysql> select ename, deptname from emp, dept where emp.deptno = dept.deptno;

Inserte la descripción de la imagen aquí
Las conexiones externas se dividen en conexiones izquierda y derecha, que se definen de la siguiente manera.

Unión izquierda: contiene todos los registros de la tabla izquierda e incluso los registros de la tabla derecha que no coinciden.
Unión derecha: contiene todos los registros de la tabla derecha e incluso los registros de la tabla izquierda que no coinciden.

Por ejemplo, para consultar todos los nombres de departamento y los nombres de empleados correspondientes en el departamento:

mysql> select ename, deptname from emp right join dept on emp.deptno = dept.deptno;

Ningún empleado en el registro emp corresponde al departamento " lw ", y los resultados se muestran de la siguiente manera:
Inserte la descripción de la imagen aquí

Subconsulta

En algunos casos, cuando se realiza una consulta, la condición requerida es el resultado de otra instrucción select. En este momento, se utiliza una subconsulta. Las palabras clave utilizadas para las subconsultas incluyen principalmente, no en, = ,! =, Existe, no existe, etc.

Todos los registros en la tabla emp actual: Registros en la
Inserte la descripción de la imagen aquí
tabla dept .:
Inserte la descripción de la imagen aquí
Por ejemplo, desde la tabla emp, se consultan todos los registros en todos los departamentos de la tabla dept .:

mysql> select * from emp where deptno in(select deptno from dept);

Inserte la descripción de la imagen aquí
Dado que el departamento donde se encuentra "llw5" no tiene registro en la tabla de departamento, no se muestra.

Las subconsultas se pueden convertir en combinaciones de tabla. Por ejemplo, la declaración anterior se puede expresar como una combinación de tabla:

mysql> select emp.* from emp ,dept where emp.deptno=dept.deptno;

Inserte la descripción de la imagen aquí

Nota: La conversión entre subconsultas y combinaciones de tablas se usa principalmente de dos maneras.
Las versiones de MySQL anteriores a 4.1 no admiten subconsultas. Debe usar combinaciones de tabla para implementar subconsultas.
Las uniones de tabla se utilizan para optimizar subconsultas en muchos casos.

Unión de registro

Después de consultar los datos de las dos tablas de acuerdo con ciertas condiciones de consulta, los resultados se combinan y se muestran juntos. En este momento, debe usar la unión y la unión de todas las palabras clave para lograr dicha función. La sintaxis específica es la siguiente:
SELECCIONAR * DESDE
UNIÓN t1 | UNION ALL
SELECT * DESDE t2
...
UNION | UNION ALL
SELECT * FROM tn;
La principal diferencia entre UNION y UNION ALL es que UNION ALL fusiona directamente los conjuntos de resultados, y UNION realiza la DISTINCIÓN de los resultados después de UNION ALL para eliminar El resultado después de la grabación repetida.

Tome el siguiente ejemplo para mostrar el conjunto de números de departamento en las tablas emp y dept:

mysql> select deptno from emp union all select deptno from dept;

Los resultados son los siguientes:
Inserte la descripción de la imagen aquí
eliminar registros duplicados:

mysql> select deptno from emp union select deptno from dept;

Los resultados son los siguientes:
Inserte la descripción de la imagen aquí

2 artículos originales publicados · Me gusta2 · Visitas 36

Supongo que te gusta

Origin blog.csdn.net/weixin_43587255/article/details/105464583
Recomendado
Clasificación