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
);
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')。