sql >> データベース >  >> RDS >> MariaDB

MariaDB DEFAULT()の説明

    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によって生成された値)が表示されます 。


    1. PG ::Error:SELECT DISTINCT、ORDERBY式は選択リストに表示される必要があります

    2. AmazonRDSマスターユーザーパスワードをリセットする方法

    3. PL / SQLチュートリアル:PL/SQLについて知っておくべきことすべて

    4. OracleEntityFramework-異なるスキーマのテーブルからエンティティを生成