MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで既存テーブルの列からNOT NULL制約を削除する方法

既存のテーブルの列からNOT NULL制約を削除するには、ALTER TABLEステートメントを使用します。MODIFY句で対象の列を再定義することにより、その列にNULL値を保存できるようになります。

具体例

ここでは、列「ID」にNOT NULL制約が設定されているテーブル「test123」を例に説明します。まず、DESCRIBEコマンドで現在のテーブル構造を確認してみましょう。

mysql> DESCRIBE test123;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| ID    | int(11) | NO   |     | NULL    |       |
| Date  | date    | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.04 sec)

「ID」列のNullフィールドが「NO」と表示されており、NOT NULL制約が適用されていることがわかります。

このNOT NULL制約を削除するには、次のようにALTER TABLEステートメントを実行します。

mysql> ALTER TABLE test123 MODIFY ID INT NULL;
Query OK, 0 rows affected (0.20 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> DESCRIBE test123;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| ID    | int(11) | YES  |     | NULL    |       |
| Date  | date    | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.06 sec)

上記の結果セットを見ると、「ID」列のNullフィールドが「YES」に変わっています。これにより、NOT NULL制約が正常に削除されたことが確認できます。

NULLキーワードは省略可能

なお、上記のクエリにおけるMODIFYキーワードの後ろの「NULL」は省略しても問題ありません。次のクエリを実行しても、まったく同じ結果が得られます。

mysql> ALTER TABLE test123 MODIFY ID INT;
Query OK, 0 rows affected (0.20 sec)
Records: 0 Duplicates: 0 Warnings: 0

MODIFY句ではデータ型のみを指定した場合にNULL値を許可する設定がデフォルトで適用されるため、明示的にNULLと書かなくてもNOT NULL制約は削除されます。状況に応じて使い分けるとよいでしょう。

  1. 既存のMySQLカラムにNOT NULL制約を追加する方法を解説

    ALTER TABLE文を使ってNOT NULL制約を追加する すでに作成済みのテーブルのカラムにNOT NULL制約を追加したい場合は、ALTER TABLE文とMODIFY句を組み合わせることで簡単に実現できます。ここでは、実際の手順を順番に見ていきましょう。 手順1:サンプルテーブルを作成する まず、検証用のテーブル「DemoTable」を作成します。この時点では、StudentNameカラムにはNOT NULL制約を設定していません。 mysql> create table DemoTable     -> (  &nbs

  2. MySQLテーブルからインデックスを削除する方法

    MySQLのテーブルから不要になったインデックスを削除したい場合、ALTER TABLE文とDROP INDEX句を組み合わせて使用します。この記事では、実際のSQL実行例を交えながら、インデックスを削除する手順をわかりやすく解説します。 インデックスを削除する基本構文 MySQLテーブルからインデックスを削除する際の基本構文は以下の通りです。 ALTER TABLE テーブル名 DROP INDEX `インデックス名`; インデックス名にスペースが含まれる場合は、バッククォート(`)で囲む点に注意してください。 ステップ1:サンプルテーブルを作成する まずは動作確認用のテーブルを作成しま