MySQL DML avanzado, búsqueda de paginación, restricciones de SQL, aprendizaje de operaciones de varias tablas

  • Se acercan los ensayos de aprendizaje de la base de datos mysql de Xiaojie, el resumen y la secuela.
  • Xiaojie es nuevo en mysql. Si hay muchas expresiones inapropiadas o puntos de vista incorrectos, espero que los lectores me puedan corregir y espero que puedan apoyar más a Xiaojie.
  • Todos aprenden y progresan juntos en un espíritu de aprendizaje mutuo y progreso común. 

El artículo anterior es maravilloso.

  • Entrando a MySQL por primera vez

Un primer vistazo a la base de datos MYSQL, uso experto de sentencias SQL e interfaz gráfica para mejorar la eficiencia

  • Se refinan los conocimientos detallados de MySQL y varias operaciones de consulta.

Comprensión del proceso de ejecución de declaraciones de la base de datos, aprendizaje del motor de almacenamiento, comprensión del juego de caracteres, además de varios tipos de datos SQL Introducción de comprensión más varios análisis de consultas de datos SQL y práctica de temas Introducción a la comprensión de varios tipos de datos SQL más varios análisis de consultas de datos SQL y práctica de temas https:// blog.csdn.net/weixin_53695360/article/details/123571592

1. ¿Qué es DML y las operaciones básicas de DML, la operación de actualización de columnas y filas de tablas?

  • Editar operaciones en columnas

#首先简单的创建一个student表为后序操作做准备
use test;
create table student (
	id int,
	name varchar(8),
	age tinyint
) engine = innodb default charset = utf8mb4;
desc student;
  • Agregar una nueva columna, formato: modificar tabla nombre de tabla agregar nuevo nombre de columna tipo de datos (longitud);
alter table student add addr varchar(20);
#新增一个addr列出来
  • Modificar el tipo de datos (longitud) de la columna, formato: modificar tabla nombre de tabla modificar nombre de columna tipo de datos modificado (longitud);
alter table student modify addr varchar(15);
#修改student表中addr列的数据类型 (长度修改)
alter table student modify addr char(20);
#修改student表中addr列的数据类型 (类型修改为char(20))
  • Modificar el nombre de la columna, formato: modificar tabla nombre de tabla cambiar nombre de columna nuevo nombre de columna nuevo nombre de columna tipo de datos (longitud);
alter table student change addr stu_addr varchar(20);
# change 相比 modify 而言功能更加强大可以修改列名字. 
# modify不可以修改列名
  • Eliminar la columna especificada, formatear: modificar el nombre de la tabla de la tabla, soltar el nombre de la columna;
alter table student drop stu_addr;
# 删除student表中的stu_addr列
  • No se recomienda utilizar las operaciones de modificación anteriores en la estructura de columnas de la tabla, porque las bases de datos de muchas empresas son muy grandes, y modificar una columna de datos no es un asunto trivial.Si la modificación no es buena, será malo si los datos se pierden.
  • Varias operaciones en filas de tablas y registros de tablas (agregar, eliminar, modificar, verificar)

insertar registro de tabla

  • Método 1, inserte en el campo especificado, el formato: inserte en el nombre de la tabla (campo 1, campo 2, ...) valores (valor 1, valor 2, ...);              Llamo a este método la inserción del campo especificado Las operaciones, los campos y las asignaciones deben estar en correspondencia uno a uno
insert into student(id, name, age) values(1000, '张三', 18);
# 向student表中插入一条id 为1000 name 为张三, age 18的记录
insert into student(id, name, age)
values(1001, '李四', 20),
(1002, '王五', 22),
(1003, '胖子', 25);
#还可以支持values后面跟上多条记录
#每条记录之间使用,隔开

  •  Método 2, inserte valores en todos los campos, formato: inserte en los valores del nombre de la tabla (valor 1, valor 2, ...);
  • Es decir, por defecto todos los campos se insertan secuencialmente, por lo que no necesitamos escribir los campos.
insert into student
values(1004, '李四他爸', 47),
(1005, '王五它妈', 40),
(1006, '胖子它老特', 20);
#可以向这样不指定任何字段,默认顺序插入所有字段

 Resumen insertar precauciones de operación:

  1. Los valores y campos deben corresponder al mismo número y tipo
  2. El tamaño de los datos del valor debe estar dentro de la longitud especificada del campo
  3. A excepción de los tipos enteros\decimales, los valores de otros tipos de campos deben estar entre comillas (se recomiendan comillas simples)
  4.  Si desea insertar un valor nulo, puede dejar el campo en blanco o insertar un valor nulo

