Uso avanzado común de la base de datos mysql

  1. Transacción
    1) La unidad de trabajo en mysql se compone de una o más sentencias sql. "Si no tiene éxito, será benevolente". O todas se ejecutan correctamente o todas fallan para garantizar la coherencia de los datos.
    2) Reversión de transacciones: si falla alguna ejecución de SQL en la transacción, ROLLBACK puede revertir la transacción, restaurar los datos al estado anterior a la ejecución de la transacción y garantizar la coherencia de los datos.
    3) Premisa: motor de almacenamiento mysql InnoDB
    4) Características de la transacción: Las declaraciones SQL de transacción
    ATOMICIDAD atómica ACID
    son indivisibles, todas tienen éxito o todas fallan.
    Coherencia CONSISTENCIA
    Independientemente de si la transacción se realiza correctamente o no, los datos siempre son coherentes.
    Aislamiento Las
    transacciones de AISLAMIENTO y las transacciones están aisladas entre sí y no se afectan entre sí. Una vez que una transacción
    DURABLITY persistente
    se envía con éxito, los cambios en los datos son persistentes y la transacción no se puede revertir.
    5)
    Compromiso de la transacción Comprometer la transacción mostrada por COMMIT.
    La confirmación implícita de la transacción DDL, DCL, etc. puede provocar la confirmación implícita de la transacción.
    6) La operación de la transacción
    BEGIN
    COMMIT
    ROLLBACK
    SAVEPOINT
    7) El modo
    de confirmación automática de la transacción La transacción en mysql se confirma automáticamente, es decir, la declaración COMMIT se agrega por defecto después de cada declaración SQL.
    Vea el modo de confirmación automática de transacciones de mysql:
SHOW VARIABLES  LIKE 'autocommit'

Modificar el modo de envío automático de mysql

SET AUTOCOMMIT=1   表示开启
SET AUTOCOMMIT=0   表示关闭

  1. Sentencia DQL SELECT para consultar los registros en la tabla
    1) Consulta simple
SELECT 字段1,字段2,....,字段n  FROM 表名  WHERE子句

Entre ellos:
Si consulta todos los campos de la tabla, puede usar el comodín * para indicar.
Se puede agregar un alias después del campo: el campo AS alias, AS se puede omitir, generalmente se omite.
El nombre de la tabla también puede usar AS para especificar el alias.

2) Utilice operadores para procesar el campo de consulta (no afecta los datos originales en la tabla)

+ - * /
SELECT ename, sal+2000 'salary',hiredate FROM emp 查询的工资每人增加2000

3) Valor NULO
null no es un valor de 0, ni es el valor máximo, ni es el valor mínimo, es un valor indeterminado.
El resultado de la participación nula en la operación aritmética sigue siendo nulo.
Si desea que nulo participe en el cálculo, puede especificar un valor predeterminado para nulo, participar en el transporte y usar COALESCE.

SELECT ename, COALESCE(sal,0)+2000  'salary',hiredate FROM emp

4) Eliminar registros duplicados DISTINCT

SELECT   DISTINCT 字段名  FROMWHERE子句
  1. Consulta difusa
    1) LIKE se utiliza para consultas difusas de campos de cadena
    2) La posición en la que aparece este símbolo se puede reemplazar por cualquier número de caracteres
WHERE ename  LIKE '王%' 查询姓王的员工

3) La posición donde aparece el símbolo debe tener un solo carácter.

WHERE ename  LIKE '王_' 比如查询全名为两个字的王姓员工(比如“王菲”)
  1. Ordenar ORDER BY
    1) Ordenar se refiere a ordenar el conjunto de resultados de la consulta de acuerdo con ciertas reglas (ascendente o descendente)
    2) ASC ascendente (predeterminado) DESC descendente
    3) Sintaxis:
ELECT子句 ORDER BY 字段 ASC/DESC

Entre ellos:
La cláusula ORDER BY debe colocarse después de la cláusula where.
Si hay un valor nulo en el campo ordenado, si está ordenado en orden ascendente, el registro del valor nulo está en la parte superior y, en orden descendente, el valor nulo está al final.
Clasificación por fecha, la fecha anterior se considera un valor pequeño y la fecha posterior se considera un valor grande.
La cadena está ordenada, ordenada según A ~ Z.
Los caracteres chinos se ordenan según el orden del diccionario. Si no tiene codificación gbk, debe utilizar la función de conversión para convertirlo.

SELECT * FROM emp ORDER BY CONVERT(ename USING gbk) DESC

También puede ordenar por varios campos

SELECT子句 ORDER BY 字段1 ASC/DESC, 字段2 ASC/DESC
  1. Limite el número de conjuntos de resultados devueltos por la consulta
    1) Escenario de aplicación: consulta de paginación
    2) Sintaxis:
SELECT子句  LIMIT  n  n表示获取结果集的前n条记录
SELECT子句   LIMIT   index, length 表示从结果集的第index处开始,取length条记录。index0表示从第一条记录。
  1. Las
    funciones potentes y fáciles de usar proporcionadas en la función mysql mejoran la consulta y el funcionamiento de los desarrolladores en la gestión de datos.

    Sintaxis: nombre de la función (lista de parámetros)

