シェア

はじめに

データの追加と削除は、データベースによって維持されるデータを制御できるようにする、かなり基本的な操作です。挿入するには、新しいごとに、テーブルの各の要件を満たす項目を指定します。削除するには、削除したいテーブル内の行の一致基準を提供します。

この記事では、MySQLのテーブルからデータを追加または削除するためにINSERTコマンドとDELETEコマンドを使用する方法を見ていきます。構文と、単一のステートメントで複数の行を操作するような、わずかに高度なバリエーションについても説明します。

テーブル構造の確認

INSERTコマンドを使用する前に、テーブルの構造を知っておく必要があります。これにより、テーブルの列、データ型、および制約によって課せられる要件に対応できます。

employeeという名前のテーブルの構造を見つけるには、MySQLのDESCRIBEコマンドを使用できます。

DESCRIBE employee;
+-------------+-----------------+------+-----+-------------------+-------------------+
Field | Type | Null | Key | Default | Extra |
+-------------+-----------------+------+-----+-------------------+-------------------+
employee_id | bigint unsigned | NO | PRI | NULL | auto_increment |
first_name | varchar(45) | NO | | NULL | |
last_name | varchar(45) | NO | | NULL | |
last_update | timestamp | NO | | CURRENT_TIMESTAMP | DEFAULT_GENERATED |
+-------------+-----------------+------+-----+-------------------+-------------------+
4 rows in set (0.00 sec)

出力には、テーブルの列名、データ型、デフォルト値などが表示されます。

別の方法として、テーブルを再作成するために使用できる情報を表示することもできます。この情報はSHOW CREATE TABLEコマンドで見つけることができます。

SHOW CREATE TABLE employee\G
*************************** 1. row ***************************
Table: employee
Create Table: CREATE TABLE `employee` (
`employee_id` bigint unsigned NOT NULL AUTO_INCREMENT,
`first_name` varchar(45) NOT NULL,
`last_name` varchar(45) NOT NULL,
`last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY `employee_id` (`employee_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)

ここでは、出力をより読みやすくするために\Gターミネータを使用し、出力を垂直に表示しています。テーブル作成時に手動で設定されたプロパティに加えて、出力にはMySQLのデフォルトにより設定された値も表示されます。

これらは、値を正しく挿入できるように、テーブル構造の良いアイデアを提供するはずです。

INSERTを使用してテーブルに新しいレコードを追加する

SQLのINSERTコマンドは、既存のテーブルにデータの行を追加するために使用されます。テーブル構造がわかったら、テーブルの列と、新しいレコードに挿入したい対応する値を一致させるコマンドを構築できます。

コマンドの基本的な構文は次のとおりです。

INSERT INTO my_table(column1, column2)
VALUES ('value1', 'value2');

列リストの列は、値リスト内で提供される値に直接対応します。

例として、上記のemployeeテーブルに新しい従業員を挿入するには、次のように入力できます。

INSERT INTO employee(first_name, last_name)
VALUES ('Bob', 'Smith');

ここでは、first_name列とlast_name列の値を提供し、他の列はデフォルト値で入力されるようにしています。テーブルをクエリすると、新しいレコードが追加されたことがわかります。

SELECT * FROM employee;
+-------------+------------+-----------+---------------------+
employee_id | first_name | last_name | last_update |
+-------------+------------+-----------+---------------------+
1 | Bob | Smith | 2021-01-26 09:56:42 |
+-------------+------------+-----------+---------------------+
1 row in set (0.00 sec)

INSERTを使用して一度に複数の行を追加する

レコードを一度に1つのステートメントで挿入するよりも、一度に複数の行を挿入する方が時間がかからず、効率的です。MySQLでは、同じテーブルに追加する複数の行を指定できます。新しい各行は括弧で囲まれ、括弧の各セットはコンマで区切られます。

複数レコード挿入の基本的な構文は次のとおりです。

INSERT INTO my_table(column_name, column_name_2)
VALUES
('value', 'value2'),
('value3', 'value4'),
('value5', 'value6');

参照しているemployeeテーブルの場合、次のように入力することで、1つのステートメントで4人の新しい従業員を追加できます。

INSERT INTO employee(first_name, last_name)
VALUES
('Abigail', 'Spencer'),
('Tamal', 'Wayne'),
('Katie', 'Singh'),
('Felipe', 'Espinosa');
Query OK, 4 rows affected (0.01 sec)
Records: 4 Duplicates: 0 Warnings: 0

DELETEを使用してテーブルから行を削除する

SQLのDELETEコマンドは、テーブルから行を削除するために使用され、INSERTの補完的なアクションとして機能します。テーブルから行を削除するには、WHERE句内で一致基準を提供することにより、ターゲットにする行を識別する必要があります。

基本的な構文は次のとおりです。

DELETE FROM <table>
WHERE <condition>;

たとえば、first_nameAbigailに設定されているemployeeテーブル内のすべての行を削除するには、次のように入力できます。

DELETE FROM employee
WHERE first_name = 'Abigail';
Query OK, 1 row affected (0.01 sec)

ここでの戻り値は、DELETEコマンドが処理され、1つの行が削除されたことを示しています。

DELETEを使用して一度に複数の行を削除する

WHERE句で指定された選択基準を操作することにより、DELETEで一度に複数のアイテムを削除できます。

たとえば、IDで複数の行を削除するには、次のように入力できます。

DELETE FROM employee
WHERE employee_id in (3,4);
Query OK, 2 rows affected (0.00 sec)

与えられたテーブルからすべての行を削除するために、WHERE句を省略することもできます。

DELETE FROM employee;
Query OK, 2 rows affected (0.00 sec)

ただし、DELETEを使用してテーブルのデータを空にすることは、テーブルをスキャンせずにデータを削除できるTRUNCATEコマンドほど効率的ではない可能性があることに注意してください(ただし、いくつかの注意点があります)。

結論

この記事では、MySQLテーブルからデータを挿入および削除する方法について説明しました。まず、有効なデータ挿入クエリを構築するのに役立つテーブル構造を見つける方法について説明しました。次に、INSERTコマンドを使用して、データを一度に1つずつ、およびバッチで挿入しました。最後に、クエリ条件に従ってテーブルからレコードを削除するDELETEコマンドについて説明しました。

かなり基本的なものですが、INSERTコマンドとDELETEコマンドは、テーブルが実際に維持するデータを管理するための最も便利なコマンドの一部です。それらの基本的な構文と操作を理解することで、データベース構造からレコードを迅速かつ効率的に追加または削除できます。

著者について
Justin Ellingwood

Justin Ellingwood

Justinは、2013年からデータベース、Linux、インフラストラクチャ、および開発者ツールについて執筆しています。彼は現在、妻と2羽のウサギと一緒にベルリンに住んでいます。彼は通常、三人称で書く必要はありません。これは関係者全員にとって安心です。