Explicación detallada de las tres declaraciones en la base de datos SQL: DROP, TRUNCATE, DELETE

Este artículo se comparte desde Huawei Cloud Community " GaussDB Database SQL Series-DROP & TRUNCATE & DELETE ", autor: Gauss Squirrel Club Assistant 2.

I. Introducción

En la base de datos, SQL, como lenguaje de programación de bases de datos de uso común, juega un papel vital. SQL no solo se puede utilizar para crear, modificar y consultar bases de datos, sino que también puede eliminar datos mediante declaraciones como DROP, DELETE y TRUNCATE. Estas declaraciones son los comandos más utilizados en el lenguaje SQL y tienen diferentes significados y escenarios de uso.

Este artículo utiliza la base de datos GaussDB como plataforma para presentar en detalle el significado, los escenarios de uso y las precauciones de declaraciones como DROP, TRUNCATE y DELETE en SQL, ayudando a los lectores a comprender y dominar mejor estos comandos de operación de bases de datos de uso común.

2. Breve descripción de DROP & TRUNCATE & DELETE de GaussDB

1. Breve descripción

• La instrucción DROP puede eliminar la tabla completa, incluida la estructura y los datos de la tabla; 

• La instrucción TRUNCATE puede eliminar rápidamente todos los datos de la tabla, pero no elimina la estructura de la tabla. 

• La sentencia DELETE puede eliminar datos de la tabla, excluyendo la estructura de la tabla; 

2. Comparación de comandos

Categoría

GOTA

TRUNCAR

BORRAR

tipo SQL

DDL

DDL

DML

Eliminar contenido

Elimine todos los datos de la tabla, incluida la estructura de la tabla, índices, permisos, etc.

Eliminar todos los datos de la tabla o los datos de una partición especificada

Eliminar todos o parte de los datos (+condición) de una tabla

Velocidad de ejecución

lo más rápido

velocidad media

el más lento

Consejo: En la base de datos GaussDB, DROP es uno de los comandos utilizados para definir o modificar objetos en la base de datos. Los objetos incluyen principalmente: bibliotecas, esquemas, espacios de tablas, tablas, índices, vistas, procedimientos almacenados, funciones, claves de cifrado, etc. Esta vez solo nos centramos en operaciones en tablas.

3. Comando DROP TABLE de GaussDB y ejemplos

1. Descripción de la función

La función de DROP TABLE es eliminar una tabla existente.

2. gramática

DROP TABLE [SI EXISTE] [db_name.]table_name;

Nota: Agregar [SI EXISTE] a SQL puede evitar errores de ejecución causados ​​por la tabla que no existe.

Parámetros: db_name: nombre de la base de datos. Si no se especifica, se seleccionará la base de datos actual. table_name: el nombre de la tabla que se va a eliminar.

3. Ejemplo

El siguiente ejemplo demuestra el uso del comando DROP y ejecuta las siguientes declaraciones SQL en secuencia:

--Eliminar toda la tabla curso 

DROP TABLE IF EXISTS curso 

--Crear tabla de cursos 

CREAR TABLA curso(cid VARCHAR(10),cname VARCHAR(10),teid VARCHAR(10)); --Inicializar 

datos 

INSERT INTO curso VALUES(' 01 ', 'Chino', '02'); 

INSERTAR EN VALORES del curso('02', 'Matemáticas', '01'); 

INSERTAR EN VALORES del curso('03', 'Inglés', '03'); 

-- 3 registros 

SELECT count(1) FROM curso; 

--Eliminar toda la tabla 

DROP TABLE IF EXISTS curso 

--Ver los resultados, la tabla no existe (la estructura de la tabla y los datos no existen) 

SELECT count(1) FROM curso;

1) DROP TABLE, indicando que la tabla no existe

cke_120.png

2) Crear e inicializar una tabla de experimentos.

cke_121.png

3) DROP TABLE se ejecutó con éxito

cke_122.png

4) Ver resultados de ejecución

cke_123.png

4. Comando TRUNCATE y ejemplos de GaussDB

1. Descripción de la función

