We use "should" to give advice or state that something is a good idea in the present or future tense. We use "should have" to refer to past actions that someone did not take but would have been better if they had, such as telling the truth, not smoking, consulting a doctor, or taking an umbrella in case of rain. "Should have" expresses regret or disappointment about past decisions or missed opportunities.