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

MySQLでNOTNULL制約を追加する方法

    null値を受け入れないようにMySQL列を設定する必要がある場合は、MySQLにNOTNULL制約を追加できます。 CREATE TABLEステートメントを使用してテーブルテーブルを作成するときにNOTNULL制約を追加するか、ALTERTABLEステートメントを使用して既存のテーブルにNOTNULL制約を追加できます。 MySQLにNOTNULL制約を追加する方法は次のとおりです。

    MySQLにNOTNULL制約を追加する方法

    MySQLで列にNOTNULL制約を追加し、既存の列にNOT NULL制約を追加し、列からNOTNULL制約を削除する手順は次のとおりです。

    新しいテーブルを作成するときにMySQLでNOTNULL制約を定義する構文は次のとおりです。

    column_name data_type NOT NULL;

    上記のステートメントでは、 column_name に言及した後、NOTNULLを指定する必要があります。 およびそのdata_type

    MySQLにNOTNULL制約を追加する例を次に示します。

    mysql> create table product_sales(
         id int,
         amount int NOT NULL,
         order_date date
         );
    
    mysql> describe product_sales;
    +------------+---------+------+-----+---------+-------+
    | Field      | Type    | Null | Key | Default | Extra |
    +------------+---------+------+-----+---------+-------+
    | id         | int(11) | YES  |     | NULL    |       |
    | amount     | int(11) | NO   |     | NULL    |       |
    | order_date | date    | YES  |     | NULL    |       |
    +------------+---------+------+-----+---------+-------+
    
    mysql> insert into product_sales(id, order_date)
         values(1,'2020-08-01');
    ERROR 1364 (HY000): Field 'amount' doesn't have a default value
    

    上記のCREATETABLEクエリでは、 amountにNOTNULL制約を追加しました。 桁。この列にNULL値を挿入すると、MySQLはエラーを出します。

    ボーナスリード:MySQLにデフォルトの制約を追加する方法

    ALTERTABLEMySQLにNOTNULL制約を追加

    また、ALTER TABLE…CHANGEステートメントを使用して、MySQLの既存の列にNOTNULL制約を追加することもできます。 MySQLの既存のテーブルにnull以外の制約を追加するための構文は次のとおりです。

    ALTER TABLE table_name
    CHANGE 
       old_column_name 
       new_column_name column_definition;
    

    上記のクエリでは、old_column_nameとnew_column_nameに同じ列名を指定しています。 new_column_nameの後には、データ型のcolumn_definitionとNOTNULLキーワードが続く必要があります。

    これは、MySQLの既存の列にNOTNULL制約を追加するSQLクエリの例です。

    mysql> ALTER TABLE product_sales
         CHANGE
             order_date
             order_date DATE NOT NULL;
    
    mysql> describe product_sales;
    +------------+---------+------+-----+---------+-------+
    | Field      | Type    | Null | Key | Default | Extra |
    +------------+---------+------+-----+---------+-------+
    | id         | int(11) | YES  |     | NULL    |       |
    | amount     | int(11) | NO   |     | NULL    |       |
    | order_date | date    | NO   |     | NULL    |       |
    +------------+---------+------+-----+---------+-------+
    

    上記のクエリでは、既存の列 order_dateにNOTNULL制約を追加しました。

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

    NOTNULL制約を削除する方法

    また、ALTERTABLE…MODIFYステートメントを使用してNOTNULL制約を削除することもできます。 MySQLでNOTNULL制約を削除するための構文は次のとおりです。

    ALTER TABLE table_name
    MODIFY column_name column_definition;
    

    上記のクエリでは、NOTNULL制約を削除する列名と定義を指定する必要があります。

    order_dateのNOTNULL制約を削除する例を次に示します。 列。

    mysql> ALTER TABLE product_sales
           MODIFY order_date DATE;
    
    mysql> describe product_sales;
    +------------+---------+------+-----+---------+-------+
    | Field      | Type    | Null | Key | Default | Extra |
    +------------+---------+------+-----+---------+-------+
    | id         | int(11) | YES  |     | NULL    |       |
    | amount     | int(11) | NO   |     | NULL    |       |
    | order_date | date    | YES  |     | NULL    |       |
    +------------+---------+------+-----+---------+-------+
    

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

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

    1. SQL Server AlwaysOn(可用性グループ)アーキテクチャとステップバイステップのインストール-1

    2. JqueryAjaxを使用してMysqlからデータを取得する

    3. tnsnames.oraファイルのないOracle接続文字列

    4. Django:テーブルは存在しません