Adición, eliminación, modificación y consulta de tablas en el Capítulo 4

Adición, eliminación, modificación y consulta de tablas en el Capítulo 4

Cubrimos la creación y modificación de bibliotecas y tablas en los dos capítulos anteriores. Luego, este capítulo explica cómo insertar datos, cambiar datos, eliminar datos y consultar datos en la tabla después de crear la biblioteca y la tabla.

Uno, crear (aumentar)

Primero vamos a crear una tabla de estudiantes.
inserte la descripción de la imagen aquí
Hay tres variables en esta tabla, el número de estudiante del estudiante (id), el nombre del estudiante (nombre) y el buzón del estudiante (correo electrónico).

1. Datos de una sola fila + inserción de columna completa

(1) Gramática

insert into 表的名称 values (变量1的值,变量2的值...);

(2) Ejemplo

inserte la descripción de la imagen aquí

2. Datos de varias filas + inserción de columna completa

(1) Gramática

insert into 表的名称 values (变量1的值,变量2的值...),(变量1的值,变量2的值...),(变量1的值,变量2的值...)....;

(2) Ejemplo

inserte la descripción de la imagen aquí

3. Inserte la columna especificada

(1) Gramática

insert into 表的名称(变量1,变量2...) values (变量1的值,变量2的值...),(变量1的值,变量2的值...)...;

(2) Ejemplo

inserte la descripción de la imagen aquí

4. Actualizar los datos insertados

Cuando insertamos datos, la inserción suele fallar porque el valor correspondiente a la clave principal o la clave única ya existe. En este punto, podemos usar algunas operaciones gramaticales para permitir que nuestra inserción actualice los datos existentes.

(1) Gramática

在插入数据的语句后方加上:on duplicate key update 变量1 = 更新值1, 变量2 = 更新值2....;

(2) Ejemplo

inserte la descripción de la imagen aquí
Cuando ingresamos la declaración de inserción, si la inserción es exitosa, mysql nos dará retroalimentación, es decir Query OK, 2 rows affected (0.08 sec). Luego, las pocas filas aquí se actualizan, lo que en realidad puede indicar si nuestros datos se actualizan después de un conflicto o si se insertan directamente.

-- 0 row affected: 表中有冲突数据,但冲突数据的值和 update 的值相等
-- 1 row affected: 表中没有冲突数据,数据被插入
-- 2 row affected: 表中有冲突数据,并且数据已经被更新

5. Reemplazar datos

Hay dos categorías para discutir aquí. Si los datos que insertamos no entran en conflicto con la clave principal y la clave única, los datos se insertan directamente. Si nuestros datos insertados entran en conflicto con la clave principal y la clave única, elimine los datos originales y luego insértelos.

(1) Gramática

replace into 表的名称 (变量1,变量2...) values (变量值1,变量值2...);

(2) Contenido

inserte la descripción de la imagen aquí
en:

-- 1 row affected: 表中没有冲突数据,数据被插入
-- 2 row affected: 表中有冲突数据,删除后重新插入

Dos, Recuperar (consulta)

1, seleccione

(1) Consulta de columna completa

select * from 表的名称;

inserte la descripción de la imagen aquí

(2) Consulta de columna especificada

select 变量1,变量2... from 表的名称;

inserte la descripción de la imagen aquí

(3) Expresiones como columnas de consulta

select 变量1,变量2...表达式1,表达式2... from 表的名称;

inserte la descripción de la imagen aquí

(4) Especifique un alias para el resultado de la consulta

select 变量1 别名1,变量2 别名2...from 表的名称;

inserte la descripción de la imagen aquí

(5) Deduplicación de resultados

select distinct 变量1,变量2.... from 表的名称;

inserte la descripción de la imagen aquí

2, donde

Antes de introducir la sentencia where, vamos a crear una tabla de calificaciones e insertar algunos datos. La sentencia es la siguiente:
Crear una tabla:

create table exam_result (
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20) NOT NULL COMMENT '同学姓名',
chinese float DEFAULT 0.0 COMMENT '语文成绩',
math float DEFAULT 0.0 COMMENT '数学成绩',
english float DEFAULT 0.0 COMMENT '英语成绩'
);

Insertar datos:

insert into exam_result (name, chinese, math, english) VALUES
('唐三藏', 67, 98, 56),
('孙悟空', 87, 78, 77),
('猪悟能', 88, 98, 90),
('曹孟德', 82, 84, 67),
('刘玄德', 55, 85, 45),
('孙权', 70, 73, 78),
('宋公明', 75, 65, 30);

(1) Operador

operador de comparación

inserte la descripción de la imagen aquí

Operadores logicos

inserte la descripción de la imagen aquí

(2) donde el propósito

Where suele ir seguido de determinadas declaraciones condicionales para filtrar datos específicos que cumplen las condiciones.

(3) Gramática

select * from 表的名称 where 数据满足的条件;

(4) Ejemplos

Estudiantes que fallan en inglés y sus puntajes en inglés ( < 60 )

select * from exam_result where english < 60;

inserte la descripción de la imagen aquí

Estudiantes con puntajes de chino en [80, 90] y sus puntajes de chino

方法1:
 select * from exam_result where chinese >= 80 and chinese <= 90;
 方法2:
 select * from exam_result where chinese between 80 and 90;

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

