I need to find allocated ,consumed ,free space of mysql DATABASE(with group of tables).

On browsing i found.
date_free -gives allocated but free space of DB.
data_length + index_length - gives allocated DB size
data_length + index_length -date_free -gives actually consumed space of DB.

But after using this in query i found,
free space to be greater than the allocated space.How it is possible.

Can any1 clear me on this.