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 テーブルがあります。

DELETE と JOIN を使ってデータを削除する 1


例えば、StudentID が NULL のデータを削除するには、次のような DELETE 文で削除することができます。

DELETE
FROM    TestResult
WHERE   StudentID IS NULL;

[ 実行結果 ]
DELETE と JOIN を使ってデータを削除する 2

StudentID が NULL のレコードが削除されましたね。

複数のテーブルを結合して、DELETE 文でテーブルのデータを削除する

次は複数のテーブルを結合して、DELETE 文でテーブルのデータを削除してみましょう。

現在、Student, TestResult テーブルのデータは以下のような状態です。

DELETE と JOIN を使ってデータを削除する 3


次のクエリーで、LastName が Tanaka さんの TestResult を削除してみましょう。

DELETE  TR
FROM    TestResult AS TR
            INNER JOIN Student AS S
                ON TR.StudentID = S.StudentID
WHERE   S.LastName = 'Tanaka';

[ 実行結果 ]
DELETE と JOIN を使ってデータを削除する 4

LastName が Tanaka さんの StudentID は 2 なので、TestResultID が 2 のデータが削除されていますね。

© 2010-2024 SQL Server 入門