【MySQL入門】INSERT INTOステートメントでカラム名を指定せずに値を挿入する方法
MySQLのINSERT INTOステートメントでは、カラム名を明示的に指定しなくても値を挿入することができます。ただしその場合、テーブルで定義されているカラムの総数と同じ数の値を、定義順に従って指定する必要があります。さらに、各カラムのデータ型にも注意を払わなければなりません。
基本的なルール
カラム名を省略してINSERTを実行する際のポイントは以下の通りです。
- テーブルの全カラムに対応する値を、テーブル定義と同じ順序で指定する
- 値の個数がカラムの総数と一致していること
- 文字列型の値は必ず引用符(シングルクォート)で囲む
実行例
以下の例では、カラム名を指定せずにstudentテーブルへ値を挿入しています。複数行を1回のINSERT文でまとめて挿入することも可能です。
mysql> Insert into student values(100,'Gaurav','Ph.D'); Query OK, 1 row affected (0.08 sec) mysql> Select * from student; +--------+--------+--------+ | RollNO | Name | Class | +--------+--------+--------+ | 100 | Gaurav | Ph.D | +--------+--------+--------+ 1 row in set (0.00 sec) mysql> Insert into student values(200,'Rahul','Ph.D'),(300,'Aarav','B.tech'); Query OK, 2 rows affected (0.12 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> Select * from student; +--------+--------+--------+ | RollNO | Name | Class | +--------+--------+--------+ | 100 | Gaurav | Ph.D | | 200 | Rahul | Ph.D | | 300 | Aarav | B.tech | +--------+--------+--------+ 3 rows in set (0.00 sec)
このように、テーブルのカラム数と一致した値を渡すことで、カラム名を書かなくても正常にデータを挿入できます。
エラーが発生するケース
一方、カラムの総数やデータ型に注意しないと、MySQLは次のようなエラーを返します。
mysql> Insert into student values(400,'Raman',M.Tech); ERROR 1054 (42S22): Unknown column 'M.Tech' in 'field list' mysql> Insert into student values(400,'Raman'); ERROR 1136 (21S01): Column count doesn't match value count at row 1
エラーの原因
1つ目のエラー: 文字列「M.Tech」が引用符で囲まれていないため、MySQLがこれをカラム名として解釈しようとしたことが原因です。文字列リテラルは必ずシングルクォート(')で囲む必要があります。
2つ目のエラー: テーブルには3つのカラム(RollNO、Name、Class)が存在するのに対し、指定された値は2つしかないため、「カラム数と値の数が一致しない」というエラーになっています。
まとめ
カラム名を省略したINSERTはコードを短くできますが、テーブル構造が変わった瞬間にエラーや意図しないデータ登録の原因になるため、実務ではカラム名を明示的に指定する書き方が推奨されます。省略して使う場合は、カラムの順序・総数・データ型の3点を必ず確認しましょう。
-
MySQLテーブルのカラム名を取得する方法【SHOW・DESCRIBE活用ガイド】
SHOWコマンドでカラム名を取得するMySQLでは、SHOWコマンドを使うことで、テーブルのカラム(列)名を簡単に確認できます。カラム名だけでなく、データ型やNULL許可、キー情報なども一緒に取得できるのが特徴です。基本構文show columns from テーブル名;サンプルテーブルの作成まず、動作確認用に「DemoTable」というテーブルを作成します。mysql> create table DemoTable ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentFirstName varchar(
-
MySQLで列名を指定せずに値を挿入する方法|INSERT文の基本と実行例
列名を指定せずに値を挿入できるのか? はい、可能です。MySQLでは、INSERT文でテーブル名の後に列名を明示的に書かなくても、直接値を指定するだけでデータを挿入できます。その場合の基本構文は以下の通りです。 insert into yourTableName values(yourValue1,yourValue2,yourValue3,.....N); ただし、この方法を使う場合は、VALUES句に指定する値の「順序」と「数」が、テーブルに定義されているすべての列と完全に一致している必要がある点に注意してください。 サンプルテーブルの作成 まず、動作を確認するためのテーブルを作成しましょ