|
このステートメントにより、データベース テーブルまたはビューから指定された行を削除します。
DELETE [FROM] <テーブル名 | ビュー名> [エイリアス名] [FROM テーブル参照[, テーブル参照]... [WHERE 検索条件] テーブル名 ::= ユーザー定義名 ビュー名 ::= ユーザー定義名 エイリアス名 ::= ユーザー定義名 (エイリアス名は、2 つ目の FROM 句が使用されている場合には使用できませ ん。FROM 句を参照してください。) テーブル参照 ::= {OJ 外部結合の定義} | [データベース名.]テーブル名 [[AS] エイリアス名] | [データベース名.]ビュー名 [[AS] エイリアス名] | 結合定義 | (結合定義) | (テーブルサブクエリ) [AS] エイリアス名 [(列名[, 列名]...)] 外部結合の定義 ::= テーブル参照 外部結合タイプ JOIN テーブル参照 ON 検索条件 外部結合タイプ ::= LEFT [OUTER] | RIGHT [OUTER] | FULL [OUTER] 検索条件 ::= 検索条件 AND 検索条件 | 検索条件 OR 検索条件 | NOT 検索条件 | (検索条件) | 述部 データベース名 ::= ユーザー定義名 ビュー名 ::= ユーザー定義名 結合定義 ::= テーブル参照 [結合タイプ] JOIN テーブル参照 ON 検索条件 | テーブル参照 CROSS JOIN テーブル参照 | 外部結合の定義 結合タイプ ::= INNER | LEFT [OUTER] | RIGHT [OUTER] | FULL [OUTER] テーブル サブクエリ ::= クエリ スペック [[UNION [ALL] クエリ スペック]...]
INSERT、UPDATE、および DELETE ステートメントはアトミックな方法で動作します。つまり、複数の行の挿入、更新、または削除に失敗した場合、同じステートメントによって実行された前の行の挿入、更新、または削除がすべてロール バックされます。
オプションの第 2 FROM 句と、行が削除されるテーブル(「削除テーブル」と呼びます)への参照に関して混乱が生じる可能性があります。第 2 FROM 句に削除テーブルが現れる場合、その出現のうちの 1 つは、行が削除されるテーブルと同じインスタンスになります。
たとえば、ステートメント DELETE t1 FROM t1, t2 WHERE t1.c1 = t2.c1
の場合、DELETE の直後の t1 と FROM の後の t1 は、テーブル t1 の同じインスタンスです。したがって、このステートメントは DELETE t1 FROM t2 WHERE t1.c1 = t2.c1
と同じことになります。
第 2 FROM 句に削除テーブルが複数回現れる場合、その出現のうちの 1 つは削除テーブルと同じインスタンスであると識別される必要があります。第 2 FROM 句の参照のうち、削除テーブルと同じインスタンスであると見なされるのは、エイリアスが指定されていない参照です。
したがって、ステートメント DELETE t1 FROM t1 a, t1 b WHERE a.c1 = b.c1
の場合、第 2 FROM 句の t1 のインスタンスはどちらもエイリアスを持っているため、これは正しくありません。次であれば有効です。DELETE t1 FROM t1, t1 b WHERE t1.c1 = b.c1
第 2 FROM 句には次の条件が適用されます。
DELETE t1 a FROM t2 WHERE a.c1 = t2.c1
とすると、次のエラーが返されます。
DELETE t1 FROM t1 a, t1 b WHERE a.c1 = b.c1
とすると、次のエラーが返されます。
次のステートメントによって、サンプル データベースの person テーブルから名前 Ellen の行が削除されます。
次のステートメントによって、サンプル データベースの course テーブルから Modern European History(HIS 305)の行が削除されます。
|