Serie SQL de base de datos GaussDB: DROP & TRUNCATE & DELETE

Tabla de contenido

I. Introducción

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

1. Breve descripción del comando.

2. Comparación de comandos

3. Comando DROP TABLE de GaussDB y ejemplos

1. Descripción de la función

2. gramática

3. Ejemplos

4. Comando TRUNCATE y ejemplos de GaussDB

1. Descripción de la función

2. gramática

3. Ejemplos

4. Ejemplos

5. Comando DELETE y ejemplos de GaussDB

1. Descripción de la función

2. Asuntos que requieren atención

3. Gramática

4. Ejemplos

6. Escenarios de aplicación

7. Resumen

I. Introducción

En las bases de datos, SQL, como lenguaje de programación de bases de datos de uso común, desempeña un papel vital. SQL se puede utilizar no solo para crear, modificar y consultar bases de datos, sino también para 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 introducción de DROP & TRUNCATE & DELETE de GaussDB

1. Breve introducción

  • La declaración DROP puede eliminar la tabla completa, incluida la estructura y los datos de la tabla;
  • La declaración TRUNCATE puede eliminar rápidamente todos los datos de la tabla, pero no elimina la estructura de la tabla.
  • La declaración DELETE puede eliminar los datos de la tabla según las condiciones, pero no incluye 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 y permisos, etc.

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

Eliminar todos o algunos datos (+ condicionales) de una tabla

velocidad de ejecución

el 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 se apunta a 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 la tabla existente.

2. gramática

DROP TABLE [IF EXISTS] [db_name.]table_name;

Nota: Agregar [SI EXISTE] a SQL puede evitar errores de ejecución causados ​​por tablas no existentes.

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. Ejemplos

El siguiente ejemplo demuestra el uso del comando DROP, ejecutando las siguientes instrucciones SQL en secuencia:

--删除整个表course
DROP TABLE IF EXISTS course

--创建course表
CREATE TABLE course(cid VARCHAR(10),cname VARCHAR(10),teid VARCHAR(10));

--初始化数据
INSERT INTO course VALUES('01' , '语文' , '02');
INSERT INTO course VALUES('02' , '数学' , '01');
INSERT INTO course VALUES('03' , '英语' , '03');

--3条记录
SELECT count(1) FROM  course;

--删除整个表
DROP TABLE IF EXISTS course

--查看结果,表不存在(表结构及数据不存在)
SELECT count(1) FROM  course;

1) DROP TABLE, la tabla de mensajes no existe

2) Crear e inicializar una tabla de experimentos.

3) DROP TABLE ejecutado con éxito

 

4) Ver resultados de ejecución

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 un DELETE incondicional en la tabla de destino, pero como 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 una mesa grande.

TRUNCATE TABLE elimina todas las filas de la tabla, pero la estructura de la tabla y sus columnas, restricciones, índices, etc. permanecen sin cambios. El valor de recuento utilizado para la identificación de nuevas filas se restablece a la semilla de la columna.

2. gramática

TRUNCATE [TABLE] table_name;

o

ALTER TABLE [IF EXISTS] table_name  TRUNCATE PARTITION { partition_name | FOR (  partition_value  [, ...] ) }

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

3. Ejemplo 1

El siguiente ejemplo demuestra el uso del comando TRUNCATE:

--创建course表
DROP TABLE IF EXISTS course;
CREATE TABLE course(cid VARCHAR(10),cname VARCHAR(10),teid VARCHAR(10));

--初始化数据
INSERT INTO course VALUES('01' , '语文' , '02');
INSERT INTO course VALUES('02' , '数学' , '01');
INSERT INTO course VALUES('03' , '英语' , '03');

--3条记录
SELECT count(1) FROM  course;

--清空表
TRUNCATE TABLE course;
--或
TRUNCATE course;

--0条记录
SELECT count(1) FROM  course;

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

 2) TRUNCATE TABLE ejecutado con éxito

 3) Ver resultados de ejecución

4. Ejemplo 2

El siguiente ejemplo demuestra la eliminación de datos de la tabla de particiones del comando TRUNCATE

