Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL リファレンス » SQL の使用 » SQL 文 » SQL 文 (A ~ D)

 

DELETE 文

この文は、データベースからローを削除するために使用します。

構文
DELETE [ row-limitation ] 
[ FROM ] [ owner.]table-expression
[ FROM table-list [,...] ]
[ WHERE search-condition ]
[ ORDER BY { expression | integer } [ ASC | DESC ], ... ]
[ OPTION( query-hint, ... ) ]
table-list : 
table-name [,...]  
table-name : 
[ owner.]base-table-name [ [ AS ] correlation-name ]
| [ owner.]view-name [ [ AS ] correlation-name ]
| derived-table
derived-table : 
( select-statement ) 
[ AS ] correlation-name [ ( column-name [,... ] ) ]
row-limitation :
  FIRST | TOP n [ START AT m ]
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 句は、ローの削除を開始するテーブルの位置を示します。DELETE 文に第 2 FROM 句を指定すると、ジョインに基づいて指定したテーブルから削除するローが修飾されます。第 2 FROM 句がある場合、WHERE 句はこの第 2 FROM 句のローの条件を与えます。

    FROM table-expression 句を使用すると、ジョインに基づいて削除を実行できます。table-expression には、KEY ジョインや NATURAL ジョインなどの任意の複雑なテーブル式を指定できます。FROM 句とジョインの詳細については、FROM 句を参照してください。

    次の文は、相関名を使用する 2 つの FROM 句を含む DELETE 文内のテーブル名に、潜在的なあいまいさが存在することを示しています。
    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 句のローの条件を与えます。

  • ORDER BY 句   ローのソート順を指定します。通常、ローを更新する順序は重要ではありません。ただし、FIRST 句または TOP 句と一緒に使用する場合は、ローを更新する順序が意味を持ちます。

    ORDER BY 句ではカラムの順序数を使用できません。

    ORDER BY リストの各項目には、昇順の場合 (デフォルト) は ASC、降順の場合は DESC のラベルを付けることができます。

  • OPTION 句   この句は、文を実行するためのヒントを指定するときに使用します。次のヒントがサポートされます。

    • MATERIALIZED VIEW OPTIMIZATION option-value
    • FORCE OPTIMIZATION
    • FORCE NO OPTIMIZATION
    • option-name = option-value

    これらのオプションの詳細については、SELECT 文の OPTIONS 句の説明を参照してください。

備考

DELETE 文を使用してデータを大量に削除する場合も、カラム統計は更新されます。

ビューを定義する SELECT 文が FROM 句の中でテーブルを 1 つだけ持ち、GROUP BY 句と集合関数を含まないか、または UNION 句を伴わない場合は、DELETE 文をビュー上で使用できます。

ビューを定義しているクエリ指定が更新可能な場合は、ビューに対して削除操作を実行できます。派生の関係で更新不可能なビューの識別については、通常のビューの操作を参照してください。

パーミッション

テーブルに対する DELETE パーミッションが必要です。

関連する動作

なし

参照
標準と互換性
  • SQL/2003   コア機能。FROM 句での複数のテーブルの使用は、ベンダ拡張。

FinancialData テーブルから、2000 より前のデータすべてを削除します。

DELETE
FROM FinancialData
WHERE Year < 2000;

SalesOrderItems テーブルの最初から 10 の注文を削除します。各注文の出荷日は 2001-01-01 であり、地域は Central です。

DELETE TOP 10
FROM SalesOrderItems
FROM SalesOrders
WHERE SalesOrderItems.ID = SalesOrders.ID
  and ShipDate < '2001-01-01' and Region ='Central'
ORDER BY ShipDate ASC;

独立性レベル 3 で文を実行し、データベースから部署 600 を削除します。

DELETE FROM Departments
WHERE DepartmentID = 600
OPTION( isolation_level = 3 );