MySQLで新しい行を挿入するとき、NULLのカラムを指定する必要はありますか?
INSERT文でカラムリストを指定しない場合は、以下の構文を使用できます。値を設定しないカラムには、明示的にNULLを渡します。
insert into yourTableName values(NULL,yourValue,NULL,NULL,.....N);
まず、テーブルを作成しましょう。
mysql> create table DemoTable1513
-> (
-> StudentId int,
-> StudentName varchar(20) ,
-> StudentAge int,
-> StudentCountryName varchar(20)
-> );
Query OK, 0 rows affected (0.58 sec)次に、INSERTコマンドを使用して、テーブルにいくつかのレコードを挿入します。ここでは、値を指定しないカラムにNULLを渡しています。
mysql> insert into DemoTable1513 values(NULL,'Chris Brown',NULL,NULL); Query OK, 1 row affected (0.11 sec) mysql> insert into DemoTable1513 values(101,NULL,NULL,NULL); Query OK, 1 row affected (0.10 sec) mysql> insert into DemoTable1513 values(NULL,NULL,23,NULL); Query OK, 1 row affected (0.42 sec) mysql> insert into DemoTable1513 values(NULL,NULL,NULL,'US'); Query OK, 1 row affected (0.16 sec)
SELECT文を使用して、テーブル内のすべてのレコードを表示します。
mysql> select * from DemoTable1513;
実行すると、以下のような出力が得られます。
+-----------+-------------+------------+--------------------+ | StudentId | StudentName | StudentAge | StudentCountryName | +-----------+-------------+------------+--------------------+ | NULL | Chris Brown | NULL | NULL | | 101 | NULL | NULL | NULL | | NULL | NULL | 23 | NULL | | NULL | NULL | NULL | US | +-----------+-------------+------------+--------------------+ 4 rows in set (0.00 sec)
このように、カラムリストを省略したINSERT文を実行する場合は、テーブルの全カラム数と同じ数の値を指定する必要があります。そのため、値を設定しないカラムにはNULLを明示的に記述しなければなりません。
なお、INSERT文でカラムリストを明示的に指定すれば、値を設定したいカラムだけを記述でき、省略されたカラムには自動的にNULL(またはデフォルト値)が設定されます。状況に応じて、どちらの書き方を使い分けるとよいでしょう。
-
MySQLデータベースへの挿入時にdecimal(19,2)の値が変わる?truncate()で正確な値を保存する方法
decimal(19,2)の値が変わる原因と対処法MySQLのDECIMAL(19,2)型カラムに値を直接挿入すると、小数点以下3桁目が四捨五入され、元の値と異なる数値が保存されることがあります。正確な実数値をそのまま保存したい場合は、truncate()関数を使って小数点以下2桁で切り捨ててから挿入します。テーブルの作成まず、以下のクエリでテーブルを作成します。mysql> create table demo59-> (-> price decimal(19,2)-> );Query OK, 0 rows affected (1.12 sec)レコードの挿入次に、in
-
MySQL 8.0の新機能とは?注目すべき7つのポイントを徹底解説
MySQLは単体でも非常に強力なデータベース管理システムであり、高価で高性能な商用データベース製品が備える機能の大部分をカバーしています。標準的なSQLデータ言語を採用しており、2018年4月19日にリリースされたMySQL 8.0は、現在8.0.23が最新バージョンとして提供されています。本記事では、MySQL 8.0に導入された主な新機能について、わかりやすく解説します。アトミックDDL(Atomic DDL)アトミックDDLステートメントにより、データディクショナリへの更新やストレージエンジンの操作などが、ひとつの不可分な処理として統合されました。これにより、DDL実行中に障害が発生した