Eliminar todas las filas de la tabla en PostgreSQL

Bilal Shahid 15 febrero 2024
  1. Eliminar todas las filas usando el comando TRUNCATE en PostgreSQL
  2. Eliminar todas las filas usando el comando DELETE en PostgreSQL
  3. Eliminar todas las filas en PostgreSQL usando pgAdmin
  4. Eliminar todas las filas de una tabla referenciada en PostgreSQL
Eliminar todas las filas de la tabla en PostgreSQL

El problema en cuestión es eliminar todas las filas, o tuplas, de una tabla pero no eliminar la tabla en sí. Esto significa que todos los datos de la tabla serán borrados y vaciados.

En PostgreSQL, hay tres formas en que se puede hacer esto. Vamos a discutir todos ellos uno por uno.

Eliminar todas las filas usando el comando TRUNCATE en PostgreSQL

El comando TRUNCATE vacía todos los datos de la tabla sin escanearla, haciéndola más rápida y adecuada para tablas más grandes. Veamos la sintaxis de borrar todas las filas usando el comando TRUNCATE.

TRUNCATE table_name;

Para ilustrar su uso, tomemos una base de datos y una tabla de muestra de la siguiente manera:

create table my_table (
id int not null,
name varchar(30) not null,
constraint pk_student primary key (id)
);

insert into my_table values (1, First), (2, Second), (3, Third);

El estado de my_table se puede mostrar usando esta declaración.

Select * from my_table;

Esto devuelve la siguiente tabla:

Postgres Eliminar todas las filas usando TRUNCATE - Salida 1

Ahora, eliminemos todas las filas insertadas ejecutando el comando TRUNCATE de la siguiente manera:

TRUNCATE my_table;

Después de ejecutar este comando, si seleccionamos todas las filas de la tabla, mostrará una tabla vacía:

Postgres Eliminar todas las filas usando TRUNCATE - Salida 2

Esto muestra que se han eliminado todas las filas de la tabla.

También podemos usar el comando TRUNCATE para vaciar o borrar varias tablas simultáneamente. La sintaxis para esto se muestra a continuación.

TRUNCATE table1, table2, , table3;

Ahora, veamos la segunda forma de eliminar todas las filas de una tabla.

Eliminar todas las filas usando el comando DELETE en PostgreSQL

El comando ELIMINAR se usa principalmente para eliminar filas específicas de una tabla que siguen alguna condición. Por ejemplo, en my_table arriba, podemos eliminar una fila en particular usando el comando DELETE como este:

DELETE FROM my_table WHERE id = 1;

No podemos especificar ninguna condición para eliminar todas las filas usando el comando ELIMINAR. El efecto de ejecutar este comando será una tabla vacía ya que se eliminarán todas las filas.

La sintaxis es la siguiente:

DELETE FROM table_name;

Usemos este comando en nuestra tabla de muestra my_table.

DELETE FROM my_table;

Después de ejecutar este comando, si enumeramos la tabla usando select * from my_table; declaración, generará una tabla vacía como esta:

Postgres Eliminar todas las filas usando DELETE - Salida

El comando DELETE es más lento que TRUNCATE porque DELETE escanea cada fila de la tabla en busca de la condición y las elimina individualmente. Por lo tanto, no se recomienda DELETE para tablas de mayor tamaño.

Eliminar todas las filas en PostgreSQL usando pgAdmin

Otra forma más de eliminar todas las filas de una tabla es usar directamente las herramientas pgAdmin para manipular la base de datos. Puede usar esto siguiendo los pasos que se explican a continuación.

En pgAdmin, abra su base de datos en el navegador del lado izquierdo, como se muestra en esta imagen:

Navegador

Haga clic en la opción Esquemas.

esquemas

En la lista desplegable, haga clic con el botón derecho en la tabla cuyas filas desea eliminar. Algunas opciones se mostrarán como se muestra aquí:

Opciones

Haga clic en la opción Truncar. De entre las opciones disponibles, pulsa de nuevo en Truncar.

Truncar

Ahora, si enumera todas las filas de la tabla, mostrará una tabla vacía, verificando que el truncamiento haya funcionado.

Eliminar todas las filas de una tabla referenciada en PostgreSQL

Si queremos eliminar todas las filas de una tabla, debemos recordar si alguna fila está referenciada en otra tabla. El efecto debe estar en cascada durante el truncamiento si algún atributo es una clave externa en otra tabla.

De lo contrario, obtendremos un error de violación de restricción de clave externa. Expliquemos esto usando un ejemplo de las siguientes dos tablas:

create table student (
id int not null,
name varchar(30) not null,
constraint pk_student primary key (id)
);

create table grades (
student_id int not null,
grade varchar(1) not null,
course varchar(30) not null,
constraint pk_grades primary key (student_id, course),
constraint fk_grades foreign key (student_id) references student(id)
);

Podemos ver que la tabla grados hace referencia a un atributo de la tabla estudiante. Ahora, llenamos estas tablas con algunos datos:

insert into student values (1, 'First'), (2, 'Second');
insert into grades values (1, A, 'Database Systems'), (1, B, 'Programming Fundamentals'), (2, B, 'Database Systems');

Para eliminar todas las filas de la tabla estudiante, también debemos eliminarlas de la tabla calificaciones porque hace referencia a la tabla estudiante. Para hacer esto, podemos usar el comando TRUNCATE en ambas tablas así:

TRUNCATE student, grades;

O bien, podemos usar la palabra clave CASCADE después de TRUNCATE de la siguiente manera:

TRUNCATE student CASCADE;

La palabra clave CASCADE también eliminará todas las filas de la tabla con referencias de clave externa a la tabla estudiante, en este caso, la tabla calificaciones.

Otra forma de hacer un truncamiento en cascada es a través de las herramientas pgAdmin. Esto se puede hacer a través de los siguientes pasos simples.

Primero, vaya al navegador de la izquierda y siga los pasos descritos anteriormente para llegar a su mesa. Ahora, haga clic derecho en la tabla; se mostrarán las siguientes opciones.

Opciones

Desde allí, seleccione la opción Truncar. Enumerará lo siguiente:

Truncar

Haga clic en Truncar cascada. Esto eliminará todas las filas de la tabla seleccionada y aquellas tablas con una referencia de clave externa.

Esto resume todas las diferentes formas de eliminar todas las filas de una tabla en PostgreSQL. Esperamos que haya aprendido el uso de los comandos DELETE y TRUNCATE para eliminar todas las filas y algunas herramientas de pgAdmin que nos permiten hacerlo.

Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

Artículo relacionado - PostgreSQL Table