what is the difference between database drivers and database dialects?
Original question:
what is the difference between database drivers and database dialects?
The question is ambiguous; here is my take.
A driver
is a piece of software for accessing a database.
A dialect
is a variant on a query language (i.e. a protocol) used for accessing a database. Depending on the database software, it may support multiple different dialects
.
I.e. not all sql
are created equal ;-)
A database driver is a program for which implements a protocol (ODBC, JDBC) for connecting to a database. It is an Adaptor which connects a generic interface to a specific vendors implementation, just like printer drivers etc.
A database dialect is a configuration setting for platform independent software (JPA, Hibernate, etc) which allows such software to translate its generic SQL statements into vendor specific DDL, DML.
It appears that "database dialect" may be used by other types of database programs to mean something slightly different but broadly similar to what I have just written. That is, "database driver" is an acknowledged industry term with one single concrete meaning whereas "database dialect" is not similarly recognised and so refers to different concepts in different contexts.