Desarrollo de MYSQL: cinco restricciones, crecimiento automático, eliminación y vaciado de datos de tablas, índices y vistas

Restricciones de desarrollo de MYSQL, crecimiento automático, eliminación y datos de tablas vacías, índices, vistas

1. Cinco tipos de restricciones de integridad de la base de datos

① Restricción nula (no nula) : el valor de la columna no puede ser NULL, pero puede ser una cadena vacía ''

  1. El campo permite el valor nulo de forma predeterminada. En este momento, se requiere espacio de almacenamiento adicional para registrar si el valor del campo es nulo, y si la restricción del campo no es nulo, el valor del campo no puede ser nulo, por lo que no se necesita espacio de almacenamiento adicional, por lo que la eficiencia de no nulo es mayor que nulo.
  2. La diferencia entre `` cadena vacía '' y NULL: la
    columna puede ser nula y se asignará espacio adicional para marcar cada valor NULL. Si el valor de la columna es una cadena vacía ”, entonces la cadena vacía” no ocupa espacio. Si el valor de la columna es NULL, debe registrar este valor como NULL en el espacio adicional , por lo que se requiere espacio.
    Inserte la descripción de la imagen aquí
    Inserte la descripción de la imagen aquí

②La restricción de clave principal (clave principal) : el valor de la columna es único y no puede ser NULL

create table student(id int not null primary key,name char(20),grade int);
desc student;

Inserte la descripción de la imagen aquí
③Comprobar restricciones (verificar) : controla el rango de valores insertados. Generalmente no es aplicable en mysql.
En mysql, el rango de valores de entrada es pequeño, como masculino y femenino. Puede usar el tipo de enumeración enum () para limitar. El valor de entrada tiene un rango grande, como> 0, que puede controlarse mediante un disparador. Aquí solo use tipos enumerados como ejemplos.
Inserte la descripción de la imagen aquí
La default character set utf8oración se usa aquí , es decir, usando codificación utf8. Si no se usa, se informará el siguiente error:
Inserte la descripción de la imagen aquí
Use campos enumerados después de crear la tabla:
Inserte la descripción de la imagen aquí

④ Restricción de clave extranjera (clave externa) :
Crear datos de prueba:
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
puede ver que los datos de prueba tienen una tabla emp y una tabla de departamentos. Donde emp.deptno y dept.id son ambos números de departamento.
La restricción de la clave externa también es proteger la integridad de los datos.
① Cuando se inserta un registro con un número de departamento de 30 en la tabla emp, pero la información del departamento no se puede encontrar en la tabla de departamentos, los datos están incompletos en este momento.
② Cuando se elimina el registro con id = 10 en la tabla de departamentos, el empleado con deptno = 10 en la tabla emp no puede encontrar la información del departamento correspondiente y los datos también están incompletos.

Agregar restricciones de clave externa al campo deptno en la tabla emp puede garantizar la integridad de los datos. No se permite insertar registros donde deptno no pertenece al dept en emp. Si elimina los datos en el departamento, también se eliminarán los registros correspondientes en la tabla emp.

-- 创建表后添加索引
alter table table_name
add constraint con_name 
foreign key(fk_col_name) 
references 外键表名(外键表对应字段)
[on delete cascade]   -- 级联删除
[on update cascade]   -- 级联更新
) [ENGINE=innodb];    -- 修改存储引擎为innodb

-- 创建表时添加索引
create table table_name(字段 数据类型...,
[constraint con_name]
foreign key(fk_col_name) 
references 外键表名(外键表对应字段)
[on delete cascade]
[on update cascade]
) [ENGINE=innodb];

-- mysql5.7默认存储引擎就是innodb

Agregue restricciones de clave externa después de la creación de la tabla:
Inserte la descripción de la imagen aquí
Pruebe la eliminación en cascada:
Inserte la descripción de la imagen aquí
Verifique las restricciones de clave externa de la declaración de
Inserte la descripción de la imagen aquí
creación
de la tabla : Agregue restricciones de clave externa al crear una tabla: Primero cree una tabla de clave externa y luego cree una tabla con restricciones de clave externa (tabla de referencia).
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Primero elimine la tabla de referencia y luego elimine la tabla de claves externas.
Inserte la descripción de la imagen aquí
Eliminar restricción de clave externa:
Inserte la descripción de la imagen aquí
el valor de la columna de clave externa (emp.deptno) tiene una estipulación: puede ser NULL, pero no puede estar ausente.
⑤ Restricción predeterminada (predeterminada)

-- 创建一个表,当插入的某条记录的字段grade未指定值时,为字段grade指定默认值
create table student(id int not null primary key,name char(20),grade int default 0);
INSERT INTO student(id,NAME) VALUES(1,'haha');    -- grade默认填充0
select * from student;

Inserte la descripción de la imagen aquí

2. Auto_increment de crecimiento automático

-- auto_increment所在列必须是主键列
create table student(
id int not null auto_increment primary key,
name char(20),
grade int default 0);

La ID de prueba crece automáticamente, puede ver que la ID comienza desde 1.

