Serie de operaciones de la base de datos: MySQL, Postgres, resumen de declaración SQL de uso común

Directorio de artículos

1. Si quiero escribir una declaración sql para actualizar si existe, o insertar nuevos datos, ¿cómo resolverlo?

Esquema de implementación de la base de datos MySQL: EN ACTUALIZACIÓN DE CLAVE DUPLICADA

En la base de datos MySQL, si la cláusula ON DUPLICATE KEY UPDATE va seguida de la declaración de inserción y la fila que se insertará
tiene un valor duplicado en el índice único o clave principal del registro existente en la tabla, entonces la actualización de la anterior Se producirá una fila; si los datos de la fila insertada
no son los mismos que el índice único o la clave principal registrada en la tabla existente, se insertará un nuevo registro.
En resumen: actualizar si existen datos, crear si no

fraseología


INSERT INTO 表名 
	(字段名1, 字段名2 ) 
VALUES 
	(字段值1, 字段值2) 
ON DUPLICATE KEY UPDATE 
	字段名1 = VALUES(字段名1), 
	字段名2 = VALUES(字段名2)

Esquema de implementación de la base de datos Postgres:

Precauciones:

  • ON CONFLICT solo está disponible desde PostgreSQL 9.5 en adelante.
  • El campo a juzgar debe tener una restricción de índice. Por ejemplo, índice único único como restricción

plano 1:

Si tenemos esta tabla de aplicaciones, ahora configure uno de los nombres de columna como único

ALTER TABLE public.applications ADD CONSTRAINT applications_un UNIQUE (name);

Luego vamos a escribir el código

de esta declaración: Cuando los datos existen, no hacer nada (NO HACER NOTAR)


const insertApp = await client.query(`INSERT INTO applications 
              (app_name, details ) 
              VALUES 
              ('${appName}', '${appDetail}') 
              ON CONFLICT ON CONSTRAINT applications_un  
              DO NOTHING;
              `);

Escenario 2:

La siguiente declaración tiene el mismo efecto, la diferencia es que se usa el campo de nombre en lugar del nombre de la restricción


INSERT INTO customers (app_name, details)
VALUES
 (
 'AAA',
 'BBBBBB'
 ) 
ON CONFLICT (name) 
DO NOTHING;

Con respecto a la actualización: ¿cómo implementar, cuando existen los datos de app_name, actualizar los detalles? ?


INSERT INTO customers (app_name, details)
VALUES
 (
 'AAA',
 'BBBBBB'
 ) 
ON CONFLICT (name) 
DO
 UPDATE
   SET email = 'CCCCCCCC';
upsert

Usando la misma variable y ejecutando esta lógica varias veces, encontraremos que solo se crea una, por lo que es exitosa ~~~

2. Consulta difusa + mayúsculas y minúsculas

Tome una castaña: consulte la información detallada y la información del nombre de usuario de la tabla de usuarios que contiene la letra 'xiaojin'

select * from users where lower(details) like '%xiaojin%' or lower(user_name) like '%xiaojin%' 

3. Consulta si un campo pertenece a uno de múltiples valores, o filtra si es igual a uno de múltiples valores

Tome una castaña: consulte el tipo de tipo de la tabla de usuarios como administrador o superadministrador

select * from users where "type" in ('Admin', 'Super Admin') 

4. Consulta de rango de tiempo

Por ejemplo: quiero consultar los datos en el campo created_at de la tabla de usuarios desde 2023-08-01 00:00:00.000 hasta 2023-08-10 00:00:00.000

select * from users where created_at between '2023-08-01 00:00:00.000' and '2023-08-10 00:00:00.000'

5. Cómo usar dbever para agregar campos por lotes y establecer el tipo en la base de datos de Postgres

1. Crear una nueva tabla


2. Abra un editor de SQL

3. Escriba declaraciones SQL, aquí hay algunas oraciones de referencia para usted

ALTER TABLE public.users ADD id serial4 NOT NULL;

ALTER TABLE public.users ADD "user_name" varchar(255) NULL;

ALTER TABLE public.users ADD description varchar(255) NULL;

ALTER TABLE public.users ADD "type" varchar(255) NULL;

ALTER TABLE public.users ADD created_at timestamp(6) NULL;

ALTER TABLE public.users ADD updated_at timestamp(6) NULL;

ALTER TABLE public.users ADD created_by varchar(255) NULL;

ALTER TABLE public.users ADD updated_by varchar(255) NULL;


4. Ejecutar declaración

5. Crear tabla con éxito


6. Algunos comandos simples de Mysql de uso común

Descartar la base de datos especificada, si existe

DROP DATABASE IF EXISTS tangdoudou;

crear nueva base de datos

CREATE DATABASE tangdoudou;

Ingrese a la base de datos tangdoudou

    USE tangdoudou;

crear mesa

CREATE TABLE student (
  sid INT, # integer 整形

  name VARCHAR(8), # variable character可变字符

  sex  VARCHAR(1), # m->男 f->女

  score INT

);

Insertar datos en la tabla

INSERT INTO student VALUES('1','tom','F','95');

Consultar todos los datos de la tabla

SELECT * FROM student;

cambiar los datos

UPDATE student SET name='lucy',score='100' WHERE sid='2';

borrar datos

DELETE FROM student WHERE sid='3';

Algunas castañas de uso común:

Descartar la base de datos especificada tangdoudou, si existe

DROP DATABASE IF EXISTS tangdoudou;

 

crear una nueva base de datos

CREATE DATABASE tangdoudou;

DROP DATABASE IF EXISTS tangdoudou;

Ingrese a la base de datos tangdoudou

USE tangdoudou;

Cree una tabla que contenga los datos de los estudiantes (número, nombre, sexo, puntuación);

DROP TABLE IF EXISTS student;

CREATE TABLE student (

  sid INT, # integer 整形

  name VARCHAR(8), # variable character可变字符

  sex  VARCHAR(1),# m->男 f->女

  score INT

);

Insertar datos en la tabla de estudiantes

INSERT INTO student VALUES('1','tom','m','85');

INSERT INTO student VALUES('2','kate','f','92');

INSERT INTO student VALUES('3','king','m','74');

Cambie el puntaje del estudiante numerado 2 a 100, y el nombre es lucy;


UPDATE student SET name='lucy' WHERE sid='2';

UPDATE student SET score='100' WHERE sid='2';

Eliminar los datos del alumno numerados 3


DELETE FROM student WHERE sid='3';

Consultar el contenido de la tabla de alumnos

SELECT * FROM student;

para ser agregado

  • Eso es todo por hoy~ Amigos, ( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ Nos vemos mañana~~
  • Todos sean felices todos los días

Todos son bienvenidos a señalar dónde se debe corregir el artículo ~
El aprendizaje es interminable, la cooperación es beneficiosa para todos.

inserte la descripción de la imagen aquí

Damos la bienvenida a los hermanitos y hermanitas que pasan para presentar mejores opiniones ~~

Supongo que te gusta

Origin blog.csdn.net/tangdou369098655/article/details/132126689
Recomendado
Clasificación