actualizar registro de tabla

  • Formato de sintaxis: actualizar nombre de tabla establecer campo 1=valor, campo 2=valor... donde condición;     
update student set name = '胖子他爹' where id = 1005;
# 跟新student表中id = 1005这条记录的name为胖子他爹

update student set name = '我是你爸', age = 100 where id = 1005;
# 跟新student表中id = 1005这条记录的name为我是你爸, age为100

 Resumen y nuevas precauciones de operación de registros:

  1. El tipo del nombre de la columna debe ser consistente con el valor modificado
  2. El valor no puede exceder el rango de longitud del campo al modificar el valor
  3. A excepción de los tipos enteros\decimales, el valor de otros tipos de campo debe estar entre comillas

borrar registro de tabla

  • Formato de sintaxis: eliminar del nombre de la tabla donde condición;
delete from student where id = 1005;
# 从student 表中删除id=1005这条记录
delete from student where name = '胖子'
# 从student 表中删除name=胖子这条记录

Todavía es necesario practicar las operaciones de agregar, eliminar, modificar y verificar registros, porque las operaciones como modificar, eliminar y agregar registros específicos en la base de datos son bastante comunes.

2. Resolver el problema de búsqueda de paginación dejado en el artículo anterior

  •  ¿Qué es lo anterior? Creo que todos los que les gusta buscar registros o comprar no son desconocidos. Esta forma de mostrar registros es mostrar registros en páginas (búsqueda de página)
  • Formato de consulta de paginación: seleccione * del límite de nombre de tabla startRow, pageSize;
#模拟这样一个场景, 每一页5条数据
select * from student limit 0, 5;  # 第一页
select * from student limit 5, 5;  # 第二页
select * from student limit 10, 5; # 第三页
  • Lanzando una pregunta, en este momento todos sabemos la cantidad de barras de datos en cada página, y el tamaño de la página es fijo.El problema es que si determinamos el startRow?
-- 后台计算出页码、页数(页大小)
-- 分页需要的相关数据结果分析如下,
-- 注意:下列是伪代码不用于执行
int curPage = 2; -- 当前页数
int pageSize = 5; -- 每页显示数量
int startRow = (curPage - 1) * pageSize; -- 当前页, 记录开始的位置(行数)计算
  • De hecho, solo necesitamos saber el número actual de páginas (número de páginas - 1) * pageSize; para saber startRow

3. Explicación detallada de las restricciones de SQL

  • Definición de Restricciones

  • De hecho, necesito aprender sobre las restricciones. Primero, averigüemos qué son las restricciones. De hecho, es bastante simple. Las restricciones son un tipo de restricción, por lo que no puede ir más allá de este rango de control.
  • La restricción en la base de datos significa que el contenido de datos en la tabla no se puede completar aleatoriamente y debe completarse de acuerdo con los requisitos Para garantizar la integridad y seguridad de los datos

  • Restricción de CLAVE PRINCIPAL   

  • Qué es una restricción de clave principal: una restricción única que no es nula. La restricción de clave principal no es NULL e identifica de forma única un registro, casi todas las tablas deben tener dicha restricción.

Agregar restricción de clave principal

  • Método 1: al crear una tabla, en la descripción del campo, declare el campo especificado como clave principal:
  • Formato: nombre de campo tipo de datos [longitud] clave principal;
create table user_table(
	id int primary key, #添加主键约束
	name varchar(10),
	age tinyint
) engine = innodb charset = utf8mb4;
  • La restricción de clave principal identifica de forma única el registro y no puede estar vacía
insert into user_table
values(1001, '翠花', 18);
#插入第一条记录翠花是没有问题的
insert into user_table
values(1001, '王五', 20);
#插入这条记录应当是报错, 重复插入主键了
# [Err] 1062 - Duplicate entry '1001' for key 'PRIMARY'
# 重复加入1001 作为主键

  • La restricción de clave principal no puede ser nula ( diferente de la clave principal única )
