MD5 is technically not an encryption algorithm. It is a hashing algorithm.
The difference is that encryption usually allows for decryption, while hashing is non-reversible.
SHA1 (and the other SHA variants), as well as several other hashing algorithms, were developed *after* MD5 using more refined methods and longer output strings. (MD5 is 128bits, SHA1 is 160bits... Other variants are even longer.)
But they are all non-reversible, just like MD5.
There is no way to "decrypt" a hash, but using a brute-force attack you can attempt to *guess* the string used. I am not saying this is easy or quick, but relative to SHA1, MD5 is far more likely to be broken by this sort of an attack.
There is also the fact that because of how popular and widely used MD5 is, there exist huge databases that store MD5 hashes for millions of much used and randomly generated strings that can be consulted to find the input for a given hash. So breaking the hash may not even be needed.
As to the SQL Injection problem.
Hashing passwords does help up to an extent, but that doesn't necessarily mean your queries are safe from it.
You should ALWAYS sanitize user input before using it. By that I mean; running it through functions like:
mysql_real_escape_string,
htmlentities,
addslashes, etc..
And always created hashes in PHP, rather than using database functions.
Databases log queries as plain text so sensitive data may be logged without your knowledge.