SQLでは、データベーステーブルを作成する際に、「デフォルト値」(Default Value)と呼ばれる各列フィールドの初期値を指定できます。デフォルト値は、その列に明示的に値が指定されていない場合に、新しいレコードが挿入されるときに自動的に適用される値です。新しい行を挿入するときに、列に値が指定されていない場合、データベースはその列にデフォルト値を入力します。
デフォルトは、データの整合性を確保し、デフォルトのオプションを提供するのに役立ちます。新しい行を挿入するとき、一部の列に値が指定されていない場合、データベースはその列にデフォルト値を使用するため、NULL 値や無効なデータが回避されます。
SQL でデータベース テーブルを作成するときにデフォルト値を設定するための構文は次のとおりです。
CREATE TABLE table_name (
column1 datatype DEFAULT default_value,
column2 datatype DEFAULT default_value,
...
);
ここでtable_name
、 は新しいテーブルの名前、column1
はcolumn2
テーブルの列名、datatype
は列のデータ型、default_value
は列のデフォルト値です。
では、具体例を挙げて詳しく説明していきましょう。
ユーザー ID、ユーザー名、年齢、登録日などのユーザー情報を保存する単純なデータベースがあるとします。デフォルト値が設定されるいくつかの列を含む「users」という名前のテーブルを作成します。
CREATE TABLE users (
user_id INT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
age INT DEFAULT 18,
registration_date DATE DEFAULT CURRENT_DATE
);
上の例では、次の列を含む「users」というテーブルを作成しました。
user_id
: これはユーザーの一意の識別子であり、主キーとして設定されます。つまり、各値は一意である必要があり、空にすることはできません。username
: これはユーザーのユーザー名です。VARCHAR(50) は最大長が 50 文字のテキスト フィールドであることを意味し、NOT NULL は列を空にすることができないことを示します。age
: これはユーザーの年齢です。INT は整数型フィールドであることを意味し、デフォルト値は 18 です。新しいユーザーを挿入するときに年齢が指定されていない場合、データベースは自動的に 18 に設定します。registration_date
: これはユーザーの登録日です。DATE は日付型フィールドであることを意味し、デフォルト値は現在の日付に設定されます (関数を使用CURRENT_DATE
)。新しいユーザーを挿入するときに登録日が指定されていない場合、データベースは自動的に現在の日付に設定します。
ここで、いくつかのデータ行を挿入し、デフォルトがどのように適用されるかを見てみましょう。
-- 插入一行,没有指定年龄和注册日期
INSERT INTO users (user_id, username) VALUES (1, 'John Doe');
-- 插入一行,没有指定注册日期
INSERT INTO users (user_id, username, age) VALUES (2, 'Jane Smith', 25);
-- 插入一行,指定所有列的值
INSERT INTO users (user_id, username, age, registration_date)
VALUES (3, 'Bob Johnson', 30, '2023-07-31');
最初の挿入ステートメントでは、年齢と登録日を指定しなかったため、データベースは年齢をデフォルト値の 18 に設定し、登録日を現在の日付に設定します。
2 番目の挿入ステートメントでは、登録日を指定しませんでしたが、年齢を指定したため、データベースは年齢を指定された値 (25) に設定し、登録日を現在の日付に設定します。
3 番目の挿入ステートメントでは、すべての列の値を指定するので、データベースは指定した値を使用します。
これが、SQL がデータベース テーブルを作成するときのデフォルト値の目的と重要性です。デフォルト値を設定すると、テーブル内のすべての行に適切なデフォルト オプションが設定されるようになり、データ挿入プロセスが簡素化され、データの整合性が維持されます。デフォルト値がない場合は、新しいレコードを挿入するときに、NULL を許可しないすべての列で値を明示的に指定する必要があります。そうしないと、データベースでエラーが報告されます。
要約すると、SQL では、DEFAULT
キーワードを使用してテーブルの列フィールドのデフォルト値を設定します。これにより、新しいレコードを挿入するときに、値が指定されていない場合、データベースはデフォルト値を使用して列を埋めます。デフォルトは、デフォルトのオプションを提供し、データの整合性を確保し、データ挿入プロセスを簡素化するのに役立ちます。