# Relational Databases

> Relational Databases are the software implementation of the concepts expressed by the theory introduced by the Relational Model.

Author: [Flavio Copes](https://flaviocopes.com/about/) | Published: 2019-12-22 | Topics: [Database](https://flaviocopes.com/tags/database/) | Canonical: https://flaviocopes.com/relational-databases/

Relational Databases are the software implementation of the concepts expressed by the theory introduced by the [Relational Model](https://flaviocopes.com/relational-model/).

In a Relational [Database](https://flaviocopes.com/what-is-a-database/), data is stored in **tables**.

Each table contains one or more **columns**, that hold data of a specific **type**, like strings, numbers and so on.

The set of a table and all the rules about its columns is called a **schema**.

Each table can define **constrains** upon the data that each row can contain.

Tables can reference each other, forming relationships, using **foreign keys**.

A **Database Management System** is the software that implements the database in a computer system.

Commonly, relational databases use the **SQL language** to let us give instructions to create a database, define its tables **schema**, fill tables with data, and finally query the data when needed.

Some examples of software implementing relational databases are PostgreSQL, MySQL, SQLite, Oracle and MicroSoft SQL Server.

If you're trying to pick between the most popular ones, I built a free [Postgres vs SQLite vs MySQL comparison tool](https://flaviocopes.com/tools/postgres-sqlite-mysql/) that shows their differences side by side.
