MariaDBでは、DEFAULT()
は、テーブル列のデフォルト値を返す組み込み関数です。
列にデフォルト値がなく、NULLABLE
の場合 、次にNULL
が返されます。列にデフォルト値がなく、ではない場合 NULLABLE
、エラーが返されます。
構文
構文は次のようになります:
DEFAULT(col_name)
col_name
の場所 デフォルト値を返す列の名前です。
場合によっては、括弧や引数なしで使用することもできます。
DEFAULT
この構文を使用して、列をデフォルト値に明示的に設定できます。
例
関数がどのように機能するかを示す例を次に示します。
次のようなテーブルを作成するとします。
CREATE TABLE guest_meals (
guest_id INT NOT NULL,
meal VARCHAR(255) DEFAULT 'Salad',
special_request VARCHAR(255),
PRIMARY KEY (guest_id)
);
ここでは、meal
のデフォルト値を設定します 桁。具体的には、DEFAULT 'Salad'
を使用しました デフォルトの食事をSalad
に設定します 。
これはDEFAULT
を使用します CREATE TABLE
の句 声明。ここでの目的(列のデフォルト値を設定します)に関連していますが、DEFAULT()
と混同しないでください。 この記事の機能。
次に、いくつかの行を挿入しましょう:
INSERT INTO guest_meals (guest_id) VALUES (1);
INSERT INTO guest_meals (guest_id, meal) VALUES (2, 'Fish');
INSERT INTO guest_meals (guest_id, meal) VALUES (3, 'Burrito');
INSERT INTO guest_meals (guest_id, meal, special_request) VALUES (4, 'Pasta', 'Hot');
INSERT INTO guest_meals (guest_id, special_request) VALUES (5, 'Vegan');
これらのエントリの中には、ゲストがどの食事を望んでいるかを明示的に示しているものと、そうでないものがあります。デフォルトの食事(Salad
)を使用しないもの 。
それでは、テーブルからそれらの行を選択しましょう。 DEFAULT()
を含めます 選択した機能:
SELECT
guest_id,
DEFAULT(meal),
meal,
DEFAULT(special_request),
special_request
FROM guest_meals;
結果:
+----------+---------------+---------+--------------------------+-----------------+ | guest_id | DEFAULT(meal) | meal | DEFAULT(special_request) | special_request | +----------+---------------+---------+--------------------------+-----------------+ | 1 | Salad | Salad | NULL | NULL | | 2 | Salad | Fish | NULL | NULL | | 3 | Salad | Burrito | NULL | NULL | | 4 | Salad | Pasta | NULL | Hot | | 5 | Salad | Salad | NULL | Vegan | +----------+---------------+---------+--------------------------+-----------------+
DEFAULT(meal)
columnはデフォルト値を返し、meal
columnは、挿入された実際の値を返します。
同様に、DEFAULT(special_request)
columnは、その列のデフォルト値とspecial_request
を返します。 列は、挿入された実際の値を返します。
special_request
について 列の場合、この列のデフォルト値は実際には設定されていないため、結果はNULL
になります。 。列がNULLABLE
ではなかった場合は注意してください 、エラーが発生します(以下を参照)。しかし、列は NULLABLE
、したがって、デフォルト値のNULL
返されました。
デフォルト値を明示的に挿入する
DEFAULT
を使用できます デフォルト値を列に明示的に挿入するための括弧なしのキーワード。
次に例を示します:
INSERT INTO guest_meals (guest_id, meal, special_request)
VALUES (6, DEFAULT, DEFAULT);
次に、その行を選択しましょう:
SELECT
guest_id,
DEFAULT(meal),
meal,
DEFAULT(special_request),
special_request
FROM guest_meals
WHERE guest_id = 6;
結果:
+----------+---------------+-------+--------------------------+-----------------+ | guest_id | DEFAULT(meal) | meal | DEFAULT(special_request) | special_request | +----------+---------------+-------+--------------------------+-----------------+ | 6 | Salad | Salad | NULL | NULL | +----------+---------------+-------+--------------------------+-----------------+
どちらの場合も、それぞれの列にデフォルト値を挿入しました。 meal
の場合 列、これはSalad
でした 。 special_request
の場合 列、これはNULL
でした 。
非NULL可能列
前述のように、NULLABLE
以外からデフォルト値を取得しようとしています デフォルト値がない列はエラーになります。
例:
SELECT DEFAULT(guest_id)
FROM guest_meals;
結果:
ERROR 1364 (HY000): Field 'guest_id' doesn't have a default value
テーブルを作成したとき、guest_id
のデフォルト値を提供していませんでした 列であり、NOT NULL
にも設定します 。このため、デフォルト値を返そうとするとエラーが発生します。
AUTO_INCREMENT
を使用した整数列
AUTO_INCREMENT
を使用する整数列の場合 、戻り値は0
です。 。
例として、AUTO_INCREMENT
を使用してテーブルを作成しましょう。 列:
CREATE TABLE guest (
guest_id INT NOT NULL AUTO_INCREMENT,
guest_name VARCHAR(255) NOT NULL,
PRIMARY KEY (guest_id)
);
guest_id
列はINT
を使用します (整数)データ型で、AUTO_INCREMENT
に設定されています 。
次に、いくつかの行を挿入します:
INSERT INTO guest (guest_name) VALUES ('Homer');
INSERT INTO guest (guest_name) VALUES ('Bart');
INSERT INTO guest (guest_name) VALUES ('Marge');
それでは、guest_id
のデフォルト値を返しましょう。 列:
SELECT
DEFAULT(guest_id),
guest_id
FROM guest;
結果:
+-------------------+----------+ | DEFAULT(guest_id) | guest_id | +-------------------+----------+ | 0 | 1 | | 0 | 2 | | 0 | 3 | +-------------------+----------+
DEFAULT(guest_id)
列は、デフォルト値が0
であることを示しています すべての行に対して。 guest_id
列には、挿入された実際の値(AUTO_INCREMENT
によって生成された値)が表示されます 。