Can you explain the difference between various join types in SQL and when to use each in a production environment?