Tabla de contenido
MySQL iniciando y deteniéndose
Base de datos relacional (RDBMS)
Descripción general
concepto
- Base de datos (DB): un almacén donde se almacenan los datos.
- Sistema de gestión de bases de datos (DBMS): software de gran tamaño que manipula y gestiona bases de datos
- Sistema de base de datos (DBS): es un sistema que consta de una base de datos y su software de gestión.
- SQL: un lenguaje de programación para operar bases de datos relacionales, un conjunto de estándares
MySQL iniciando y deteniéndose
puesta en marcha
inicio neto mysql80
detener
parada neta mysql80
conexión de cliente
comando cmd
mysql [-h 127.0.0.1] [-P 3306] -u raíz -p
Base de datos relacional (RDBMS)
Una base de datos basada en un modelo relacional y compuesta por múltiples tablas bidimensionales interconectadas.
Características:
- Utilice tablas para almacenar datos en un formato unificado para facilitar el mantenimiento.
- Utilizando operación en lenguaje SQL, estándares unificados y fácil de usar.
SQL
tipo de datos
Tipos numéricos: principalmente números enteros de diferentes tamaños.
Tipo de cadena: aclara principalmente la diferencia entre char (cadena de longitud fija) y varchar (cadena de longitud variable).
Tipo de fecha: FECHA de uso común. Tenga en cuenta que la fecha debe escribirse entre comillas simples:
tipo | describir | tamaño | Formato | alcance |
---|---|---|---|---|
FECHA | valor de fecha | 3 | AAAA-MM-DD | 1000-01-01 a 9999-12-31 |
DDL
Lenguaje de definición de datos | Lenguaje de definición de datos, utilizado para definir objetos de datos (bases de datos, tablas, campos) |
Operaciones de base de datos
1. Consultar todas las bases de datos: MOSTRAR BASES DE DATOS
2. Consultar la base de datos actual: SELECCIONAR BASE DE DATOS()
3. Crear: CREAR BASE DE DATOS SI NO EXISTE nombre de la base de datos DEFAULT CHARSET juego de caracteres COLLATE intercalación;
4. Eliminar: DROP DATABASE IF EXISTS nombre de la base de datos;
5. Uso: USE el nombre de la base de datos;
Operaciones de tabla
1. Consultar todas las tablas de la base de datos actual.
SHOW TABLES;
2. Estructura de la tabla de consultas
DESC 表名;
3. Consultar la declaración de creación de tabla de la tabla especificada.
SHOW CREATE TABLE 表名;
4.Crear tabla
CREATE TABLE 表名(
字段1 字段1类型[COMMENT 字段1注释],
字段2 字段2类型[COMMENT 字段2注释],
字段3 字段3类型[COMMENT 字段3注释],
......
字段n 字段n类型[COMMENT 字段n注释]
)[COMMENT 表注释];
5. Agregar campos
ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释];
6. Modificar el tipo de datos
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
7. Modificar nombres de campos y tipos de campos.
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释];
8. Eliminar campos
ALTER TABLE 表名 DROP 字段名;
9. Modificar el nombre de la tabla
ALTER TABLE 表名 RENAME TO 新表名;
10. Eliminar tabla
DROP TABLE [IF EXISTS] 表名;
11. Elimine la tabla especificada y vuelva a crear la tabla.
TRUNCATE TABLE 表名;
DML
El nombre completo en inglés de DML es Lenguaje de manipulación de datos (lenguaje de manipulación de datos), que se utiliza para agregar, eliminar y modificar registros de datos en tablas de la base de datos.
1. Agregue datos al campo especificado:
INSERT INTO 表名(字段名1,字段名2,...) VALUES(值1,值2,...);
2. Agregue datos a todos los campos:
INSERT INTO 表名 VALUES(值1,值2,...);
3. Agregue datos en lotes:
INSERT INTO 表名(字段名1,字段名2,...) VALUES(值1,值2,...),
(值1,值2,...),
(值1,值2,...),...;
INSERT INTO 表名 VALUES(值1,值2,...),(值1,值2,...),...;
4. Modificar datos:
UPDATE 表名 SET 字段名1=值1,字段名2=值2,... [WHERE 条件];
5. Eliminar datos:
DELETE FROM 表名 [WHERE 条件];
DQL
El nombre completo en inglés de DQL es Data Query Language, que es un lenguaje de consulta de datos que se utiliza para consultar registros en tablas en bases de datos.
- consulta básica
- Consulta condicional (DONDE)
- Funciones de agregación (recuento, máximo, mínimo, promedio, suma)
- Consulta de grupo (GROUP BY)
- Ordenar consulta (ORDENAR POR)
- Consulta de paginación (LÍMITE)
Mencione brevemente algunos puntos de conocimiento que son fáciles de olvidar:
1. Palabra clave para eliminar registros duplicados: distinta
SELECT DISTINCT 字段列表 FROM 表名;
2. La diferencia entre dónde y tener (palabra clave de consulta grupal)
- El tiempo de ejecución es diferente: donde se filtra antes de agrupar, si no se cumple la condición donde, no se participará en la agrupación; mientras que se filtra los resultados después de la agrupación.
- Las condiciones de juicio son diferentes: dónde no se puede juzgar la función agregada, pero si se puede.
Orden de ejecución: donde > función agregada > tener
3. En la consulta de clasificación: si se trata de una clasificación de varios campos, cuando el valor del primer campo sea el mismo, se ordenará el segundo campo.
4.Consulta de paginación:
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;
El índice inicial comienza desde 0, índice inicial = (número de página de consulta-1) * número de registros mostrados en cada página. La consulta de paginación
es un dialecto de la base de datos. Diferentes bases de datos tienen diferentes implementaciones. En MySQL, es LIMIT
si el primero Se consulta la página de datos. , el índice inicial se puede omitir, abreviado directamente como límite 10
5. Orden de escritura y orden de ejecución de declaraciones de consulta:
Orden de escritura:
SELECCIONE
la lista de campos
DE
la lista de nombres de tabla
DONDE
la lista de condiciones
GRUPO POR
lista de campos de agrupación
TENER
lista de condiciones posteriores a la agrupación
ORDENAR POR
lista de campos de clasificación
LIMITAR
parámetros de paginación-------------------------------------------------- ------------
Orden de ejecución:
DESDE
la lista de nombres de tabla
DONDE
lista de condiciones
GRUPO POR
lista de campos de agrupación
TENER
lista de condiciones posteriores a la agrupación
SELECCIONAR
lista de campos
ORDENAR POR
lista de campos de clasificación
LIMITAR
parámetros de paginación
DCL
El nombre completo en inglés de DCL es Data Control Language, que se utiliza para administrar los usuarios de la base de datos y controlar los permisos de acceso a la base de datos.
1. Consultar usuarios
USE mysql;
SELECT * FROM user;
2.Crear usuario
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
3. Modificar la contraseña del usuario
ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码';
4. Eliminar usuario
DROP USER '用户名'@'主机名';
Aviso:
- El nombre de host puede utilizar el carácter comodín '%'.
- Este tipo de desarrollador de SQL rara vez lo utiliza y lo utiliza principalmente el DBA (Administrador de bases de datos). para una breve comprensión
5. Permisos de consulta
SHOW GRANTS FOR '用户名'@'主机名';
6. Conceder permisos
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
7. Revocar permisos
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
Aviso:
- Utilice comas para separar varios permisos.
- Al autorizar, el nombre de la base de datos y el nombre de la tabla pueden tener un comodín *, que representa todos
función
Funciones de cadena
función | Función |
---|---|
CONCAT(S1,S2,...Sn) | Concatenación de cadenas, concatenar S1, S2,...Sn en una cadena |
INFERIOR(cadena) | Convertir todas las cadenas str a minúsculas |
SUPERIOR(cadena) | Convertir todas las cadenas str a mayúsculas |
LPAD(cadena,n,pad) | Relleno izquierdo, use el pad de cuerda para rellenar el lado izquierdo de str para alcanzar n longitudes de cuerda |
RPAD(cadena,n,pad) |
Relleno derecho, llene el lado derecho de str con pad de cuerda para alcanzar n longitud de cuerda |
RECORTAR(cadena) | Eliminar los espacios iniciales y finales de la cadena |
SUBCADE(cadena,inicio,len) | Devuelve una cadena de longitud len desde la posición inicial de la cadena str |
función numérica
función | Función |
---|---|
TECHO(x) | Redondeado |
PISO(x) | Redondear a la baja |
MOD(x,y) | Devuelve el módulo de x/y |
CORRIÓ() | Devuelve un número aleatorio entre 0 y 1, con decimales aleatorios y excluyendo 0 y 1. |
REDONDO(x,y) | Encuentre el valor redondeado del parámetro x, conservando y los decimales |
función de fecha
función | Función |
---|---|
FECHA ACTUAL() | Volver fecha actual |
TIEMPO CORTE() | Volver la hora actual |
AHORA() | Devuelve la fecha y hora actuales |
AÑO(fecha) | Obtener el año de la fecha especificada |
MES(fecha) | Obtener el mes de la fecha especificada |
DÍA(fecha) | Obtener la fecha de la fecha especificada |
DATE_ADD(fecha, tipo de expresión INTERVALO) | Devuelve un valor de fecha/hora más un valor de hora expr. |
DADODIFF(fecha1,fecha2) | Devuelve el número de días entre la hora de inicio fecha1 y la hora de finalización fecha2 |
función de proceso
Funciones similares al operador ternario en lenguaje C
función | Función |
---|---|
SI(valor,t,f) | Si el valor es verdadero, devuelve t; de lo contrario, devuelve f |
IFNULL(valor1,valor2) | Si el valor no está vacío, devuelve el valor1; de lo contrario, devuelve el valor2 |
CASO CUANDO [val1] ENTONCES [res1] ... ELSE [predeterminado] FINAL | Si val1 es verdadero, devuelve res1,... de lo contrario, devuelve el valor predeterminado |
CASO [expr] CUANDO [val1] ENTONCES [res1] ... ELSE [predeterminado] FINAL | Si el valor de expr es igual a val1, devuelve res1,...de lo contrario, devuelve el valor predeterminado |
restricción
- Concepto: Las restricciones son reglas que actúan sobre los campos de una tabla para limitar los datos almacenados en la tabla.
- Finalidad: Garantizar la exactitud, validez e integridad de los datos de la base de datos.
- Clasificación:
restricción | describir | Palabras clave |
---|---|---|
restricción no nula | Los datos de este campo no pueden ser NULL | NO NULO |
restricción única | Asegúrese de que todos los datos en este campo sean únicos y no duplicados. | ÚNICO |
restricciones de clave primaria | La clave principal es la identificación única de una fila de datos y debe ser única y no vacía. | CLAVE PRIMARIA |
Restricciones predeterminadas | Al guardar datos, si no se especifica el valor de este campo, se utiliza el valor predeterminado | POR DEFECTO |
Verificar restricciones (después de la versión 8.0.16) | Guardar valores de campo que cumplan una determinada condición | CONTROLAR |
restricciones de clave externa | Se utiliza para establecer una conexión entre los datos de las dos tablas para garantizar la coherencia e integridad de los datos. | CLAVE EXTERNA |
Para restricciones generales, podemos entender su uso mirando los ejemplos anteriores:
- Complete la creación del formulario según sea necesario:
Nombre del campo | Significado del campo | Tipo de campo | Restricciones | palabra clave de restricción |
---|---|---|---|---|
identificación | ID de identificación única | En t | Clave primaria y crece automáticamente. | CLAVE PRIMARIA,AUTO_INCREMENT |
nombre | Nombre | varchar(10) | No vacío y único | NO NULO, ÚNICO |
edad | edad | En t | Mayor que 0 y menor o igual a 120 | CONTROLAR |
estado | estado | carácter(1) | Si no se especifica este valor, el valor predeterminado es 1 | POR DEFECTO |
género | género | carácter(1) | ninguno |
create table user(
id int primary key auto_increment comment '主键',
name varchar(10) not null unique comment '姓名',
age int check(age > 0 and age <= 120) comment '年龄',
status char(1) default '1' comment '状态',
gender char(1) comment '性别'
) comment '用户表';
Centrarse en el uso de claves externas:
Agregar clave externa
CREATE TABLE 表名(
字段名 数据类型,
...
[CONSTRAINT] [外键名称] FOREIGN KEY (外键字段名) REFERENCES 主表 (主列表名)
);
-- 或
ALTER TABLE 表名
ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名) REFERENCE 主表 (主列表名);
Eliminar clave externa
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
Comportamiento de eliminación/actualización de clave externa
Comportamiento | ilustrar |
---|---|
SIN ACCIÓN | 当在父表中删除/更新对应记录时,首先检查记录是否有对应外键,如果有则不允许删除/更新。(与RESTRICT一致) |
RESTRICT | 当在父表中删除/更新对应记录时,首先检查记录是否有对应外键,如果有则不允许删除/更新。(与NO ACTION一致) |
CASCADE | 当在父表中删除/更新对应记录时,首先检查记录是否有对应外键,如果有,则也删除/更新外键在子表中的记录。 |
SET NULL | 当在父表中删除对应记录时,首先检查记录是否有对应外键,如果有则设置子表中该外键值为null(要求该外键允许取null) |
SET DEFAULT | 父表有变更时,子表将外键列设置成一个默认的值(Innodb不支持) |
ALTER TABLE 表名
ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名) REFERENCE 主表 (主列表名)
ON UPDATE CASCADE ON DELETE CASCADE;
多表查询
多表关系
项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本上分为三种:
- 一对多(多对一)
- 多对多
- 一对一
笛卡尔积
笛卡尔积是指在数学中,两个集合A和集合B的所有的组合情况。
例如A、B 和1、2、3、4组合,不同的组合情况就有八种:
- A 1
- A 2
- A 3
- A 4
- B 1
- B 2
- B 3
- B 4
所以,在多表查询时,需要消除无效的笛卡尔积。
内连接
隐式内连接
SELECT 字段列表 FROM 表1,表2 WHERE 条件...;
显式内连接
SELECT 字段列表 FROM 表1 [INNER] JOIN 表2 ON 连接条件 ...;
外连接
左外连接
SELECT 字段列表 FROM 表1 LEFT [OUTER] JOIN 表2 ON 条件 ...;
相当于查询表1(左表)的所有数据,包含表1和表2交集部分的数据
右外连接
SELECT 字段列表 FROM 表1 RIGHT [OUTER] JOIN 表2 ON 条件...;
相当于查询表2(右表)的所有数据,包含表1和表2交集部分的数据
自连接
SELECT 字段列表 FROM 表A 别名A JOIN 表A 别名B ON 条件...;
自连接查询,可以是内连接查询,也可以是外连接查询。
联合查询
查询语法
SELECT 字段列表 FROM 表A ...
UNION [ALL]
SELECT 字段列表 FROM 表B ...;
对于联合查询的多张表的列数必须保持一致,字段类型也需要保持一致。
union all会将全部的数据直接合并在一起,union会对合并之后的数据去重。
子查询
SQL语句中嵌套SELECT语句,称为嵌套查询,又称子查询。
SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);
子查询外部的语句可以是INSERT/UPDATE/DELETE/SELECT 的任何一个。
根据子查询的结果不同,分为:
- 标量子查询(子查询结果为单个值)
- 列子查询(子查询结果为一列)
- 行子查询(子查询结果为一行)
- Subconsulta de tabla (los resultados de la subconsulta son varias filas y columnas)
Según la posición de la subconsulta, se divide en: después de DÓNDE, después de DESDE y después de SELECCIONAR.
asuntos
Una transacción es un conjunto de operaciones, que es una unidad de trabajo indivisible. Una transacción enviará o revocará solicitudes de operación al sistema en su conjunto, es decir, estas operaciones tendrán éxito al mismo tiempo o fallarán al mismo tiempo.
1. Operaciones de transacción
START TRANSACTION; -- 开启事务
COMMIT / ROLLBACK; -- 提交/回滚事务
2. Cuatro características de los asuntos
Atomicidad, consistencia, aislamiento, durabilidad
Atomicidad
- Una transacción es una unidad de operación más pequeña e indivisible que tiene éxito en su totalidad o fracasa en su totalidad.
Cuando se ejecuta una transacción, ejecutará un conjunto de declaraciones SQL en el mismo lote. Si se produce un error en una declaración SQL, se cancelarán todas las declaraciones SQL del lote.
Consistencia
- Cuando se completa la transacción, todos los datos deben estar en un estado consistente.
Por ejemplo, una transferencia bancaria se puede dividir en dos acciones: deducir una cantidad de fondos X de la cuenta A y luego agregar una cantidad de fondos X a la cuenta B. Si se produce un error durante este proceso, toda la operación debe revertirse al estado inicial. Asegúrese de que los saldos de cuentas combinados de A y B sean consistentes con el estado inicial.
Aislamiento
- El mecanismo de aislamiento proporcionado por el sistema de base de datos garantiza que las transacciones se ejecuten en un entorno independiente que no se vea afectado por operaciones concurrentes externas.
Por ejemplo, una transacción está modificando un determinado elemento de datos y en este momento otra transacción también quiere modificar ese elemento de datos, sin embargo, debido a la existencia de aislamiento, la segunda transacción esperará a que la primera transacción complete la modificación antes de realizar modificaciones.
Durabilidad
- Una vez que una transacción se confirma o revierte, sus cambios en los datos de la base de datos son permanentes.
Una vez que se confirma una transacción, sus cambios en la base de datos deben ser permanentes (el envío de datos se guarda en el disco duro) y otras operaciones o fallas posteriores no deberían tener ningún impacto en las modificaciones de esta transacción.
3. Problemas de transacciones concurrentes
(1) Lectura sucia
Una transacción lee datos que otra transacción aún no ha confirmado.
(2) Lectura no repetible
Una transacción lee el mismo registro sucesivamente, pero los datos leídos dos veces son diferentes, lo que se denomina lectura no repetible.
(3) Lectura fantasma
Cuando una transacción consulta datos según las condiciones, no hay una fila de datos correspondiente, pero al insertar datos, se descubre que esta fila de datos ya existe, como si hubiera aparecido un "fantasma".
4. Nivel de aislamiento de transacciones
READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE(串行化)
FIN