PostgreSQL Data Types
PostgreSQL supports a wide range of data types. In this article, we will discuss some of the most commonly used data types in PostgreSQL.
Built-in Data Types
PostgreSQL supports a wide range of built-in data types. Here are some of the most commonly used data types:
- Numeric Types:
INTEGER
,BIGINT
,DECIMAL
,NUMERIC
,REAL
,DOUBLE PRECISION
,SMALLINT
- Character Types:
CHAR
,VARCHAR
,TEXT
- Binary Types:
BYTEA
- Date/Time Types:
DATE
,TIME
,TIMESTAMP
,INTERVAL
- Boolean Type:
BOOLEAN
- Enum Types:
ENUM
- Array Types:
ARRAY
- JSON Types:
JSON
,JSONB
- UUID Type:
UUID
- Network Address Types:
INET
,CIDR
,MACADDR
- Geometric Types:
POINT
,LINE
,LSEG
,BOX
,PATH
,POLYGON
,CIRCLE
- Bit String Types:
BIT
,BIT VARYING
- XML Type:
XML
- Range Types:
INT4RANGE
,INT8RANGE
,NUMRANGE
,TSRANGE
,TSTZRANGE
,DATERANGE
Custom TYPE
and DOMAIN
We can create custom types using the CREATE TYPE
statement. For example, we can create a custom type user_type
to represent the user data.
CREATE TYPE user_profile_type AS (
name VARCHAR(255),
email VARCHAR(255),
age INTEGER
);
We can use the user_type
in the table definition.
CREATE TABLE user_profiles (
id SERIAL PRIMARY KEY,
profile user_profile_type
);
A DOMAIN
, essentially, is a domain can be seen as a "restricted" or "constrained" version of an existing type. It can be used to enforce constraints on the data that can be stored in a column. For example, we can create a domain for the email
type to validate the email address.
CREATE DOMAIN email AS VARCHAR(255)
CONSTRAINT valid_email CHECK (VALUE ~* '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$');