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

MySQLでINSERT文がエラーになる原因とは?VALUEとVALUESの違いを解説

MySQLでINSERT INTO文を実行した際にエラーが発生する場合、その原因の多くはVALUE()という誤った構文の使用にあります。正しくはVALUES()を使用する必要があります。

エラーの原因:VALUE() ではなく VALUES() を使う

MySQLでは、複数形の「VALUES」が正式なキーワードとして定義されています。単数形の「VALUE」を指定すると構文エラーとなるため、注意が必要です。

INSERTクエリの正しい構文は以下の通りです。

INSERT INTO テーブル名 VALUES(値1, 値2, .......N);

実際に試してみよう

1. テーブルを作成する

まず、サンプル用のテーブルを作成します。

mysql> create table DemoTable
(
    StudentId int,
    StudentName varchar(40),
    StudentAge int
);
Query OK, 0 rows affected (0.48 sec)

2. レコードを挿入する

次に、INSERTコマンドを使ってテーブルにデータを登録します。ここでは正しい構文であるVALUES()を使用しています。

mysql> INSERT INTO DemoTable VALUES(1001,'Tom',20);
Query OK, 1 row affected (0.11 sec)
mysql> INSERT INTO DemoTable VALUES(1002,'Mike',21);
Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO DemoTable VALUES(1003,'Sam',19);
Query OK, 1 row affected (0.08 sec)

3. データを確認する

SELECT文を実行して、テーブル内のすべてのレコードを表示します。

mysql> select *from DemoTable;

実行すると、以下のような結果が出力されます。

+-----------+-------------+------------+
| StudentId | StudentName | StudentAge |
+-----------+-------------+------------+
| 1001      | Tom         |         20 |
| 1002      | Mike        |         21 |
| 1003      | Sam         |         19 |
+-----------+-------------+------------+
3 rows in set (0.00 sec)

まとめ

MySQLでINSERT文のエラーに悩まされた場合は、まずVALUE()と書いていないか確認しましょう。正しいキーワードはVALUES()です。この単純なスペルミスは初心者によくある間違いですが、構文さえ守れば簡単に解決できます。

  1. Javaを使ってDATE型の値をMySQLカラムに挿入する方法【PreparedStatement活用】

    はじめに JavaからMySQLのDATE型カラムに日付データを挿入したい場合、PreparedStatementを使用するのが最も安全で推奨される方法です。SQLインジェクション対策にもなり、日付型の変換もスムーズに行えます。 本記事では、Javaプログラムから現在の日付をMySQLテーブルに挿入する手順を、サンプルコード付きでわかりやすく解説します。 1. サンプルテーブルの作成 まず、DATE型のカラム「ArrivalDate」を含むテーブルを作成します。以下はMySQLでの作成例です。 mysql> create table DemoTable( PassengerId

  2. JavaでMySQLデータベースにNULL値を挿入する方法

    JavaからデータベースにNULL値を挿入したいケースはよくあります。その場合、PreparedStatementのsetNull()メソッドを使用します。基本的な構文は以下の通りです。ps.setNull(インデックス番号, Types.NULL);この記事では、実際にサンプルを通してNULL値の挿入手順を解説します。1. テーブルの作成まず、MySQLでテスト用のテーブルを作成します。mysql> create table DemoTable1893 ( FirstName varchar(20) ); Query OK, 0 rows affected (0