Estudiantes cuyos puntajes de matemáticas son 58 o 59 o 98 o 99 y sus puntajes de matemáticas

方法1:
select * from exam_result where math = 58 or math = 59 or math = 98 or math = 99;
方法2:
select * from exam_result where math in (58, 59, 98, 99);

inserte la descripción de la imagen aquí

compañero de clase de apellido sol

select * from exam_result where name like '孙%';

inserte la descripción de la imagen aquí

compañero de clase sol

select * from exam_result where name like '孙_';

inserte la descripción de la imagen aquí

Estudiantes con una puntuación total de 200 o menos

select name, chinese+math+english 总分 from exam_result where chinese+math+english < 200;

inserte la descripción de la imagen aquí

consulta por NULL

Aquí se utiliza la tabla stu creada anteriormente.

select * from stu where email is not null;

inserte la descripción de la imagen aquí

select * from stu where email is null;

inserte la descripción de la imagen aquí

3. Clasificación de resultados

(1) Gramática

orden ascendente

select * from 表的名称 order by 变量名(或者表达式) asc

orden descendiente

select * from 表的名称 order by 变量名(或者表达式) desc

Si no escribimos asc o desc, mysql se establece por defecto en orden ascendente.

(2) Ejemplo

select * from exam_result order by chinese asc;

inserte la descripción de la imagen aquí

select name 姓名, chinese+math+english 总分 from exam_result order by chinese+math+english desc;

inserte la descripción de la imagen aquí

4. Filtrar resultados de paginación

(1) Gramática

  • A partir de 0, filtrar n resultados
select 语句后面加 limit n;
  • A partir de s, filtrar n resultados
select 语句后面加 limit s, n;
  • A partir de s, filtrar n resultados, que es más específico que el segundo uso, se recomienda utilizar
select 语句后面加 limit n offset s;

(2) Ejemplo

Seleccione al alumno con la puntuación total más alta.
inserte la descripción de la imagen aquí

3. Actualizar (actualizar/modificar)

1. Gramática

update 表的名称 set 变量1=更新值1,变量2=更新值2... [where...] [order by...] [limit ..]

[ ] los corchetes son opciones opcionales.

Si no filtramos los datos más tarde, la declaración actualizará los datos en toda la tabla.

2. Ejemplos

Cambie la puntuación de matemáticas de Cao Mengde a 60 puntos y la puntuación de chino a 70 puntos
inserte la descripción de la imagen aquí

Cuatro, Eliminar (eliminar)

1, eliminar

(1) Gramática

delete from 表的名称 [where...] [order by...] [limit...];

[ ] Los corchetes son opciones opcionales. Si no agregamos ninguna condición, la declaración eliminará los datos de toda la tabla.

(2) Ejemplo

Eliminar los puntajes de las pruebas de Sun Wukong
inserte la descripción de la imagen aquí

2, truncar

(1) Gramática

truncate 表的名称;

(2) La diferencia entre truncar y borrar

  • delete puede eliminar datos filtrados específicos, pero truncar solo puede eliminar toda la tabla.

  • eliminar no restablecerá el valor de auto_increment, pero truncar restablecerá auto_increment

(3) Ejemplo

Probemos el punto aquí: si restablecer auto_increment.

Antes de la prueba, primero creamos una tabla T con solo variables de identificación. De la siguiente manera:
inserte la descripción de la imagen aquí
Luego inserte varios datos:
inserte la descripción de la imagen aquí

Veamos primero la declaración de eliminación:
primero use eliminar para eliminar los datos en toda la tabla.
inserte la descripción de la imagen aquí
Luego insertamos un dato para ver cuál es el valor agregado por el sistema por defecto.
inserte la descripción de la imagen aquí
Encontramos que 4 fue insertado por defecto, no 1.
También podemos verificar el valor autocreciente mirando la declaración al crear la tabla.
inserte la descripción de la imagen aquí
4 debería haberse mostrado aquí, pero después de que lo eliminamos, insertamos otro número, por lo que se muestra 5 aquí.

Luego miramos la declaración truncada:

Vamos a crear otra tabla T2, que todavía tiene solo una identificación de variable autocreciente.
inserte la descripción de la imagen aquí
Luego eliminamos la tabla con la instrucción truncada.
inserte la descripción de la imagen aquí
Luego eliminamos esta tabla y luego insertamos datos vacíos para ver por qué el crecimiento propio asignará un valor a los datos.

inserte la descripción de la imagen aquí
En este momento, se inserta 1, lo que indica que truncar de hecho ha restablecido el atributo de crecimiento propio.

5. Insertar resultados de consulta

Podemos usar la instrucción insert para insertar datos, y también podemos usar select para consultar datos. Entonces, ¿podemos insertar los datos consultados?
La respuesta es sí.

1. Gramática

insert into 表的名称[变量1,变量2....] select ...

2. Ejemplos

Primero cree una tabla ordinaria T3.
inserte la descripción de la imagen aquí
Luego, inserte varios conjuntos de datos.
inserte la descripción de la imagen aquí
Luego insertamos 1 nuevamente.
inserte la descripción de la imagen aquí
Verifique si insertamos correctamente:
inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_72060925/article/details/131830299
Recomendado
Clasificación