It is not possible, in SQLite or any other DBMS that is going to implement SQL, to have a view with the same name as a table in the same schema. This is because there is no way specified to disambiguate the names in queries or DML. Hence, that last advantage should be dropped from your list. That it was there makes me wonder (more than before) what you are doing, and what your use case is. Did you anticipate having table/view name collisions, and just want to clear them? If so, it is an illusory problem; it cannot exist. Do you have quite a number of databases, with a mix of actual populated tables in some and mere views in others, known to share a name? (It's at least conceivably useful; sometimes views are "materialized" into tables for efficiency reasons.) Setting aside any dispute as to what "ought" to happen per your 1st post, you could make a partial copy of the database(s), plucking out what you want to keep rather than trying to drop what may or may not be there in unknown or forgotten form.