I was looking for this and got idea from Roland Bouman forum http://forums.mysql.com/read.php?100,48568,48737#msg-48737. Thanks Naveen for (the second query) letting me know this.
1)
select count(*) as number_of_tables from information_schema.tables
where table_schema = 'my_database_schema' and table_type = 'BASE TABLE'
2)
select TABLE_SCHEMA, TABLE_TYPE, ENGINE, count(1)
FROM information_schema.tables GROUP BY TABLE_SCHEMA, TABLE_TYPE, ENGINE;