Differece between "env" and "set" command

Hi,
Please clarify what is the difference between "env" and "set" command.
I guess set will display the system variables and user defined variables.

Thanks
Sweta

"set" gives both environment and shell variables. "env" only gives
environment variables, which are passed along to child processes.