The recommended course of action is to store the email in the user.data.email field, which is not required to be unique but is still used for activities like 'forgot password' emails. Leave the user.email field blank and use user.username.
That should work. Support for user.data.email was removed in 1.26 and added back in 1.27.2, so avoid version 1.26.* and 1.27.0 and 1.27.1.
The user and registration may have a username field. The username field on the user is the one that can be used to login. In general you will want to use the Search API for those types of queries rather than directly accessing the database.
The reason is because the API is documented and stable, and the database is undocumented and may change.
@dan I was trying to use the standard register interface from fusion. If I check that I want to use "username" for example, the registration form removes the email option. To circumvent and get both email and username I had to create my own register form.