I made a rake task that expands on some of the previous answers. I use this a lot in a Vagrant+Docker setup, so I can very easily issue a single command and either create a new database or issue a migrate to the current database. I use a branched database paradigm for development. I constantly need to seed a new database or update my existing one.
In lib/tasks/db_exists.rake:
namespace :db do
  desc "Checks to see if the database exists"
  task :exists do
    begin
      Rake::Task['environment'].invoke
      ActiveRecord::Base.connection
    rescue
      exit 1
    else
      exit 0
    end
  end
end
So now I can run a simple bash command:
rake db:exists && rake db:migrate || rake db:setup
Which I have then further automated into a Makefile (trimmed for brevity):
.PHONY database
database:
        rake db:exists && rake db:migrate || rake db:setup
Translates into:
make database
For all of my local database needs.