Elimine todos los datos de una tabla o partición de tabla, TRUNCATE elimina rápidamente todas las filas de la tabla. Tiene el mismo efecto que realizar un DELETE incondicional en la tabla de destino, pero debido a que TRUNCATE no realiza un escaneo de la tabla, es mucho más rápido y utiliza menos recursos del sistema y del registro de transacciones. El efecto de la operación es más evidente en mesas grandes.

TRUNCATE TABLE elimina todas las filas de la tabla, pero deja sin cambios la estructura de la tabla con sus columnas, restricciones, índices, etc. El recuento utilizado para identificar nuevas filas se restablece a la semilla de esa columna.

2. gramática

TRUNCAR [TABLA] nombre_tabla;

o

ALTERAR TABLA [SI EXISTE] nombre_tabla TRUNCAR PARTICIÓN { nombre_partición | PARA (valor_partición [, ...]) }

Parámetros: nombre_tabla: el nombre de la tabla cuyos datos deben eliminarse. nombre_partición: el nombre de la partición de la tabla de particiones que debe eliminarse. valor_partición: el valor de partición de la tabla de particiones que debe eliminarse.

3. Ejemplo 1

El siguiente ejemplo demuestra el uso del comando TRUNCATE:

--Crear tabla de curso 

DROP TABLE IF EXISTS curso; 

CREAR TABLA curso(cid VARCHAR(10),cname VARCHAR(10),teid VARCHAR(10)); 

--Inicializar datos 

INSERT INTO curso VALUES('01', 'Chino' , '02'); 

INSERTAR EN VALORES del curso('02', 'Matemáticas', '01'); 

INSERTAR EN VALORES del curso('03', 'Inglés', '03'); 

--3 registros 

SELECCIONAR recuento (1 ) DEL curso; 

--Borrar la tabla 

TRUNCAR TABLA curso; 

--o 

TRUNCAR curso; 

--0 registros 

SELECCIONAR recuento(1) DEL curso;

1) Cree una tabla de experimentos e inicialice los datos.

cke_124.png

2) TRUNCATE TABLE se ejecuta con éxito

cke_125.png

3) Ver resultados de ejecución

cke_126.png

4. Ejemplo 2

El siguiente ejemplo demuestra el comando TRUNCATE para eliminar datos de la tabla de particiones.

--创建列表分区(LIST)

DROP TABLE SI EXISTE pedidos; 

CREAR TABLA pedidos ( 

id INT CLAVE PRIMARIA, 

id_cliente INT, 

fecha_pedido FECHA, 

id_producto INT, 

cantidad INT 

) PARTICIÓN POR LISTA (id_cliente) ( 

VALORES PARTICIÓN p1 (100), 

VALORES PARTICIÓN p2 (200), 

VALORES PARTICIÓN p3 (300), 

PARTICIÓN p4 VALORES (400), 

PARTICIÓN p5 VALORES (500) 

); 

--插入测试数据

INSERT INTO pedidos(id,customer_id,order_date,product_id,cantidad)VALUES(1001,100,date'20230822',1,10); 

INSERTAR EN pedidos (id, id_cliente, fecha_pedido, id_producto, cantidad)VALUES(1002,100,fecha'20230822',2,20); 

INSERTAR EN pedidos (id, id_cliente, fecha_pedido, id_producto, cantidad)VALUES(1003,100,fecha'20230822',3,30); 

INSERTAR EN pedidos (id, id_cliente, fecha_pedido, id_producto, cantidad)VALUES(1004,200,fecha'20230822',4,40); 

--查看分区p1、p2的数据

SELECT * FROM pedidos DONDE customer_id IN (100,200); 

--或

--根据分区名称查询

SELECT * FROM pedidos PARTICIÓN(p2); 

--清空分区p1。

ALTERAR TABLA ordenes TRUNCAR PARTICIÓN p1; 

--或者

--清空分区p2=200。

ALTER TABLE ordena TRUNCAR PARTICIÓN para (200); 

--查看分区p1、p2的数据

SELECT * FROM pedidos DONDE customer_id IN (100,200);

1) Cree una tabla de experimentos e inicialícela

cke_127.png

2) Eliminar datos según la partición

cke_128.png

5. Comando DELETE de GaussDB y ejemplos

1. Descripción de la función

