Basically what it does is this:
You can present the user with a set of pre-defined choices, where you, the programmer, have full control over. This is foremost to prevent the user of making an invalid look-up query in most circumstances. But it is also convenience to the user to present him/her with valid/validated options. You can load these options from a database itself, but that is not strictly necessary.