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