SQL Data Types Ref
Cross-reference of common SQL data types across the four major engines. Names differ; the storage shape is usually similar.
Integers
| Logical | MySQL | PostgreSQL | SQL Server | Oracle |
|---|---|---|---|---|
| Tiny | TINYINT | SMALLINT | TINYINT | NUMBER(3) |
| Small | SMALLINT | SMALLINT | SMALLINT | NUMBER(5) |
| Regular | INT | INTEGER | INT | NUMBER(10) |
| Big | BIGINT | BIGINT | BIGINT | NUMBER(19) |
Decimals & floats
| Logical | MySQL | PostgreSQL | SQL Server | Oracle |
|---|---|---|---|---|
| Exact | DECIMAL(p,s) | NUMERIC(p,s) | DECIMAL(p,s) | NUMBER(p,s) |
| Single float | FLOAT | REAL | REAL | BINARY_FLOAT |
| Double float | DOUBLE | DOUBLE PRECISION | FLOAT | BINARY_DOUBLE |
Strings
| Logical | MySQL | PostgreSQL | SQL Server | Oracle |
|---|---|---|---|---|
| Fixed | CHAR(n) | CHAR(n) | CHAR(n) / NCHAR(n) | CHAR(n) |
| Variable | VARCHAR(n) | VARCHAR(n) | VARCHAR(n) / NVARCHAR(n) | VARCHAR2(n) |
| Long | TEXT | TEXT | VARCHAR(MAX) | CLOB |
Dates & times
| Logical | MySQL | PostgreSQL | SQL Server | Oracle |
|---|---|---|---|---|
| Date | DATE | DATE | DATE | DATE |
| Time | TIME | TIME | TIME | part of TIMESTAMP |
| Date+Time | DATETIME | TIMESTAMP | DATETIME2 | TIMESTAMP |
| With zone | TIMESTAMP | TIMESTAMPTZ | DATETIMEOFFSET | TIMESTAMP WITH TIME ZONE |
Other
- Boolean — MySQL
BOOLEAN=TINYINT(1); PGBOOLEAN; SQL ServerBIT; OracleNUMBER(1). - Binary —
BLOB(MySQL/Oracle),BYTEA(PG),VARBINARY(MAX)(SQL Server). - JSON —
JSON(MySQL/PG),JSONB(PG, indexable),JSONviaNVARCHARin SQL Server. - UUID — native
UUID(PG);CHAR(36)orBINARY(16)elsewhere;UNIQUEIDENTIFIERin SQL Server.
Tip: When migrating between engines, the data-type translation is half the work — the other half is the SQL dialect around it.
Example
Example
-- Pick the smallest type that fits: -- TINYINT → 0..255 -- INT → +-2.1B -- BIGINT → very large -- VARCHAR(n) → variable text -- DECIMAL(p,s) → moneyTry it Yourself »
Exercise
PostgreSQL indexable JSON type.
data
Five characters; JSON with a B.
Discussion
Loading…