NULL値のあるNULL可能列をNULL値のない列に変更する必要がある場合があります。この記事では、列をNULLからNOTNULL値に変更する方法を見ていきます。これらの手順を使用して、MySQL、PostgreSQL、およびSQLServerで列をNULLからNOTNULLに変更できます。
列をNullからNotNullに変更する方法
列をNULLからNOTNULLに変更する手順は次のとおりです。
1。テーブルを更新してヌル値を削除します。
最初のステップは、列からnull値を削除することです。テーブルsales(id、amount、order_date)があるとします。
mysql> create table sales(id int, amount int,order_date date); mysql> insert into sales(id, amount) values(1, 100),(2,300),(3,45); mysql> insert into sales(id, order_date) values(4,'2020-11-01'); mysql> select * from sales; +------+--------+------------+ | id | amount | order_date | +------+--------+------------+ | 1 | 100 | NULL | | 2 | 300 | NULL | | 3 | 45 | NULL | | 4 | NULL | 2020-11-01 | +------+--------+------------+
ご覧のとおり、上記の表には order_dateにnull値が含まれています および金額 列。
金額列をnullからnull以外に変更するとします。したがって、最初にUPDATEステートメントを使用してこの列からnull値を削除します。
mysql> update sales set amount=0 where amount is null; mysql> select * from sales; +------+--------+------------+ | id | amount | order_date | +------+--------+------------+ | 1 | 100 | NULL | | 2 | 300 | NULL | | 3 | 45 | NULL | | 4 | 0 | 2020-11-01 | +------+--------+------------+
同様に、 order_dateを変更する場合 以下に示すように、列をnullからnull以外に変更し、最初にnull値をnull以外の値に更新します。
mysql> update sales set order_date='0000-00-00' where order_date is null; mysql> select * from sales; +------+--------+------------+ | id | amount | order_date | +------+--------+------------+ | 1 | 100 | 0000-00-00 | | 2 | 300 | 0000-00-00 | | 3 | 45 | 0000-00-00 | | 4 | 0 | 2020-11-01 | +------+--------+------------+
2。テーブルの変更と列の変更
次に、ALTER TABLEステートメントを使用して、金額列をnullから非nullに変更します。
構文は次のとおりです。
ALTER TABLE table_name ALTER COLUMN col_name data_type NOT NULL;
table_name、col_name、data_typeをそれぞれテーブル名、列名、データ型に置き換えます。
金額列をNULLからNOTNULLに変更するSQLクエリは次のとおりです。
For MySQL --------- ALTER TABLE sales MODIFY COLUMN amount int NOT NULL; For SQL Server/PostgreSQL ------------------------- ALTER TABLE sales ALTER COLUMN amount int NOT NULL;
同様に、order_date列をNULLからNOTNULLに変更するSQLクエリは次のとおりです
For MySQL --------- ALTER TABLE sales MODIFY COLUMN order_date date NOT NULL; For SQL Server/PostgreSQL ------------------------- ALTER TABLE sales ALTER COLUMN order_date date NOT NULL;
MySQLでdescribetableコマンドを実行して、上記の変更を確認します。
mysql> describe sales; +------------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+---------+------+-----+---------+-------+ | id | int(11) | YES | | NULL | | | amount | int(11) | NO | | NULL | | | order_date | date | NO | | NULL | | +------------+---------+------+-----+---------+-------+
列amountとorder_dateにNULL列のNO値が含まれていることがわかります。これは、これらがNULL値を格納することを許可されていないことを示しています。
Ubiqを使用すると、データを簡単に視覚化し、リアルタイムのダッシュボードで監視できます。 Ubiqを無料でお試しください。