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

MySQLでデフォルトの制約を追加する方法

    MySQLでは、列にデフォルト値を追加したり、デフォルト値で列を追加したりする必要がある場合があります。 MySQLのデフォルトの制約を使用してこれを簡単に行うことができます。 MySQLにデフォルトの制約を追加する方法は次のとおりです。

    MySQLにデフォルトの制約を追加する方法

    MySQLにデフォルトの制約を追加する手順は次のとおりです。 CREATE TABLEステートメントを使用してテーブルを作成している間、またはALTER TABLEステートメントを使用してテーブルを作成した後に、デフォルトの制約を追加できます。これら両方のアプローチを見ていきます。

    CREATETABLEを使用してデフォルトの制約を追加する方法

    CREATEテーブルステートメントを使用してデフォルトの制約を追加する構文は次のとおりです。

    mysql> create table table_name(
        column1 column1_definition DEFAULT default_value,
        column2 column2_definition,
        ...
      );
    

    上記のSQLクエリでは、テーブル名 table_nameを指定する必要があります 。また、デフォルト値を追加するフィールドの列定義の後にDEFAULTを指定する必要があります。列のデフォルト値も指定する必要があります。

    ボーナスリード:MySQLはグループごとに上位N行を選択

    MySQLにデフォルトの制約を追加する例を次に示します。

    mysql> create table sample_data(
           id int,
           order_date date,
           amount int DEFAULT 0
         );
    
    mysql> insert into sample_data(id, order_date)
           values(1,'2020-08-01');
    
    mysql> select * from sample_data;
    +------+------------+--------+
    | id   | order_date | amount |
    +------+------------+--------+
    |    1 | 2020-08-01 |      0 |
    +------+------------+--------+
    

    上記のSQLクエリでは、 sample_dataを作成します。 列amountのデフォルト値が0のテーブル。 ご覧のとおり、 sample_dataに値を挿入すると 、金額の値については言及していません 桁。ただし、MySQLはデフォルト値0をこの列に自動的に割り当てます。

    ボーナスリード:MySQLで先週のデータを取得する方法

    ALTER TABLEは、MySQLのデフォルト値で列を追加します

    同様に、既存のテーブルに対してALTER TABLEステートメントを使用して、デフォルトの制約を追加できます。構文は次のとおりです

    mysql> ALTER TABLE table_name
              ALTER column_name SET DEFAULT default_value;
    

    上記のALTERTABLEステートメントでは、 table_name、column_nameについて言及する必要があります。 およびdefault_value

    次に、ALTERTABLEを使用してデフォルトの制約を追加する例を示します。 order_dateのデフォルト値を設定するとします。 上記の表の列sample_data

    mysql> ALTER TABLE sample_data
           ALTER order_date SET DEFAULT '2020-08-03';
    
    mysql> insert into sample_data(id)
           values(2);
    
    mysql>select * from sample_data;
    
    mysql> select * from sample_data;
    +------+------------+--------+
    | id   | order_date | amount |
    +------+------------+--------+
    |    1 | 2020-08-01 |      0 |
    |    2 | 2020-08-03 |      0 |
    +------+------------+--------+
    

    上記のSQLクエリでは、デフォルトの制約を order_dateに追加しました。 桁。その後、 idのみを提供します INSERTステートメントの列の値。それでも、MySQLは自動的に order_dateにデータを入力します および金額 デフォルト値に基づく列。

    ボーナスリード:MySQLコピーデータベース

    列のデフォルト値を削除する方法

    列のデフォルト値を削除する必要がある場合は、DROPDEFAULTステートメントを使用してください。 DROPDEFAULTクエリの構文は次のとおりです。

    mysql> ALTER TABLE table_name
              ALTER column_name DROP DEFAULT;
    

    上記のクエリでは、 table_nameを指定する必要があります およびcolumn_name DEFAULT制約を削除する対象。

    SQLのDROPDEFAULT制約の例を次に示します。

    mysql> ALTER TABLE sample_data
           ALTER order_date DROP DEFAULT;
    
    

    上記のステートメントでは、 order_dateからデフォルトの制約を削除しました 列。

    Ubiqを使用すると、データを数分で簡単に視覚化し、リアルタイムのダッシュボードで監視できます。今日お試しください。

    1. テーブルの列からIDを削除する

    2. SQL Server、Azure SQL Database、AmazonRDSのパフォーマンスを調整する方法

    3. フィールド値がNullの場合にOracleでテーブルを更新し、その更新が成功したかどうかを判断する

    4. CSVファイルのカンマと二重引用符を同時にエスケープするにはどうすればよいですか?