Elimine filas que cumplan la cláusula WHERE de la tabla especificada. Si la cláusula WHERE no existe, se eliminarán todas las filas de la tabla, dejando solo la estructura de la tabla.

2. Cosas a tener en cuenta

• LIMIT no se admite en declaraciones DELETE. Se debe utilizar una condición WHERE para especificar la fila de destino que debe actualizarse.

• No se admite la eliminación de varias tablas en una única instrucción SQL.

• La sentencia DELETE debe tener una cláusula WHERE para evitar un escaneo completo de la tabla.

• Está prohibido utilizar cláusulas ORDER BY y GROUP BY en la declaración DELETE para evitar clasificaciones innecesarias.

• Si necesita borrar una tabla, se recomienda utilizar TRUNCATE en lugar de DELETE.

• TRUNCATE creará un nuevo archivo físico y eliminará físicamente el archivo original al final de la transacción para liberar espacio en el disco. DELETE marcará los datos en la tabla y el espacio en disco no se borrará realmente hasta la etapa VACCUUM FULL.

• BORRAR una tabla con una clave primaria o índice. La condición WHERE debe combinarse con la clave primaria o índice para mejorar la eficiencia de la ejecución.

• La instrucción DELETE elimina una fila a la vez y registra una entrada en el registro de transacciones por cada fila eliminada.

• Si desea conservar el valor del recuento de ID, utilice ELIMINAR en su lugar.

3. Gramática

ELIMINAR DE nombre_tabla [DÓNDE condición];

Parámetros: nombre_tabla: el nombre de la tabla cuyos datos deben eliminarse. condición: se utiliza para determinar qué filas deben eliminarse.

4. Ejemplo

Reutilice la tabla de experimentos anterior:

1) Eliminar todos los datos con customer_id <200 en la tabla de pedidos:

ELIMINAR DE pedidos DONDE customer_id <200;

cke_129.png

6. Escenarios de aplicación

• Cuando es necesario eliminar datos en función de determinadas condiciones comerciales y el volumen y el rendimiento de los datos son controlables, puede considerar utilizar DELETE.

• TRUNCATE se puede utilizar cuando es necesario eliminar una gran cantidad de datos con alta velocidad, alta eficiencia y sin necesidad de deshacerlo.

• En el desarrollo a nivel empresarial, en realidad se realiza la eliminación lógica (los datos se "marcan para su eliminación") en lugar de la eliminación física.

• En entornos de producción reales, los datos del procesamiento empresarial (tablas de transición) generalmente se eliminan.

• En el proceso real de desarrollo y mantenimiento empresarial, se debe considerar la copia de seguridad de datos antes de utilizar los comandos DELETE, TRUNCATE o DROP.

7. Resumen

En bases de datos como GaussDB, DROP, TRUNCATE y DELETE son comandos comúnmente utilizados para eliminar datos. Sin embargo, en el uso comercial real, se deben tomar decisiones precisas en función de las diferentes necesidades. Sin embargo, no importa qué método de eliminación de datos se elija, se debe considerar la seguridad de los datos; se deben decir cosas importantes tres veces: ¡copia de seguridad ! ¡Respaldo! ¡Respaldo!

Haga clic para seguir y conocer las nuevas tecnologías de Huawei Cloud lo antes posible ~

Alibaba Cloud sufrió un grave fallo que afectó a todos los productos (ha sido restaurado). El sistema operativo ruso Aurora OS 5.0, una nueva interfaz de usuario, se presentó en Tumblr. Muchas empresas de Internet reclutaron urgentemente programadores de Hongmeng . .NET 8 es oficialmente GA, el último Versión LTS Tiempo UNIX A punto de ingresar a la era de los 1.7 mil millones (ya ingresó), Xiaomi anunció oficialmente que Xiaomi Vela es completamente de código abierto y el kernel subyacente es .NET 8 en NuttX Linux. El tamaño independiente se reduce en un 50%. FFmpeg 6.1 " Se lanza Heaviside". Microsoft lanza una nueva "aplicación para Windows"
{{o.nombre}}
{{m.nombre}}

Supongo que te gusta

Origin my.oschina.net/u/4526289/blog/10143540
Recomendado
Clasificación