データを削除する(DELETE文)

広告

テーブルに追加済みのデータを削除するには DELETE 文を使用します。ここでは MariaDB でテーブルに追加済みのデータを削除する方法について解説します。

(2021 年 08 月 08 日公開 / 2021 年 08 月 08 日更新)

データを削除する

テーブルに追加済みのデータを削除するには DELETE 文を使用します。書式は次のとおりです。

DELETE [LOW_PRIORITY] [QUICK] [IGNORE] 
  FROM tbl_name [PARTITION (partition_list)]
  [WHERE where_condition]
  [ORDER BY ...]
  [LIMIT row_count]
  [RETURNING select_expr 
    [, select_expr ...]]

基本的な使い方としては WHERE 句を使って削除する対象のデータを指定しテーブルからデータを削除します。

DELETE FROM tbl_name
  WHERE where_condition

指定したテーブル名( where_condition )に格納されているデータを削除します。 WHERE 句を指定しなければテーブルに格納されているすべてのデータが削除されます。特定のデータのみ削除したい場合は WHERE 句を指定してください。

[例] id カラムの値が 10 のデータを削除する DELETE FROM mytbl WHERE id = 10; [例]全てのデータを削除する DELETE FROM mytbl;

なおテーブルのすべてのデータを削除するには TRUNCATE 文を使用することもできます。( TRUNCATE 文については「すべてのデータを削除する(TRUNCATE TABLE文)」を参照されてください)。

それでは実際に試してみます。次のようなテーブルを作成しました。そしてデータを 5 つ追加しました。

create table user (name varchar(10), age int);

insert into user values('Nishi', 30),('Oota', 19),('Suzuki', 24),('Takenaka', 32),('Yoda', 26);

データを削除する(1)

user テーブルには 5 つのデータが格納されています。

select * from user;

データを削除する(2)

それでは age カラムの値が 30 以上のデータを削除します。次のように実行してください。

delete from user where age >= 30;

データを削除する(3)

対象のデータの削除が完了しました。それでは確認のためにあらためて user テーブルのデータを取得してみます。

データを削除する(4)

age カラムの値が 30 以上だった 2 つのデータが削除されていることが確認できました。

今度はテーブルに含まれるすべてのデータを削除します。次のように実行してください。

delete from user;

データを削除する(5)

すべてのデータの削除が完了しました。それでは確認のためにあらためて user テーブルのデータを取得してみます。

データを削除する(6)

user テーブルからすべのデータが削除されていることが確認できました。

削除するデータの数を指定する(LIMIT句)

DELETE 文でデータの削除を行うとき、一度の DELETE 文で削除するデータの数を LIMIT 句を使って指定することができます。次のような書式を使います。

DELETE FROM tbl_name
  WHERE where_condition
  LIMIT row_count

LIMIT のあとに一度に削除するデータ数の上限を記述します。たとえば上限を 3 に設定した場合、削除の対象となるデータが何件あったとしても、先頭から順に最大 3 件のデータだけが削除されます。

それでは実際に試してみます。今回例として user というテーブルを作成しました。現在 user テーブルには次のようなデータが格納されています。

削除するデータの数を指定する(LIMIT句)(1)

WHERE 句を指定せずに DELTE 文を実行するとすべてのデータが削除されますが、今回は LIMIT 句を指定して最大 3 つのデータを削除します。次のように実行してください。

delete from user limit 3;

削除するデータの数を指定する(LIMIT句)(2)

データを削除後の user テーブルに格納されているデータを確認します。

削除するデータの数を指定する(LIMIT句)(3)

user テーブルに格納されていたデータの中で、先頭のデータから 3 つのデータが削除されているのが確認できました。

降順または昇順に並び替えてから削除する(ORDER BY句)

DELETE 文でデータを更新するときに、指定したカラムの値を基準に昇順または降順に並び替えた後でデータを削除することができます。次のような書式を使います。

DELETE FROM tbl_name
  WHERE where_condition
  ORDER BY ...

ORDER BY のあとに記述となるカラム名を指定します。並べ替える方法は ASC を指定した場合は昇順、 DESC を指定した場合は降順で並べ替えを行います。省略した場合は昇順です。

※ あくまで削除を行う時に並べ替えを行うだけで、実際に格納されているデータを並べ替えて格納するわけではありません。

それでは実際に試してみます。今回例として user というテーブルを作成しました。現在 user テーブルには次のようなデータが格納されています。

降順または昇順に並び替えてから削除する(ORDER BY句)(1)

user テーブルに含まれるすべてのデータの中で最大 3 つのデータを対象に削除を行います。何も指定しない場合は先頭のデータから 3 つのデータが削除されますが、今回は age カラムの値を対象として昇順に並び替えた上で削除します。次のように実行してください。

delete from user order by age asc limit 3;

降順または昇順に並び替えてから削除する(ORDER BY句)(2)

データを削除後の user テーブルに格納されているデータを確認します。

降順または昇順に並び替えてから削除する(ORDER BY句)(3)

user テーブルのデータの中で、 age カラムの値が小さいものから順に 3 つのデータが削除されていることが確認できました。

-- --

MariaDB でテーブルに追加済みのデータを削除する方法について解説しました。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。