To look back at the past, use the modal + have + the past participle. The past participle is the third form of the verb: regular verbs add -ed (study → studied, call → called), and irregular verbs change shape (leave → left, win → won, come → come). should have + past participle means it was the right thing, but you didn't do it (regret or a gentle telling-off).
should have + the past participle: looking back
I didn't study enough. → I should have studied more.
You didn't call. → You should have called me.
She didn't leave early. → She should have left earlier.
Not "I should studied more." — say "I should have studied more.". Looking back needs have + the past participle: should have studied, not "should studied".
Try it: Reality: she didn't book a table. Build the regret: she didn't book, and now it's full. (Leave out the word you don't need.) Answer: She should have booked a table. — Looking back uses should + have + the past participle: She should have booked a table. "Booking" is the -ing form and doesn't fit here, the pattern is have + the past participle booked.
Negatives and questions: shouldn't have, should you have?
To make it negative, put not after the modal: should not have (shouldn't have) + past participle means it was wrong that you did it. To ask a question, put the modal first: Should I have + past participle? Either way, have and the past participle never change.
You shouldn't have paid — it was free. (paying was the wrong thing)
I couldn't have known — nobody told me. (it wasn't possible)
Should I have booked a table first?
Not "You shouldn't paid for it." — say "You shouldn't have paid for it.". Even in the negative, keep have + the past participle: shouldn't have paid, not "shouldn't paid".
Try it: It was free, but your friend paid. Tell them they did the wrong thing. (You shouldn't have paid. / You shouldn't paid. / You shouldn't have pay.) Answer: You shouldn't have paid. — The negative keeps have + the past participle: You shouldn't have paid. "Shouldn't paid" drops have, and "shouldn't have pay" uses the base verb instead of the past participle paid.
It's have, never 'of'
It always sounds like "should of", but it is always written have: should have, could have, would have.
could of helped → I could have helped you.
should of called → You should have called.
would of come → I would have come.
Try it: I ___ helped you carry those, if you'd asked. (could have / could of / could had) Answer: could have — It's always have, even though it sounds like "of": could have helped. "Could of" is the sound written wrongly, and "could had" mixes up the words, it's could have + the past participle.
should have vs could have: regret or missed chance?
Both look back at the past, but they mean different things. should have + past participle = the right thing you failed to do — you blame yourself or someone (regret). could have + past participle = something that was possible, that you were able to do, but didn't — a missed chance, with no blame. Choose by asking: is it blame (should) or a lost possibility (could)?
Regret: I should have saved money. (saving was the right thing; I didn't)
Missed chance: I could have saved money. (I had the chance; I didn't take it)
You should have told me — I'm upset. vs You could have told me — it was possible.
Not "We should have won the match. (we just missed the chance)" — say "We could have won the match. (we just missed the chance)". A missed possibility uses could have; should have would add blame — the right thing you ought to have done.
Try it: You had the ability to win but didn't take your chances. Which fits a missed possibility (not a telling-off)? (We could have won. / We should have won. / We could win.) Answer: We could have won. — A missed possibility you were capable of uses could have + the past participle: We could have won. "Should have won" sounds like blame (you ought to have), and "could win" points to now or the future, not the past that's over.