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

MySQL INSERT IGNOREステートメントを無視し、重複する値がテーブルに挿入された場合はエラーを表示します


まずテーブルを作成しましょう-

mysql> create table DemoTable
(
   FirstName varchar(100)
);
Query OK, 0 rows affected (0.58 sec)

MySQLの公式ドキュメントに記載されているように、「 IGNOREがないと、テーブル内の既存のUNIQUEインデックスまたはPRIMARY KEY値を複製する行は、重複キーエラーを引き起こし、ステートメントは中止されます 」。

したがって、一意のインデックスを追加しましょう-

mysql> alter table DemoTable add unique index(FirstName);
Query OK, 0 rows affected (0.50 sec)
Records: 0 Duplicates: 0 Warnings: 0

挿入コマンドを使用して、テーブルにいくつかのレコードを挿入します。ご覧のとおり、INSERT IGNOREを使用していないため、重複レコードの挿入中にエラーが表示されます-

mysql> insert into DemoTable values('Chris');
Query OK, 1 row affected (0.32 sec)
mysql> insert into DemoTable values('Robert');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values('David');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('Robert');
ERROR 1062 (23000): Duplicate entry 'Robert' for key 'FirstName'
mysql> insert into DemoTable values('Chris');
ERROR 1062 (23000): Duplicate entry 'Chris' for key 'FirstName'
mysql> insert into DemoTable values('Sam');
Query OK, 1 row affected (0.12 sec)
>

selectステートメントを使用してテーブルのすべてのレコードを表示する-

mysql> select *from DemoTable;

これにより、次の出力が生成されます-

+-----------+
| FirstName |
+-----------+
| Chris     |
| David     |
| Robert    |
| Sam       |
+-----------+
4 rows in set (0.00 sec)

  1. MySQLテーブルで先行ゼロの値を選択して挿入します

    このために、LPAD()とともにINSERTINTOSELECTステートメントを使用できます。まずテーブルを作成しましょう- mysql> create table DemoTable1967    (    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,    UserId varchar(20)    ); Query OK, 0 rows affected (0.00 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql>

  2. Javaを使用してMySQLテーブルの値を表示する

    このために、ResultSetの概念を使用できます。接続には、MySQLJDBCDriverを使用します。 テーブルを作成しましょう- 例 mysql> create table demo87    -> (    -> name varchar(20),    -> age int    -> )    -> ; Query OK, 0 rows affected (0.62 挿入コマンド-を使用して、いくつかのレコードをテーブルに挿入します。 例 my