Pode ser atribuído um valor padrão a uma coluna. Quando é criada uma nova linha, e não é especificado nenhum valor para algumas de suas colunas, estas colunas são preenchidas com o valor padrão de cada uma delas. Além disso, um comando de manipulação de dados pode requerer explicitamente que a coluna receba o seu valor padrão, sem saber qual é este valor (os detalhes sobre os comandos de manipulação de dados estão no Capítulo 6).
Se não for declarado explicitamente nenhum valor padrão, o valor nulo será o valor padrão. Isto geralmente faz sentido, porque o valor nulo pode ser considerado como representando um dado desconhecido.
Na definição da tabela, o valor padrão é posicionado após o tipo de dado da coluna. Por exemplo:
CREATE TABLE produtos (
cod_prod integer PRIMARY KEY,
nome text,
preco numeric DEFAULT 9.99
);
O valor padrão pode ser uma expressão, avaliada sempre que for inserido o valor padrão (e não quando a tabela é criada). Um exemplo comum é uma coluna do tipo timestamp com o valor padrão now(), para que receba a data e hora de inserção da linha. Outro exemplo comum é a geração de um "número serial" para cada linha. No PostgreSQL isto é feito tipicamente através de algo como:
CREATE TABLE produtos (
cod_prod integer DEFAULT nextval('produtos_cod_prod_seq'),
...
);
onde a função nextval() fornece valores sucessivos do objeto de seqüência (consulte a Seção 9.12). Esta situação é tão comum que existe uma forma abreviada da mesma:
CREATE TABLE produtos (
cod_prod SERIAL,
...
);
A forma abreviada SERIAL é mostrada posteriormente na Seção 8.1.4.