Hold your horsies there Geoff, a referencial integrety constraint is not the same thing as a JOIN.
It is an internal thing. The only thing you see from a query point of view is that your query will fail if you insert the wrong value. The only diff is in where the database get's the set of 'valid' values.
MySQL get's them from a special field parameter, and PostgreSQL gets them from a seperate table.
That does mean that in PostgreSQL you can add new values with regular SQL, and more importantly, you cannot remove a value if it is still being used by the table with the constraint. Unlike MySQL where you can change the ENUM set and destroy all your data.