Define a new table and its columns.

Defines a new table with its columns, types, constraints, and indexes. The foundation of relational schema design. Choose column types carefully -- changing them later is expensive. Define NOT NULL and primary keys up front where possible.

Compatibility

Show:
Database System Support Status Since Version Notes
MySQL ✓ Supported all Engine options available
PostgreSQL ✓ Supported all Standard + SERIAL
SQL Server ✓ Supported all Standard + IDENTITY
Oracle ✓ Supported all Standard + SEQUENCES
SQLite ✓ Supported all Standard + AUTOINCREMENT

Details

DDL to create a new relational table.

Standard Syntax

CREATE TABLE table_name ( id INT PRIMARY KEY, name VARCHAR(100) NOT NULL );

Version Support

MySQL: Since all PostgreSQL: Since all SQL Server: Since all Oracle: Since all SQLite: Since all

Per-Database Syntax & Notes

MySQL

Engine options available

CREATE TABLE tbl ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL ) ENGINE=InnoDB;

PostgreSQL

Standard + SERIAL

CREATE TABLE tbl ( id SERIAL PRIMARY KEY, name TEXT NOT NULL );

SQL Server

Standard + IDENTITY

CREATE TABLE tbl ( id INT IDENTITY(1,1) PRIMARY KEY, name NVARCHAR(100) NOT NULL );

Oracle

Standard + SEQUENCES

CREATE TABLE tbl ( id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, name VARCHAR2(100) NOT NULL );

SQLite

Standard + AUTOINCREMENT

CREATE TABLE tbl ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL );