DELETE¶
テーブルから行を削除します。WHERE 句を使用して、削除する行を指定できます。サブクエリまたは追加のテーブルを使用して削除する行を識別する必要がある場合は、 USING 句でサブクエリまたはテーブルを指定します。
重要
TRUNCATE TABLE とは異なり、このコマンドは外部ファイルのロード履歴を削除 しません。ステージングされたファイルからテーブルにロードされた行を削除する場合、ファイルを変更して再度ステージングしない限り、そのファイルからデータを再度ロードすることはできません。
構文¶
必須パラメーター¶
table_name行が削除されるテーブルを指定します。
オプションのパラメーター¶
USING additional_table_or_query [, ... ]削除する行を特定するために WHERE 句で追加のテーブルを参照する必要がある場合は、 USING 句でそれらのテーブル名を指定します。USING 句を使用して、削除する行を識別するサブクエリを指定することもできます。
サブクエリを指定する場合は、サブクエリを括弧で囲みます。
複数のテーブルまたはクエリを指定する場合は、コンマを使用してそれらを区切ります。
WHERE condition削除する行を選択するために使用する条件を指定します。このパラメーターを省略すると、テーブル内のすべての行が削除されますが、テーブルは残ります。
使用上の注意¶
USING句を指定して JOIN に基づいて削除する場合、ターゲットテーブルの行がUSINGテーブルの複数の行と結合する可能性があります。結合された組み合わせのいずれかで DELETE 条件が満たされると、ターゲット行が削除されます。たとえば、列
(k number, v number)のあるテーブルtab1およびtab2がある場合、次のクエリを実行すると、
tab1の行はtab2の両方の行に対して結合されます。少なくとも1つの結合ペアが条件を満たすため、行は削除されます。その結果、ステートメントの完了後、
tab1は空になります。
例¶
自転車をリースしている組織が次のテーブルを使用しているとします。
leased_bicyclesという名前のテーブルには、リースされた自転車がリストされます。
returns_bicyclesという名前のテーブルには、最近返却された自転車がリストされます。これらの自転車は、リースされた自転車のテーブルから削除する必要があります。
テーブルの作成:
データのロード:
この例は、 WHERE 句を使用して指定された行を削除する方法を示しています。この例では、bicycle_ID で削除します。
削除後のデータを表示します。
この例は、 USING 句を使用して削除する行を指定する方法を示しています。この USING 句はreturned_bicyclesテーブルを指定します。このテーブルには、leased_bicyclesテーブルから削除される自転車の IDs がリストされています。 WHERE 句はleased_bicyclesテーブルをreturned_bicyclesテーブルに結合し、returned_bicyclesの対応する行と同じbicycle_ID を持つleased_bicyclesの行が削除されます。
(将来、不要または不適切になる可能性があるときに同じ行を再度削除しようとするのを避けるために、returned_bicyclesテーブルは同じトランザクションの一部として切り捨てられます。)
削除後のデータを表示します。
ここで、別の自転車が返却されたとします。
次のクエリは、leased_bicyclesテーブルから削除するbicycle_IDs を指定するための(テーブルではなく)サブクエリを含む USING 句を示しています。
削除後のデータを表示します。