Clasificación de funciones de uso común
1) Función matemática
ABS (x) devuelve el valor absoluto de x
SQRT (x) Raíz cuadrada
PI () Pi
MOD (x, y) Encuentre el resto de x dividido por y

MOD(4.5,3)   结果是1.5

CEIL (x) devuelve el número entero más pequeño mayor o igual que x

CEIL(3)  返回3
CEIL(3.3)  返回4

Escenarios de aplicación: escenarios donde menos de 1 se calcula por 1

FLOOR (x) devuelve el número entero más grande menor o igual que x

FLOOR(3)    3
FLOOR(3.4)  3
FLOOR(-3.4)   -4

Escenario de aplicación: menos de 1 escenario descartado

ROUND (x, y) reserva y decimales y redondea al alza.

ROUND(23.55,1) 23.6
ROUND(23.55,-1)   20     -1表示保留到十位数

TRUNCATE (x, y) mantiene el lugar decimal y, el siguiente truncamiento se descarta, sin redondeo

RAND () genera números aleatorios
Escenario de aplicación:
Clasificación aleatoria: por ejemplo, se seleccionan al azar 100 preguntas de la prueba de la tabla del banco de preguntas

SELECT * FROM  题库表  ORDER BY  RAND()   LIMIT 100

POW (x, y) x elevado a y

Funcion trigonometrica

2) Función de cadena
CONCAT (str1, str2,…) Empalme de cadenas
LOWER (str) / LCASE (str) todos convertidos a letras minúsculas
UPPER (str) / UCASE (str) todos convertidos a letras mayúsculas
LEFT (str, n) / RIGHT (str, n) Devuelve la subcadena con longitud n en el lado izquierdo / derecho
TRIM (str) Elimina los espacios al principio y al final de la cadena
SUBSTRING (str, index, length)
REVERSE (str)

3) Fecha y hora
CURDATE () / CURRENT_DATE () Fecha actual
NOW () Año, mes, día, hora, minuto y segundo
actual CURRENT_TIMESTAMP ()
Marca de tiempo actual DATE_ADD (fecha de contratación, intervalo 10 DAY) Fecha de entrada más diez días
DATE_SUB
DATE_FORMAT (fecha, fmt)

SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s') FROM DUAL

4) Función de proceso
CASO
CASO valor CUANDO expresión ENTONCES resultado
ELSE resultado
FIN

CASE WHEN sal>=3000  THEN '高收入'
ELSE '低收入'
END  'level'

SI
SI (expresión 1, expresión 2, expresión 3)
Si el valor de la expresión 1 es verdadero, devuelve el valor de la expresión 2; de lo contrario, devuelve el valor de la expresión 3.

IFNULL
IFNULL (expresión 1, expresión 2)
si la expresión 1 no es nula, devuelve el valor de la expresión 1; de lo contrario, devuelve el valor de la expresión 2
NULLIF
NULLIF (expresión 1, expresión 2)
si expresión 1 = expresión Ecuación 2, luego devuelve nulo; de lo contrario, devuelve el valor de la expresión 1

5) Otras funciones
VERSION ()
USER ()
DATABASE ()

  1. Tres paradigmas
    1) El primer paradigma
    Los campos de la tabla están diseñados para ser atómicos y no pueden dividirse. (Dependiendo del escenario específico)
    2) En la segunda
    forma normal , la tabla tiene una clave primaria como identificador único y otros campos dependen de la clave primaria.
    (La segunda forma normal es dividir la tabla)
    3) La tercera forma normal
    prohíbe la dependencia transitiva A-> B-> C

  2. Comprobación conjunta de varias tablas
    1) La causa raíz de la comprobación conjunta de varias tablas: el
    diseño de la base de datos sigue tres paradigmas y los datos relevantes se almacenan en varias tablas.
    2) Producto cartesiano Producto cartesiano de
    dos tablas, tome la tabla de empleados y la tabla de departamentos como ejemplos

SELECT * FROM1,2

El significado del producto cartesiano: todas las combinaciones posibles de reclutas y departamentos de reclutamiento.
El resultado intermedio fijado en el proceso de investigación conjunta de mesa.
3)
Consulta equivalente SELECCIONAR Tabla 1. Campo 1, Tabla 1. Campo 2, Tabla 2. Campo 1, Tabla 2. Campo 2 DE Tabla 1, Tabla 2 DONDE condiciones de unión

SELECT e.empno, e.ename,d.dname,d.loc  FROM emp  e,dept d  WHERE  e.deptno=d.deptno

Condiciones de conexión para n tablas n -1
4) Conexión no equivalente
No existe un campo común entre las múltiples tablas a consultar como condición para la conexión de equivalencia
Consultar el nombre del empleado, salario y grado salarial. (No existe el mismo campo entre la tabla de información del empleado y la tabla de calificación salarial, pero el salario del empleado se puede usar para juzgar el intervalo que cumple con la calificación en la tabla de calificación salarial)
5)
Consulta de autounión Consulta de autocombinación con self (véase a sí mismo como Une dos tablas idénticas para consultar)
consulta los nombres de los empleados y sus supervisores

