vamos la
sua duvida é muito generica. tudo depende do que o software vai fazer. coisas muito simples pode ser resolvidas com SQLite ou bancos que vc pode distribuir junto do seu codigo como H2, JavaDB ou HSQLDB ( veja comparação aqui http://www.h2database.com/html/features.html#comparison )
agora talvez vc precise de um banco mais “profissional”. e isso envolve coisas que vc tem que pensar como a disponibilidade, backup, etc (mesmo se vc socar o H2 no seu codigo, vc precisa de algum tipo de Backup). um banco de dados como o mysql é uma aplicação a parte.
o seu objetivo provavelmente é fazer um software que rode local, sem acesso a internet, simples porem util. não imagino que interface vc iria utilizar ( pode usar um servidor web embedded e oferecer uma interface web, ou usar Swing ).
existem alguns instaladores que vc pode utilizar, mas eu nunca brinquei com isso:
http://java-source.net/open-source/installer-generators
talvez java web start possa te ajudar ( não se iluda com o nome ).
https://java.com/pt_BR/download/faq/java_webstart.xml