Столбцу можно присвоить значение по умолчанию. Когда создается новая строка и для некоторых столбцов не указаны значения, эти столбцы будут заполнены соответствующими значениями по умолчанию. Команда манипулирования данными также может явно запросить, чтобы для столбца было установлено значение по умолчанию, не зная, что это за значение.

Если значение по умолчанию не объявлено явно, значением по умолчанию является нулевое значение. Обычно это имеет смысл, поскольку нулевое значение можно рассматривать как представление неизвестных данных.

В определении таблицы значения по умолчанию перечислены после типа данных столбца. Например:

CREATE TABLE products (
    product_no integer,
    name text,
    price numeric DEFAULT 9.99
);

Значение по умолчанию может быть выражением, которое будет оцениваться всякий раз, когда вставляется значение по умолчанию ( а не при создании таблицы). Обычный пример: timestampстолбец имеет значение по умолчанию CURRENT_TIMESTAMP, поэтому для него устанавливается время вставки строки. Другим распространенным примером является создание « серийного номера » для каждой строки. В PostgreSQL это обычно делается примерно так:

CREATE TABLE products (
    product_no integer DEFAULT nextval('products_product_no_seq'),
    ...
);

где nextval()функция предоставляет последовательные значения из объекта последовательности. Это расположение достаточно распространено, поэтому для него есть специальное сокращение:

CREATE TABLE products ( 
    product_no SERIAL , 
    ... 
);