2011-12-06 14 views

Respuesta

11
select sum(table_rows) as total_rows 
from information_schema.tables 
where table_schema = 'your_db_name' 

cuidado con esto es sólo un valor aproximado

Con el fin de eliminar el contenido de todas las tablas que puede hacer algo como

select concat('truncate ',table_name,';') 
from information_schema.tables 
where table_schema = 'your_db_name' 

A continuación, ejecute el resultado de esta consulta.

ACTUALIZACIÓN.

Este es un procedimiento almacenado para aplicar truncate table a todas las tablas de una base de datos específica

delimiter // 
drop procedure if exists delete_contents // 
create procedure delete_contents (in db_name varchar(100)) 
begin 
declare finish int default 0; 
declare tab varchar(100); 
declare cur_tables cursor for select table_name from information_schema.tables where table_schema = db_name and table_type = 'base table'; 
declare continue handler for not found set finish = 1; 
open cur_tables; 
my_loop:loop 
fetch cur_tables into tab; 
if finish = 1 then 
leave my_loop; 
end if; 

set @str = concat('truncate ', tab); 
prepare stmt from @str; 
execute stmt; 
deallocate prepare stmt; 
end loop; 
close cur_tables; 
end; // 
delimiter ; 

call delete_contents('your_db_name'); 
+1

ah ... gracias. La preparación stmt de @str es muy útil. – scravy

+0

Su procedimiento actualizado es muy útil. Parece que 'db_name' no afecta nada con la configuración actual (la eliminé por completo sin problema en el procedimiento). – DACrosby

+0

Agradable. Para mostrar el conteo individual de entradas en cada tabla: select table_name,table_rows from information_schema.tables where table_schema = 'your_db_name' gaoithe

0

si las tablas están relacionadas por cualquier campo puede utilizar el alias de tablas como

select count(*) from table1 tb1, table2 tb2, table3 tb3 where 
tb1.field1 = tb2.field2 and tb2.field2 = tb3.field3 

Similar,

delete from table1 tb1, table2 tb2, table3 tb3 where 
tb1.field1 = tb2.field2 and tb2.field2 = tb3.field3 

puede incluir condiciones según sus requisitos.

Si las tablas no tienen relación a continuación, utilizar a continuación

SELECT 
    (SELECT COUNT(*) FROM table1 WHERE someCondition) as count1, 
    (SELECT COUNT(*) FROM table2 WHERE someCondition) as count2, 
    (SELECT COUNT(*) FROM table3 WHERE someCondition) as count3 

puede quitar cláusula where si no hay condiciones.

SALIDA:

| COUNT1 | count2 | count3 |

| 50 | 36 | 21 |

Cuestiones relacionadas