SELECT e1.ename '员工名',e2.ename '主管名' FROM emp e1,emp e2 WHERE e1.mgr=e2.empno
  1. SQL 99
    1) Producto cartesiano CROSS JOIN
SELECT * FROM1 CROSS JOIN2

2) Conexión natural
premisa NATURAL JOIN : las dos tablas tienen el mismo campo que la condición de conexión
SELECCIONAR campo DE la tabla 1 NATURAL JOIN tabla 2

SELECT e.ename,d.dname FROM emp e  NATURAL  JOIN dept d

Puede usar USING para especificar el campo de la condición de conexión, pero elimine NATURAL

SELECT e.ename,d.dname FROM emp e  JOIN dept d USING(deptno)

3) Cláusula ON
Al utilizar la palabra clave JOIN, puede utilizar la cláusula ON para especificar las condiciones de conexión.

4) Left join LEFT JOIN
toma la tabla del lado izquierdo de join como tabla principal y la tabla de la derecha como tabla esclava. Independientemente de si los registros de la tabla maestra pueden encontrar registros coincidentes en la tabla esclava o no, se muestran todos los registros de la tabla maestra y no hay coincidencia. El campo muestra nulo.

5) Consulta de combinación derecha RIGHT JOIN es la
misma que la consulta de combinación izquierda, con la tabla de la derecha como tabla maestra y la tabla de la izquierda como tabla esclava.

  1. La función de agrupación
    MAX () / MIN () devuelve los valores máximo y mínimo
    SUM () devuelve la suma
    AVG () devuelve el valor promedio
    COUNT () devuelve el número de registros
SELECT COUNT(*) FROM emp 查询员工的总数

Nota: la función de agrupación excluye los valores NULL

  1. DISTINCT elimina registros duplicados de resultados de consultas
SELECT DISTINCT deptno FROM emp 从员工信息表中查询部门编号
SELECT COUNT(DISTINCT deptno) FROM emp 查询员工表中有员工的部门的个数
  1. Consulta de agrupación
    1)
    Cláusula SELECT de sintaxis GROUP BY campo 1, campo n
    donde: El campo que sigue a la
    selección debe incluirse en el campo de agrupación de group by, de lo contrario no tiene sentido.
    Si la función de grupo se usa después de la selección, el campo del parámetro de la función de grupo puede no ser el campo después de groupby.
SELECT deptno,AVG(sal) FROM emp GROUP BY deptno 求员工表中的各部门的平均工资
SELECT deptno,job,AVG(sal) FROM emp GROUP BY deptno,job 求每个部门每个岗位的员工的平均工资

2) Cláusula HAVING que filtra los resultados después de agrupar

SELECT子句 FROMGROUP BY 字段 HAVING子句

La cláusula HAVING sirve para filtrar los resultados que se han dividido en grupos.
Generalmente, una función de agrupación se usa en la cláusula de tener para filtrado y juicio condicional.
Los datos después de la agrupación no se pueden filtrar por dónde. (DONDE aparece antes de GROUP BY)
3) GROUP BY usa la diferencia entre where y have en las
consultas de agrupación La instrucción select de las consultas de agrupación puede contener cláusulas where y have.
donde está antes de agrupar por, y tener es después de agrupar por.
Donde limita los datos antes de agrupar y tiene límites los datos después de agrupar.

  1. Subconsulta
    1)
    Cuando los datos de la consulta necesitan utilizar el resultado de otra consulta, se requiere una subconsulta.
    Una subconsulta se refiere a una instrucción select, y la instrucción select incrustada se denomina subconsulta o consulta interna.
    Los paréntesis se utilizan generalmente para incluir declaraciones de subconsulta.
    (Sugerencias: generalmente, primero puede tratar los paréntesis como una constante, construir el marco y luego agregar los paréntesis) Las
    subconsultas se pueden usar en la cláusula where, after from y after have.
SELECT ename,sal FROM emp WHERE sal=(SELECT MIN(sal) FROM emp) 查询最低工资的员工姓名和工资

2) Subconsulta de una sola fila El
resultado devuelto es una fila y una columna (es decir, un valor)
=! => <> = <=

3) Subconsulta de varias filas
Si el resultado de la subconsulta devuelve varias filas de
IN, es suficiente con coincidir con uno de los valores devueltos.
ANY coincide con uno de los resultados de la subconsulta.
> ANY significa mayor que el valor mínimo en el resultado
<ANY significa menor que el valor máximo en el resultado
= ANY es equivalente a IN
ALL y cualquiera de los resultados devueltos por la subconsulta
> ALL significa mayor que el valor máximo del resultado devuelto
<ALL Menos que el valor mínimo del resultado
= TODOS es igual a todos los valores, sin sentido.
Nota: Si el resultado de la subconsulta tiene un valor nulo, NOT IN no se usa

4) La subconsulta se usa después de FROM,
el resultado de la subconsulta se trata como una tabla temporal

Fuente: Formación Java de Neusoft

Supongo que te gusta

Origin blog.csdn.net/weixin_44997802/article/details/108614443
Recomendado
Clasificación