SQL DEFAULT制約

DEFAULT 制約は、列にデフォルト値を挿入するために使用します。

他の値が指定されていない場合、デフォルト値がすべての新しいレコードに追加されます。

構文

1. テーブル作成時にDEFAULT制約を定義する:

CREATE TABLE 表名 (
    列名 数据类型 DEFAULT 默认值
);

2. 既存のテーブルにDEFAULT制約を追加する:

ALTER TABLE 表名
ALTER COLUMN 列名 SET DEFAULT 默认值;

例

1. テーブル作成時にDEFAULT制約を定義する

例

CREATE TABLE Employees (
    EmployeeID INT PRIMARY KEY,
    FirstName VARCHAR(50),
    LastName VARCHAR(50),
    HireDate DATE DEFAULT GETDATE(), -- デフォルト値は現在の日付
    Salary DECIMAL(10, 2) DEFAULT 0.00 -- デフォルト値は 0.00
);

2. 既存のテーブルにDEFAULT制約を追加する

ALTER TABLE Employees
ALTER COLUMN Salary SET DEFAULT 0.00;

3. データ挿入時にデフォルト値を使用する

INSERT INTO Employees (EmployeeID, FirstName, LastName)
VALUES (1, 'John', 'Doe');

HireDate と Salary の値が提供されない場合、データベースは自動的にデフォルト値を使用します。


DEFAULT 制約の削除

データベースによって削除方法が異なります:

1、SQL Server

ALTER TABLE 表名
DROP CONSTRAINT 约束名;

2、MySQL

ALTER TABLE 表名
ALTER COLUMN 列名 DROP DEFAULT;

3、Oracle

ALTER TABLE 表名
MODIFY 列名 DEFAULT NULL;

4、MS Access

ALTER TABLE 表名
ALTER COLUMN 列名 DROP DEFAULT;

注意事項

  • DEFAULT制約の値は列のデータ型と互換性がある必要があります。

  • 列が次のように定義されている場合NOT NULLかつデフォルト値が提供されていない場合、データ挿入時に明示的に値を指定する必要があります。そうしないとエラーが発生します。

  • デフォルト値は、定数値、式、または関数(例:GETDATE())。

適用シナリオ

  • 日付列に現在の日付をデフォルト値として設定します。

  • 数値列に初期値を設定します(例:0)。

  • ステータス列にデフォルトのステータスを設定します(例:'Active')。

その他の拡張