insert into user_table
values(null, '大胖', 30);
# 区别唯一约束, 主键约束不可以为null
#[Err] 1048 - Column 'id' cannot be null
  • Método 2: al crear una tabla, en el área de restricción, declare el campo especificado como la clave principal
  • Forma de sintaxis:     [nombre de restricción] clave principal (lista de campos)
  • ¿Cuál es la necesidad de la apariencia? La necesidad de este método es agregar una clave principal conjunta. El uso de la clave principal conjunta específica se aplica en la tabla intermedia a continuación. Aquí primero aprendemos cómo crear
create table persons (
	pid int,
	lastname varchar(255),
	firstname varchar(255),
	address varchar(255),
	constraint persons_pk primary key(lastname, firstname) 
	#通过constraint 增添联合主键
) engine = innodb default charset = utf8mb4;
  • Piense por qué se necesita la restricción de la clave principal conjunta. La clave principal debe usarse para identificar diferentes registros. A veces se da tal situación,     necesitamos usar nombre + género para identificar diferentes objetos iguales     (desafortunadamente, hay niños y niñas llamadas Wang Yujie En este caso, solo el nombre no se puede distinguir. En este caso, la clave principal se puede combinar con otros campos para restringir la identificación)
  • Método 3: después de crear la tabla, declare el campo especificado como clave principal modificando la estructura de la tabla:
  • Formato: nombre de tabla modificable agregar [nombre de restricción] clave principal (lista de campos)
alter table user_table 
add constraint name_id_pk primary key(name, id);
# 向user_table表中增加一个name + id的联合主键

eliminar la restricción de clave principal

  • Formato: alterar el nombre de la tabla de la tabla soltar la clave principal;
alter table user_table drop primary key;
# 删除user_table表中的主键约束

Columna de incremento automático (presenta cómo se pueden separar de ella las restricciones de clave principal)

  • Por lo general, queremos que la base de datos genere automáticamente el valor del campo cada vez que se inserta un nuevo registro
  • Especialmente el campo de clave principal, si solo se usa como un registro marcado, no hay absolutamente ninguna necesidad de que establezcamos el valor.
  • Podemos usar la palabra clave auto_increment (columna de incremento automático) en la tabla, el tipo de columna de incremento automático debe ser un número entero y la columna de incremento automático debe ser la clave (generalmente para la clave principal)

Formato: nombre de campo tipo entero [longitud] [restricción] auto_incremento

create table test(
	id int primary key auto_increment,
	# 添加一个主键约束, 设置自动增长. 默认增长为1
	age tinyint,
	name varchar(20)
) engine = innodb default charset = utf8mb4;

insert into test values(null, 18, '小呼噜');
# 我们设置了主键自动递增可以不再需要传入主键字段
# 或者主键传入null 他会自动设置从1开始默认增量1

  • O cuando se inserta en, está bien no pasar nada, y nulo también se puede pasar en

  • Sin embargo, si queremos usar lo mismo que el anterior, debemos prestar atención a especificar el campo a insertar, de lo contrario, el valor predeterminado es dar tres valores. Cuando especificamos el campo de inserción, no necesitamos especificar la identificación, que    es un poco como el valor predeterminado.
  • Restricción no nula

  • Restricción NOT NULL: la columna no acepta valores NULL. Los campos deben contener siempre un valor. Esto significa que no puede insertar nuevos registros o actualizar registros sin agregar un valor al campo.

Agregar una restricción no nula

  • Formato: nombre de campo tipo de datos [longitud] NO NULO
drop table test;
create table test(
	id int primary key auto_increment,
	name varchar(10) not null,#设置非null 插入数据不能传入null
	age tinyint
) engine = innodb auto_increment = 10 default charset = utf8mb4;
# 我们还可以向这般指定auto_increment的值
insert test values(null, null, 28);
# 会出错, 第二个字段增加了not null 约束
# 传空会报错[Err] 1048 - Column 'name' cannot be null

eliminar la restricción no nula   

  • Formato: modificar tabla nombre de tabla modificar nombre de campo tipo de datos [longitud]
alter table test modify name varchar(10);
# 非常简单的方式, 直接更改数据类型的不加null约束即可
desc test;

  • restricción única

  • restricción única: el valor de la columna especificada no se puede repetir.

Aviso: 

  1. Tanto las restricciones UNIQUE como PRIMARY KEY proporcionan garantías únicas para las columnas. CLAVE PRINCIPAL es una restricción ÚNICA definida automáticamente.
  2.  Cada tabla puede tener múltiples restricciones ÚNICAS, pero cada tabla puede tener solo una restricción PRIMARY KEY.
  3.  UNIQUE no limita el número de ocurrencias de valores nulos

