SQL Tutorial · SQL Basics · Lesson 12 of 36
SQL History & Versions
How the relational model and SQL were invented at IBM, every SQL standard from SQL-86 to SQL:2023, the history and current versions of SQLite, PostgreSQL, MySQL and SQL Server, and how their SQL dialects differ.
How SQL started
In June 1970, Edgar F. Codd, a mathematician at IBM, published "A Relational Model of Data for Large Shared Data Banks". Instead of navigating records through pointers, as databases did then, he proposed storing data in tables (relations) and asking for it by describing what you want, not how to find it.
At IBM's San Jose lab, Donald Chamberlin and Raymond Boyce designed a language for Codd's model for the System R research project. It was called SEQUEL (Structured English Query Language) in 1974, and was renamed SQL because of a trademark conflict; many people still pronounce it "sequel". A small company that later became Oracle shipped the first commercial SQL database in 1979, before IBM's own SQL/DS (1981) and DB2 (1983).
SQL became an ANSI standard in 1986 and an ISO standard (ISO/IEC 9075) in 1987. Every major database implements the standard, but each adds its own functions and syntax, so in practice you write a dialect: SQLite, PostgreSQL, MySQL (and MariaDB), SQL Server's T-SQL, or Oracle's PL/SQL.
Timeline of the SQL standard
- SQL:2023Current
- Property graph queries (SQL/PGQ), a native JSON data type,
ANY_VALUE(),GREATEST()/LEAST(), underscores in numbers1_000_000
- Property graph queries (SQL/PGQ), a native JSON data type,
- SQL:2016Published
- JSON functions, row pattern recognition (
MATCH_RECOGNIZE),LISTAGG()
- JSON functions, row pattern recognition (
- SQL:2011Published
- Temporal tables: periods and system-versioned history
- SQL:2008Published
TRUNCATE,FETCH FIRST n ROWS ONLY,INSTEAD OFtriggers
- SQL:2003Published
- Window functions (
ROW_NUMBER() OVER (...)),MERGE, sequences and identity columns, XML
- Window functions (
- SQL:1999Published
- Recursive queries (
WITH RECURSIVE), triggers, theBOOLEANtype, user-defined types
- Recursive queries (
- SQL-92Historic
- The big expansion most databases still build on:
JOIN ... ON, outer joins,CASE, more data types
- The big expansion most databases still build on:
- SQL-89Historic
- Integrity constraints
- SQL-86Historic
- The first ANSI standard (adopted by ISO in 1987)
- SEQUELHistoric
- Chamberlin and Boyce design the language at IBM for System R
- Relational modelHistoric
- Edgar F. Codd's paper introduces tables, keys and relational algebra
Timelines of the four main databases
SQLite
Created in 2000 by D. Richard Hipp while building software for a US Navy ship, so it would work without a database server. SQLite is a small C library that stores a whole database in one file. It is in the public domain and is the most widely deployed database in the world: every phone, every major browser and countless apps contain it.
- SQLite 3.54Current
- The current 3.x release; SQLite 3 keeps its file format backward compatible
- SQLite 3.45Historic
- JSONB: a binary JSON format for faster JSON functions
- SQLite 3.37Historic
STRICTtables that enforce column types
- SQLite 3.35Historic
RETURNINGandALTER TABLE ... DROP COLUMN
- SQLite 3.25Historic
- Window functions (UPSERT with
ON CONFLICTfollowed in 3.24)
- Window functions (UPSERT with
- SQLite 3.0Historic
- The file format still used today; Unicode text and better typing
- SQLite 1.0Historic
- First release
PostgreSQL
Grew out of POSTGRES, started in 1986 by Michael Stonebraker at the University of California, Berkeley, as the successor to his Ingres database. In 1995 two students added an SQL interpreter (Postgres95), and in 1996 the project was renamed PostgreSQL. It is developed by a global open-source community and is known for standards compliance, extensibility and rich data types. A new major version ships every autumn and is supported for five years.
- PostgreSQL 18Current
- Asynchronous I/O (up to 3× faster reads), skip scan on multicolumn indexes,
uuidv7() - Virtual generated columns by default,
OLDandNEWinRETURNING, OAuth sign-in, temporal constraints
- Asynchronous I/O (up to 3× faster reads), skip scan on multicolumn indexes,
- PostgreSQL 17Supported
JSON_TABLE(),MERGE ... RETURNING, incremental backups
- PostgreSQL 16Supported
- SQL/JSON constructors such as
JSON_OBJECT(), logical replication from standbys
- SQL/JSON constructors such as
- PostgreSQL 15Supported
- The standard
MERGEcommand
- The standard
- PostgreSQL 14Supported until Nov 2026
- Multirange types and JSON subscripting
data['key']
- Multirange types and JSON subscripting
- PostgreSQL 10End of life · Nov 2022
- Declarative table partitioning and built-in logical replication; the first one-number version
- PostgreSQL 9.4Historic
- JSONB: indexable binary JSON
- PostgreSQL 6.0Historic
- The first release named PostgreSQL
MySQL
Created by Michael "Monty" Widenius, David Axmark and Allan Larsson at the Swedish company MySQL AB, and first released in 1995 (the "My" is Monty's daughter's name). Fast, easy and free, it became the "M" in the LAMP stack (Linux, Apache, MySQL, PHP) that powered the early web. Sun Microsystems bought MySQL in 2008 and Oracle acquired Sun in 2010; Monty then started the MariaDB fork, which stays largely compatible.
Since 2023, MySQL has two kinds of releases: LTS versions supported for about eight years, and short-lived
Innovation releases with new features every quarter. In July 2026 Innovation releases switched to calendar
versions (26.7 = 2026, July).
- MySQL 26.7Current
- The first Innovation release with calendar versioning; a new change stream applier for multithreaded replication
- MySQL 9.7LTS until Apr 2034
- The current LTS release, gathering the 9.x innovation features
- MySQL 9.0End of life · Oct 2024
- The
VECTORdata type; JavaScript stored programs (Enterprise Edition)
- The
- MySQL 8.4LTS until Apr 2032
- The first LTS release under the new model
- MySQL 8.0End of life · Apr 2026
- Common table expressions (
WITH), window functions, a transactional data dictionary,utf8mb4by default
- Common table expressions (
- MySQL 5.7End of life · Oct 2023
- A native
JSONdata type and JSON functions
- A native
- MySQL 5.5Historic
- InnoDB becomes the default storage engine (transactions and foreign keys by default)
- MySQL 1.0Historic
- First internal release at MySQL AB
SQL Server
Microsoft's database began in 1989 as a joint product with Sybase for OS/2, and Microsoft took over its own development in the mid-1990s. Its SQL dialect is Transact-SQL (T-SQL). Microsoft supports each version for about ten years (five years of mainstream support, then extended security support), and since 2017 SQL Server also runs on Linux.
- SQL Server 2025Current
- A native
vectortype and vector search, a nativejsontype, regular expressions (REGEXP_LIKE(),REGEXP_REPLACE(), …) - String concatenation with
||,PRODUCT(),CURRENT_DATE,BASE64_ENCODE(), optimized locking
- A native
- SQL Server 2022Supported
GREATEST()/LEAST(),GENERATE_SERIES(),DATE_BUCKET(),IS [NOT] DISTINCT FROM, ledger tables
- SQL Server 2019Security fixes until Jan 2030
- UTF-8 collations and intelligent query processing
- SQL Server 2017Security fixes until Oct 2027
- Runs on Linux;
STRING_AGG(),TRIM(),CONCAT_WS(), graph tables
- Runs on Linux;
- SQL Server 2016End of life · Jul 2026
- JSON functions, temporal tables,
STRING_SPLIT(), Query Store
- JSON functions, temporal tables,
- SQL Server 2012Historic
OFFSET ... FETCHpaging, sequences,IIF(),CONCAT(),TRY_CONVERT(),LAG()/LEAD()
- SQL Server 2005Historic
TRY ... CATCH,ROW_NUMBER()and ranking functions, common table expressions
- SQL Server 1.0Historic
- Released for OS/2 together with Sybase
How SQL modernized
- From reports to analytics. Window functions (SQL:2003) and recursive CTEs (SQL:1999) turned SQL into a powerful analytics language. They are now available in all four databases (MySQL since 8.0, SQLite since 3.25).
- Semi-structured data. JSON support (SQL:2016) and native JSON types (PostgreSQL's JSONB in 2014, MySQL 5.7 in 2015, SQL Server 2025) let one database hold relational and document data together.
- AI and vectors. MySQL 9 and SQL Server 2025 added vector types for similarity search; PostgreSQL offers it
through the popular
pgvectorextension. - Graph queries. SQL:2023 added SQL/PGQ, a standard way to query relationships as a graph.
How the dialects differ
| Task | SQLite | PostgreSQL | MySQL | SQL Server |
|---|---|---|---|---|
| First 10 rows | LIMIT 10 |
LIMIT 10 or FETCH FIRST 10 ROWS ONLY |
LIMIT 10 |
TOP (10) or OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY |
| Join strings | a || b |
a || b |
CONCAT(a, b) |
a + b, CONCAT(a, b), or a || b (2025) |
| Auto-increment key | INTEGER PRIMARY KEY |
GENERATED ALWAYS AS IDENTITY |
AUTO_INCREMENT |
IDENTITY(1,1) |
| Insert or update | ON CONFLICT ... DO UPDATE |
ON CONFLICT ... DO UPDATE or MERGE |
ON DUPLICATE KEY UPDATE |
MERGE |
| Current date | date('now') |
CURRENT_DATE |
CURDATE() |
CAST(GETDATE() AS date) or CURRENT_DATE (2025) |
| Booleans | 0 / 1 |
boolean |
TINYINT(1) / BOOLEAN |
bit |
| JSON | JSON functions (text or JSONB) | json and jsonb types |
JSON type |
json type (2025) |
| Procedural code | None | PL/pgSQL | Stored procedures | T-SQL |
Which one should you learn or use?
- Learning SQL: start with SQLite (nothing to install; this tutorial runs it in your browser), then move to
PostgreSQL. Standard SQL (
SELECT,JOIN,GROUP BY, window functions) works almost the same everywhere. - New applications: PostgreSQL 18 is a great default; MySQL 8.4 or 9.7 LTS if your hosting or framework expects MySQL; SQL Server 2025 in Microsoft-centric environments; SQLite for mobile, desktop, embedded and small sites.
- Keep databases on a supported version: PostgreSQL 14 reaches end of life in November 2026, and MySQL 8.0 already did in April 2026.
Official resources
- ISO/IEC 9075 (the SQL standard) and Modern SQL, a guide to standard SQL features across databases
- SQLite documentation and its release history
- PostgreSQL documentation and versioning policy
- MySQL documentation and MySQL on endoflife.date
- Transact-SQL reference and What's new in SQL Server 2025
Last reviewed 21 October 2026. Release and support dates come from the official release pages linked above.