Inserte la descripción de la imagen aquí
Si la identificación actual máxima es 5, la siguiente identificación que aumentará automáticamente será 6. [Es decir 当前最大ID+1]
Inserte la descripción de la imagen aquí

3. eliminar 和 truncar

idCatalogado como auto_incrementcrecimiento automático. El valor actual es 6.
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
deleteLa declaración solo elimina los datos y auto_incrementel valor no restablecido es 1. Puede ver que el nuevo valor de identificación es 7.
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
truncateNo solo se borrarán los datos, sino que auto_incrementel valor se restablecerá a 1.
Inserte la descripción de la imagen aquí

4. Índice

Un índice es un archivo especial que contiene punteros de referencia a todos los registros de la tabla de datos. Se puede considerar como un directorio y el propósito es acelerar la velocidad de consulta de la base de datos .
Desventajas:
① Los índices se almacenan en archivos, demasiados índices, ocupan mucho espacio en el disco y afectarán el tiempo de ejecución de la inserción, actualización y eliminación.
② Los datos del índice deben estar sincronizados con los datos de la tabla de datos. Hay demasiados índices. Cuando se actualizan los datos de la tabla, el índice debe actualizarse simultáneamente, lo que reduce la eficiencia.

Tipo de índice:
① Índice ordinario: el valor del campo puede ser no único, es decir, puede repetirse y los valores NULL pueden acelerar la consulta.

index关键字可以与key关键字等价替换。
index [index_name](col_name)
key [key_name](col_name)

-- 创建表时建立索引
-- index [index_name](col_name)
-- index_name可以省略,此时字段名即索引名。
create table test1(id int,name char(20),index(name));
create table test1(id int,name char(20),index index_name(name));

-- 创建完表后建立索引
alter table 表名 add index index_name(col_name);

Inserte la descripción de la imagen aquí

② Índice único: el valor del campo debe ser único y solo puede aparecer una vez, pero se permiten valores NULL.

-- unique index index_name(col_name)
-- 创建表时建立索引
create table test2(id int,name char(20), unique index(id));

-- 创建完表后建立索引
alter table test2 add unique index(id);

Inserte la descripción de la imagen aquí

③ Índice de clave principal: el índice de clave principal especifica qué campo es la columna de clave principal y el valor del campo no está vacío y es único.

-- 创建表时建立索引
create table test3(id int,name char(20), primary key(id));

-- 创建完表后建立主键索引,生产环境中不推荐,在数据库设计的时候就应该指定主键列。
create table test4(id int,name char(20));
alter table test4 add primary key index_id(id);

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Verifique el índice en una tabla:
Inserte la descripción de la imagen aquí
④ Índice compuesto: El índice no solo se puede construir en una columna, sino también en dos o más columnas.Este tipo de índice se llama índice compuesto.

-- 在ip和port上创建复合主键索引
create table test5(ip char(50),port char(10),hostname char(50),primary key(ip,port));

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

⑤ Índice de texto completo: para resolver el problema del escaneo de tabla completa bajo la condición de una gran cantidad de datos, lo que causa una gran presión en la base de datos, mysql proporciona una solución, a saber, el índice de texto completo. Realiza consultas difusas no para escanear la tabla completa, sino para consultar el índice de texto completo.

-- fulltext index index_name(col_name)
-- 全文索引所在列的数据类型只能是varchar和test类型。
-- 创建表时建立索引
create table test6(id int primary key,name varchar(50),fulltext index(name));

-- 创建完表后建立索引
create table test7(id int primary key,name varchar(50));
alter table test7 add fulltext index index_name(name);

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
El índice de texto completo integrado de MySQL solo se puede utilizar para tablas de datos cuyo motor de base de datos sea MyISAM. Si es otro motor de datos, el índice de texto completo no tendrá efecto y, por lo general, se entrega a un software de terceros para la indexación de texto completo.

Resumen: El objetivo principal del índice es acelerar la velocidad de consulta, el establecimiento del índice cuando la tabla de datos no se actualiza con frecuencia y la cantidad de datos es grande, lo que puede maximizar la eficiencia de consulta de la base de datos.

Reglas para la indexación: [Puede consultar la configuración del directorio del diccionario chino]
①Limitar el número de
índices
②Crear índices para campos que se utilizan a menudo como condiciones de consulta ③Crear índices para campos que a menudo requieren operaciones de ordenación, agrupación y conjunción
④Seleccione índices únicos
⑤Haga su mejor esfuerzo Use índices con una pequeña cantidad de datos
⑥ Elimine índices que ya no se usan o que se usan con poca frecuencia
⑦ Intente usar prefijos para indexar
⑧ Las columnas de índice no pueden participar en el cálculo
⑨ Intente expandir el índice tanto como sea posible, no cree un nuevo índice.

5. Ver

Crear una vista : una vez create view view_name as select查询
creada la vista, se puede acceder a ella como a la tabla básica.
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Modificar vista: alter view view_name as select查询
Inserte la descripción de la imagen aquí
eliminar vista :drop view view_name
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_36522099/article/details/108495294
Recomendado
Clasificación