This is only true when your app is the only thing that is using the database. In enterprise environments, databases are frequently shared between many different apps.
Sure, and in those cases you'd typically have a dedicated repository storing said schema and migrations.
It's important to manage your schema in code for various reasons from change control to standing up development databases, etc.