DELETE と JOIN を使ってデータを削除する
DELETE と JOIN を使ってデータを削除する
前回 「 UPDATE と JOIN を使ってデータを更新する 」 では、 UPDATE と JOIN を使って、テーブルの値を更新しました。
今回は DELETE 文を使って、テーブルのデータを削除してみましょう。
これらのテーブルを使いますので、こちら のスクリプトを実行して、テーブルを再生成しておいてください。
DELETE 文でテーブルのデータを削除する
一番シンプルな DELETE 文の構文は次のようなものになります。
DELETE FROM [テーブル1] WHERE [条件];
次のように書いても同じ意味です。 AS を使って T という、エイリアス(別名)を指定しています。 複数のテーブルを結合して更新したい時にはこちらを使います。
DELETE T FROM [テーブル1] AS T WHERE [条件];
まずは、シンプルな DELETE 文を見てみましょう。 以下のような TestResult テーブルがあります。
例えば、StudentID が NULL のデータを削除するには、次のような DELETE 文で削除することができます。
DELETE FROM TestResult WHERE StudentID IS NULL;
[ 実行結果 ]
StudentID が NULL のレコードが削除されましたね。
複数のテーブルを結合して、DELETE 文でテーブルのデータを削除する
次は複数のテーブルを結合して、DELETE 文でテーブルのデータを削除してみましょう。
現在、Student, TestResult テーブルのデータは以下のような状態です。
次のクエリーで、LastName が Tanaka さんの TestResult を削除してみましょう。
DELETE TR FROM TestResult AS TR INNER JOIN Student AS S ON TR.StudentID = S.StudentID WHERE S.LastName = 'Tanaka';
[ 実行結果 ]
LastName が Tanaka さんの StudentID は 2 なので、TestResultID が 2 のデータが削除されていますね。