Database

A database is simply a repository for data. By convention, database refers to the actual structure of data, while Data-Base Management System (or DBMS) refers to the software that oversees one or more databases and provides access to them.

The use of databases is ubiquitous in business, and many personal projects rely on databases of some kind. Almost all interactive Web sites rely on some sort of database, because of Security issues with a Web server writing to the file system directly.

Data models
Databases can be divided into categories based on the data model they use to store the actual data. The common models are: Most databases use the relational model and are usually referred to as RDBMS. Then there is also the object-relational type, which extends the relational module by allowing new data types to be defined by the user.
 * Hierarchical
 * Network
 * Relational
 * Object based

Query languages
Query languages are used for retrieving data from a databases. But they usually do more then only query, they often also allow things like data definition and input.

The most commonly used is SQL, which was designed to query databases that use the relational model. But with the newer versions of the SQL standard (SQL3 a.k.a. SQL:1999) also added support for more object-oriented features. Most databases also allow the SQL language to be extended with help of some other programming language. There are specific language for SQL like Oracle's PL/SQL. But extending with common languages like Java,Perl,Python,C,etc. is also often supported by databases.

Other query languages include the XML based XQuery and XQL. HQL (Hibernate Query Language), QBE (Query by example), QBC (Query by Criteria) and many more.

OODBMS don't need a specific query language, because the objects are directly accessed as objects through some API in whatever programming language is used.

APIs
There are common database independent API around for accessing databases, the main advantage for using these is that the database can easily replaced with another one that supports the API. This API acts as a middle layer between a actual DBMS driver and the application.

The most used one is ODBC, another one specific to the Java programming language is JDBC.

Free/Open source

 * Apache Derby
 * FirebirdSQL
 * Informix
 * InterBase
 * MaxDB
 * MySQL
 * PostgreSQL
 * SQLite

Commercial

 * Adabas
 * Cloudscape
 * eXtremeDB
 * IBM DB2
 * Informix
 * Ingres
 * mSQL
 * Oracle
 * Sybase ASE
 * Sybase Replication Server
 * Sybase EAServer

Free/Open source

 * db4o
 * FramerD
 * Ozone
 * Zope

Commercial

 * ObjectStore
 * Sybase IQ

Native XML

 * XDMB
 * dbXML
 * eXist
 * Xindice
 * 4suite

Misc.

 * Berkeley DB
 * Xbase

Commercial DBMS

 * DB2
 * Oracle

Free or Open Source DBMS

 * Apache Derby
 * MySQL
 * PostgreSQL
 * SQLite
 * FireBirdSQL

Database Front Ends

 * Postgresql:
 * phpPgAdmin web-based administration and access for Postgresql (very good).
 * PGAccess the original, TCL/TK GUI for postgresql.
 * pgAdmin advanced GUI for multiple platforms.
 * Navicat Commercial -- unknown????


 * MySQL:
 * phpMyAdmin web-based administration and access for MySQL.
 * mysql - commandline tool for mysql