A database abstraction layer, is an Application Programming Interface which unifies the communication between a computer application and databases such as MySQL or SQLite. Traditionally, all database vendors provide their own interface tailored to their products which leaves it to the application programmer to implement code for all database interfaces he would like to support. Database abstraction layers reduce the amount of work by providing a consistent API to the developer and hide the database specifics behind this interface as much as possible. There exist many abstraction layers with different interfaces in lots of programming languages.
A good example of a database abstraction layer would be ODBC. ODBC is a platform-independent implementation of a database abstraction layer. The user installs specific driver-software, through which ODBC can communicate with a database or set of databases. The user then has the ability to have programs communicate with ODBC, which then relays the results back and forth between the user programs and the database.
Another popular use for database abstraction layers are among object-oriented programming languages, in which a database can be represented through an object, whose methods and members (or the equivalent thereof in other programming languages) represent various functionalities of the database.