Most types of key identify the rows of a table, and a foreign key links one table to another. Each is a column or a set of columns.
A primary key uniquely identifies each row, so it is unique and never NULL, like CustomerID in Customer.
A candidate key is any minimal column or combination that could be the primary key. It is unique and not NULL, and a table can have several. The ones not chosen are alternate keys.
A super key is any set of columns that uniquely identifies a row, such as the primary key plus extra columns.
A composite key is a primary key of several columns, like (OrderID, ProductID) in OrderDetails.
A foreign key references another table's primary key to create a relationship, like CustomerID in Order. It can be NULL unless constrained.
A unique key enforces uniqueness but allows NULL. PostgreSQL allows many NULL values by default, while SQL Server allows one.
Rewriting in plainer words…
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.