列にはデフォルトの値を割り当てることができます。 新しく作成された行のいくつかの列に値が指定されていない場合、そうした空欄にはそれぞれの列のデフォルト値が入ります。 データ操作コマンドを使用して、列を(どのような値かを把握する必要なく)デフォルト値に設定するように明示的に要求することもできます (データ操作コマンドの詳細については第6章を参照してください)。
明示的に宣言されたデフォルト値がない場合は、デフォルト値はNULL値になります。 NULL値は不明のデータを表すものとみなすことができるので、通常はこの方法で問題ありません。
テーブル定義では、デフォルト値は列データ型の後に列挙されています。 例を示します。
CREATE TABLE products ( product_no integer, name text, price numeric DEFAULT 9.99 );
デフォルト値を式にすることができます。 式は、デフォルト値が挿入される度に評価されます (テーブルの作成時ではありません)。 よくある例として、タイムスタンプ列が挿入時の時刻に設定されるように、その列のデフォルトにnow()を付けることができます。 もう1つの例としては、各行に"通番"を割り振る場合です。 PostgreSQLでは、典型的に以下のように記述することにより生成されます。
CREATE TABLE products ( product_no integer DEFAULT nextval('products_product_no_seq'), ... );
nextval()関数が、シーケンスオブジェクトから連続した値を生成します(項9.15を参照してください)。特に省略した形として以下のようにも記述できます。
CREATE TABLE products ( product_no SERIAL, ... );
省略形であるSERIALは項8.1.4で詳しく述べられています。