It sounds like the systemd boot target is set to multi-user.target, which basically means a normally running system but without a graphical desktop.
You can check if that’s the case by running:
systemctl get-default
To change the default boot target to graphical.target so your Pi always starts a graphical desktop type the following:
sudo systemctl set-default graphical.target
If you just want to temporarily start a graphical session you do so like this:
sudo systemctl isolate graphical.target
Should you ever want to switch back to just a terminal rather than a desktop at boot just type this:
sudo systemctl set-default multi-user.target
Just bear in mind switching from a graphical to non-graphical target using systemctl isolate will close whatever desktop programs you’re running and log you out, so be sure to save your work before hand.
Also, keep in mind that if other people are around that switching from the non-graphical multi-user.target to graphical.target using systemctl isolate doesn’t log you out of the virtual terminal you typed that in from, so they could (if they know how) flick back to the virtual terminal you started the graphical desktop from and have access to your user account.