Какой функционал еще можно добавить(Кроме интерфейса)?
Перестать хранить пароль в БД в открытом виде. Сохранять только хеш
Ты бы не об каких-то там функциях думал, а хотя бы о базовой оптимизации кода. Например: ты 7 раз делаешь execute и commit, это при том что функций у тебя толком то и нет. А дальше что? Сотню раз по всему коду будешь повторять одни и те же строки? Почитай про DRY. Простейший пример:class sql_wrapper:
    def __init__(self):
        self.connection = sqlite3.connect('foo.db')
        self.cursor = self.connection.cursor()

    def select(self, sql):
        return self.cursor.execute(sql)

    def execute(self, sql):
        self.cursor.execute(sql)
        self.connection.commit()
    
    def close(self):
        self.connection.close()
    

sw = sql_wrapper()

rows = sw.select('SELECT * FROM some_table')
for row in rows:
    print(row)

sw.close()
Лапша из if-else очень плохо читается и слишком разрастается, лучше каждое действие записывать отдельной функцией, а вызов совершать хотя бы так:def foo():
    print('print foo')

def bar():
    print('print bar')

commands = {
    'foo': foo, 'bar': bar
}

user_input = input().lower()
if commands.get(user_input, None) is not None:
    commands[user_input]()
Уже код будет выглядеть приятнее и более читаемый. Все команды лучше хранить в нижнем регистре и любые принимаемые данные, в том числе ввод с клавиатуры, который касается вызова команд так же переводить в нижний регистр - в будущем избавишься от проблем.
Ну и разберись с SQL, а то похоже, что куски выдраны из разных гайдов, через раз то есть то нет завершающего символа ;
Да и не только с SQL, у тебя через раз то одинарные кавычки для строк, то двойные. Приди уже к единому варианту.