añadir restricción única

  • De la misma manera que se agrega la clave primaria, hay 3 tipos, aquí daré algunos ejemplos
drop table test;
create table test (
	id int unique,	# 添加一个唯一约束
	name varchar(20) not null,
	age tinyint
) engine = innodb default charset = utf8mb4;
desc test;
insert into test values(null, '张三', 19);
# 允许传入null  区别primary key
insert into test 
values(1, '李四', 30),
(1, '王五', 38);  
#报错[Err] 1062 - Duplicate entry '1' for key 'id'

  • Formato 2: [nombre de la restricción] ÚNICO (campo) corresponde a la clave principal Modo 2
  • Formato 3: ALTER TABLE nombre de tabla ADD [CONSTRAINT nombre] UNIQUE (campo) Método de comparación 3

Elimine la restricción única de la misma manera que acaba de eliminar la restricción de clave principal

  • restricciones por defecto

  • restricción predeterminada: se utiliza para especificar el valor predeterminado del campo. Al insertar un registro en la tabla, si el campo no está asignado explícitamente, el valor predeterminado se asigna automáticamente
  • Agregue una restricción predeterminada y agregue el formato al crear la tabla: nombre de campo tipo de datos [longitud] valor predeterminado DEFAULT
CREATE TABLE persons (
 pid INT,
 lastname VARCHAR(255),
 firstname VARCHAR(255),
 address VARCHAR(255) DEFAULT '香港' -- 添加默认约束
)engine = innodb default charset = utf8mb4;
# 传入null 则会按照default 赋值
insert into persons(pid, lastname, firstname) 
values(2, '德华', '刘');
# 或者指定字段, default字段可以不用传入val

4. Operación de múltiples mesas

  • Originalmente, planeé incluir la operación de mesas múltiples en una sola vez y tratarla de manera uniforme, pero descubrí que la operación de mesas múltiples parece ser bastante problemática, y Xiaojie no pudo resolverlo por un tiempo, por lo que Xiaojie lo hará. continúe en el próximo capítulo         (gracias a todos por el apoyo de Xiaojie, ja)

5. Resumen de este artículo

  • Acerca de la operación de columna de la tabla (agregar, eliminar, modificar, verificar) al comienzo de la palabra clave alter, seguida de agregar, modificar, cambiar, soltar

modificar tabla nombre de tabla agregar columna tipo de nombre (longitud) agregar una nueva columna

alterar tabla nombre de tabla modificar nombre de columna tipo antiguo tipo nuevo solo hacer modificación de tipo para una columna

modificar tabla cambio de nombre de tabla nombre de columna antiguo nombre de columna nuevo tipo antiguo tipo nuevo puede hacer modificación de tipo + lista para una columna

modificar tabla nombre de tabla quitar nombre de columna; eliminar operación para una columna

  • Grabación de operaciones en tablas ( añadir, borrar, modificar, comprobar )

insertar en el nombre de la tabla (especificar campo) valores (especificar valor), (especificar valor); especificar insertar valor de campo (insertar registro)

insertar en los valores del nombre de la tabla (todos los campos se escriben en orden); insertar valores de campo de acuerdo con el orden de los campos de la tabla

Actualizar campo de conjunto de nombre de tabla = valor donde la condición especifica registro de cambio de registro

eliminar del nombre de la tabla donde la condición especifica los registros eliminar los registros que cumplen las condiciones de la tabla especificada

  • Aprender acerca de varias restricciones

Una restricción es una restricción.

Restricción de clave principal (equivalente a una combinación de restricción única + restricción no nula), utilizada para identificar registros de forma única en la tabla

La restricción única también se mantiene no repetible, el valor del campo de columna es único, pero se permite nulo

Restricción no nula, es decir, nulo no está permitido y nulo no se puede pasar como parámetro

Restricción predeterminada, si se pasa nulo, el valor del campo predeterminado es el valor predeterminado inicial

Amigos, aunque las cosas presentadas hoy no son difíciles, necesitamos dominar las cosas simples en detalle. Si es posible, debemos hacer todo lo posible para probarlas. Les deseo éxito en sus estudios, promoción laboral y aumento de salario.

Supongo que te gusta

Origin blog.csdn.net/weixin_53695360/article/details/123711464
Recomendado
Clasificación