--创建列表分区(LIST)
DROP TABLE IF EXISTS orders;
CREATE TABLE orders (
    id INT PRIMARY KEY,
    customer_id INT,
    order_date DATE,
    product_id INT,
    quantity INT
) PARTITION BY LIST (customer_id) (
    PARTITION p1 VALUES (100),
    PARTITION p2 VALUES (200), 
    PARTITION p3 VALUES (300),
    PARTITION p4 VALUES (400),
    PARTITION p5 VALUES (500)
);

--插入测试数据
INSERT INTO orders(id,customer_id,order_date,product_id,quantity)VALUES(1001,100,date'20230822',1,10);
INSERT INTO orders(id,customer_id,order_date,product_id,quantity)VALUES(1002,100,date'20230822',2,20);
INSERT INTO orders(id,customer_id,order_date,product_id,quantity)VALUES(1003,100,date'20230822',3,30);
INSERT INTO orders(id,customer_id,order_date,product_id,quantity)VALUES(1004,200,date'20230822',4,40);

--查看分区p1、p2的数据
SELECT * FROM orders WHERE customer_id IN (100,200);
--或
--根据分区名称查询
SELECT * FROM  orders PARTITION(p2);

--清空分区p1。
ALTER TABLE orders TRUNCATE PARTITION p1;
--或者
--清空分区p2=200。
ALTER TABLE orders TRUNCATE PARTITION for (200);

--查看分区p1、p2的数据
SELECT * FROM orders WHERE customer_id IN (100,200);

1) Cree una tabla de experimentos e inicialícela

 2) Eliminar datos según la partición.

5. Comando DELETE y ejemplos de GaussDB

1. Descripción de la función

Elimina filas que satisfacen la cláusula WHERE de la tabla especificada. Si la cláusula WHERE no existe, todas las filas de la tabla se eliminarán, dejando como resultado solo la estructura de la tabla.

2. Asuntos que requieren atención

  • LIMIT no se admite en declaraciones DELETE. La condición WHERE debe usarse para especificar la fila de destino que debe actualizarse.
  • No admite la eliminación de varias tablas en una única declaración SQL.
  • Debe haber una cláusula WHERE en la declaración DELETE para evitar escaneos completos de la tabla.
  • Las cláusulas ORDER BY y GROUP BY no deben usarse en la declaración DELETE para evitar una clasificación innecesaria.
  • 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 en realidad no limpiará el espacio en disco hasta la etapa VACCUUM FULL.
  • Cuando DELETE tiene una tabla con una clave o índice principal, la condición WHERE debe combinarse con la clave o índice principal para mejorar la eficiencia de la ejecución.
  • La declaració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 identidad, utilice ELIMINAR en su lugar.

3. Gramática

DELETE FROM table_name [WHERE condition];

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

4. Ejemplos

Reutilice la tabla de experimentos anterior:

DELETE FROM orders WHERE  customer_id <200;

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

6. Escenarios de aplicación

  • Cuando necesite eliminar datos de acuerdo con determinadas condiciones comerciales y el volumen y el rendimiento de los datos sean controlables, puede considerar utilizar DELETE.
  • TRUNCATE se puede utilizar cuando es necesario eliminar grandes lotes de datos y se requiere velocidad rápida, alta eficiencia y no es necesario deshacer.
  • En el desarrollo a nivel empresarial, en realidad se realiza una eliminación lógica (los datos se "eliminan" y se procesan) en lugar de una eliminación física.
  • En el entorno de producción real, los datos del proceso empresarial (tabla 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 de uso común para eliminar datos. Pero en el uso comercial real, es necesario tomar decisiones precisas de acuerdo con las diferentes necesidades, pero no importa qué método de eliminación de datos se seleccione, se debe considerar la seguridad de los datos; lo importante se dice tres veces: ¡copia de seguridad ! ¡respaldo! ¡respaldo!

--Finalizar.

Supongo que te gusta

Origin blog.csdn.net/GaussDB/article/details/132487990
Recomendado
Clasificación