Eliminar todas las filas de la tabla en PostgreSQL
-
Eliminar todas las filas usando el comando
TRUNCATE
en PostgreSQL -
Eliminar todas las filas usando el comando
DELETE
en PostgreSQL -
Eliminar todas las filas en PostgreSQL usando
pgAdmin
- Eliminar todas las filas de una tabla referenciada 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:
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:
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:
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:
Haga clic en la opción 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í:
Haga clic en la opción Truncar
. De entre las opciones disponibles, pulsa de nuevo en 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.
Desde allí, seleccione la opción Truncar
. Enumerará lo siguiente:
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.
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