[Enumerated (enum) data types](https://www.postgresql.org/docs/current/datatype-enum.html) are lists of valid options for a field, for example the days of the week or responses on a Likert scale. To create an enumerator use the `CREATE TYPE` command. Once created, you can use the enumerator just like any other data type when creating a table. ```SQL CREATE TYPE likert AS ENUM ('strongly agree', 'agree', 'neutral', 'disagree', 'strongly disagree'); ​ CREATE TABLE survey_results (   question INT   result likert ); ``` Enumerators are ordered sets, and so comparison operators are valid. For example, you could create an enumerator for the list of valid [[ordinal]] (i.e., ordered categorical) values and use a comparison operator to query records. ```SQL SELECT * FROM survey_results WHERE result >= 'agree' ORDER BY likert; ``` Each enumerated type is separate. The same value in two enumerators are not equivalent. Enumerators are unlike numeric and text data types, so regular numeric string operators and function won't work. Alternatives to enumerators include using a [[#check]] constraint or creating a full table for the enumerated options and relating the field through a foreign key. For this second case, consider using the value itself as the primary key, as shown below. The downside of these options is that they are not ordered in the same way an enumerator is, and so comparison operators will not work. ```SQL CREATE TABLE likert (   response TEXT PRIMARY KEY ); ​ INSERT INTO likert (response) VALUES ('strongly agree', 'agree', 'neutral', 'disagree', 'strongly disagree'); ​ CREATE TABLE survey_results (   question INT   result TEXT REFERENCES likert (response) ON UPDATE CASCADE ); ```