データベースからローを削除します。
DELETE [ row-limitation ] [ FROM ] [ owner.]table-or-view [ [ AS ] correlation-name ] [ WHERE search-condition ] [ ORDER BY { expression | integer } [ ASC | DESC ], ... ] [ OPTION( query-hint, ... ) ]
DELETE [ row-limitation ] [ FROM ] [ owner.]table-or-view [ [ AS ] correlation-name ] [ FROM table-expression ] [ WHERE search-condition ] [ ORDER BY { expression | integer } [ ASC | DESC ], ... ] [ OPTION( query-hint, ... ) ]
table-or-view : identifier
row-limitation : FIRST | TOP { ALL | limit-expression } [ START AT startat-expression ] limit-expression : simple-expression startat-expression : simple-expression simple-expression : integer | variable | ( simple-expression ) | ( simple-expression { + | - | * } simple-expression )
query-hint : MATERIALIZED VIEW OPTIMIZATION option-value | FORCE OPTIMIZATION | FORCE NO OPTIMIZATION | option-name = option-value
table-expression : ジョインを含む完全なテーブル式。FROM 句を参照してください。
option-name :identifier
option-value : hostvar (許可されたインジケータ) | string | identifier | number
row-limitation 句 ローを制限する句を使用することによって、削除されるローを WHERE 句を満たすローのサブセットのみに制限できます。TOP 引数と START AT 引数には、ホスト変数、整数定数、または整数変数を使用した簡単な算術演算を指定できます。TOP 引数は 0 以上である必要があります。START AT 引数は 0 より大きい値にする必要があります。これらの句を指定する場合は、ローの順序を意味のあるものにするために ORDER BY 句も指定します。
FROM 句 FROM 句は、ローが削除されるテーブルを示します。構文 2 では、DELETE 文の第 2 FROM 句によって、他のテーブルとのジョインに基づいて指定されたテーブルから削除されるローが決定されます。table-expression には、任意の複雑なテーブル式 (抽出テーブル、KEY ジョイン、および NATURAL ジョインを含む) を指定できます。
次の例は、構文 2 が使用されたときに、相関名が照合される方法を示します。次の文では、
DELETE FROM table_1 FROM table_1 AS alias_1, table_2 AS alias_2 WHERE ... |
テーブル table_1 の相関名は、第 1 FROM 句にはありませんが、第 2 FROM 句には含まれています。この場合、第 1 FROM 句の中の table_1 は、第 2 FROM 句では alias_1 で識別されます。この文の中に table_1 のインスタンスは 1 つしかありません。これは、同じ文の中で相関名を使用する方法と使用しない方法の両方を使ってテーブルを識別する場合、テーブルの 2 つのインスタンスが考慮されるという一般規則の例外として許可されています。
ただし、次の例では、第 2 FROM 句に table_1 のインスタンスが 2 つあります。この文は構文エラーで失敗します。第 2 FROM 句の table_1 のインスタンスのうち、どれが第 1 FROM 句の table_1 の最初のインスタンスと一致するのかが明確ではないためです。
DELETE FROM table_1 FROM table_1 AS alias_1, table_1 AS alias_2 WHERE ... |
WHERE 句 DELETE 文は、WHERE 句の条件を満たすすべてのローを削除します。WHERE 句を指定しない場合、指定したテーブルからすべてのローは削除されます。第 2 FROM 句がある場合、WHERE 句はこの第 2 FROM 句の table-expression のローの条件を与えます。
ORDER BY 句 削除されるローのソート順を指定します。通常、ローを更新する順序は重要ではありません。ただし、FIRST 句または TOP 句と一緒に使用する場合は、順序が重要です。
ORDER BY 句ではカラムの順序数を使用できません。
ORDER BY リストの各項目には、昇順の場合 (デフォルト) は ASC、降順の場合は DESC のラベルを付けることができます。
OPTION 句 この句は、文を実行するためのヒントを指定するときに使用します。次のヒントがサポートされます。
OPTION( isolation_level = ... )
の指定は、クエリの独立性レベルを指定する他のいずれの手段よりも優先されます。
DELETE 文を使用してデータを大量に削除する場合も、カラム統計は更新されます。
テーブルのすべてのローを削除する場合、より効率的な TRUNCATE TABLE 文の使用を検討してください。
ビューを定義しているクエリ指定が更新可能な場合は、ビューに対して DELETE 操作を実行できます。ビューは、ビューを定義している SELECT 文の FROM 句のテーブルが 1 つのみであり、かつ、DISTINCT 句、GROUP BY 句、WINDOW 句、集合関数、および集合演算子 (UNION または INTERSECT など) を含んでいない場合に、更新可能です。
テーブルの所有者であるか、テーブルに対する SELECT 権限および DELETE 権限を持っている必要があります。
なし
SQL/2008 構文 1 は SQL/2008 標準のコア機能ですが、構文 2 は Transact-SQL のベンダー拡張です。構文 1 の次の機能はベンダー拡張です。
オプションの FROM キーワード。
row-limitation 句と ORDER BY 句。
OPTION 句。
FinancialData テーブルから、2000 年より前のデータすべてを削除します。
DELETE FROM GROUPO.FinancialData WHERE Year < 2000; |
SalesOrderItems テーブルの最初から 10 の注文を削除します。各注文の出荷日は 2001-01-01 であり、地域は Central です。
DELETE TOP 10 FROM GROUPO.SalesOrderItems FROM GROUPO.SalesOrders WHERE SalesOrderItems.ID = SalesOrders.ID and ShipDate < '2001-01-01' and Region ='Central' ORDER BY ShipDate ASC; |
独立性レベル 3 で文を実行し、データベースから部署 600 を削除します。
DELETE FROM GROUPO.Departments WHERE DepartmentID = 600 OPTION( isolation_level = 3 ); |
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |