doc-exports/docs/dws/dev/dws_06_0231.html
Lu, Huayi a24ca60074 DWS DEVELOPER 811 version
Reviewed-by: Hasko, Vladimir <vladimir.hasko@t-systems.com>
Co-authored-by: Lu, Huayi <luhuayi@huawei.com>
Co-committed-by: Lu, Huayi <luhuayi@huawei.com>
2023-01-19 13:37:49 +00:00

76 lines
18 KiB
HTML

<a name="EN-US_TOPIC_0000001098830680"></a><a name="EN-US_TOPIC_0000001098830680"></a>
<h1 class="topictitle1">DELETE</h1>
<div id="body8662426"><div class="section" id="EN-US_TOPIC_0000001098830680__sc38eadebc8e74e1e8200bca116ca55ef"><h4 class="sectiontitle">Function</h4><p id="EN-US_TOPIC_0000001098830680__a7eac4568d9ee4622a714b080a77cdd6c"><strong id="EN-US_TOPIC_0000001098830680__b5364787485426">DELETE</strong> deletes rows that satisfy the <strong id="EN-US_TOPIC_0000001098830680__b1306882285426">WHERE</strong> clause from the specified table. If the <strong id="EN-US_TOPIC_0000001098830680__en-us_topic_0040044931_b5051053885426">WHERE</strong> clause does not exist, all rows in the table will be deleted. The result is a valid, but an empty table.</p>
</div>
<div class="section" id="EN-US_TOPIC_0000001098830680__s382c620cdede4a91ba5d429f091c14c9"><h4 class="sectiontitle">Precautions</h4><ul id="EN-US_TOPIC_0000001098830680__u83811bebe7004526bcd5b0d5cb5278d2"><li id="EN-US_TOPIC_0000001098830680__l04a6aa14ca12431283fa53fc564ca0ea">You must have the DELETE permission on the table to delete from it, as well as the SELECT permission for any table in the <strong id="EN-US_TOPIC_0000001098830680__b4078822385426">USING</strong> clause or whose values are read in the <strong id="EN-US_TOPIC_0000001098830680__b3154968885426">condition</strong>.</li><li id="EN-US_TOPIC_0000001098830680__li66221323925"><strong id="EN-US_TOPIC_0000001098830680__b84235270683616">DELETE</strong> can be used for row-store tables if they have primary key constraints or if the execution plan can be pushed down.</li><li id="EN-US_TOPIC_0000001098830680__li11529051241"><strong id="EN-US_TOPIC_0000001098830680__b36607717083726">DELETE</strong> can be used for column-store tables only if the execution plan can be pushed down.</li><li id="EN-US_TOPIC_0000001098830680__l6ef7a5e157f242c7b44da063f42fd193">For column-store tables, the <strong id="EN-US_TOPIC_0000001098830680__en-us_topic_0058966033_b842352706173053">RETURNING</strong> clause is currently not supported.</li></ul>
</div>
<div class="section" id="EN-US_TOPIC_0000001098830680__s63e68d20fc8a4670b54b531fc5722bb9"><h4 class="sectiontitle">Syntax</h4><div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001098830680__s60d8dda324084db98740133562841b8c"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
<span class="normal">4</span>
<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span><span class="p">[</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">RECURSIVE</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="n">with_query</span><span class="w"> </span><span class="p">[,</span><span class="w"> </span><span class="p">...]</span><span class="w"> </span><span class="p">]</span><span class="w"></span>
<span class="k">DELETE</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">ONLY</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="k">table_name</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="k">alias</span><span class="w"> </span><span class="p">]</span><span class="w"></span>
<span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">USING</span><span class="w"> </span><span class="n">using_list</span><span class="w"> </span><span class="p">]</span><span class="w"></span>
<span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">condition</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="k">CURRENT</span><span class="w"> </span><span class="k">OF</span><span class="w"> </span><span class="k">cursor_name</span><span class="w"> </span><span class="p">]</span><span class="w"></span>
<span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="n">RETURNING</span><span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="n">output_expr</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="n">output_name</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="err">}</span><span class="w"> </span><span class="p">[,</span><span class="w"> </span><span class="p">...]</span><span class="w"> </span><span class="err">}</span><span class="w"> </span><span class="p">];</span><span class="w"></span>
</pre></div></td></tr></table></div>
</div>
</div>
<div class="section" id="EN-US_TOPIC_0000001098830680__s0568dfe900e948eaa67d0a335c26701c"><h4 class="sectiontitle">Parameter Description</h4><ul id="EN-US_TOPIC_0000001098830680__ua3cdf4f3c73f4d4f9f931f40929ad83b"><li id="EN-US_TOPIC_0000001098830680__ld38062ebead941c284103cc83c53bd16"><strong id="EN-US_TOPIC_0000001098830680__en-us_topic_0059778379_b19065306508">WITH [ RECURSIVE ] with_query [, ...]</strong><p id="EN-US_TOPIC_0000001098830680__a986a116f7840433bb0a19cf9c64842f8">The <strong id="EN-US_TOPIC_0000001098830680__en-us_topic_0058966196_b84235270693837">WITH</strong> clause allows you to specify one or more subqueries that can be referenced by name in the primary query, equal to temporary table.</p>
<p id="EN-US_TOPIC_0000001098830680__a3d6a7fb23a7e433dac3e7db94ec6595e">If <strong id="EN-US_TOPIC_0000001098830680__en-us_topic_0058966196_b84235270693847">RECURSIVE</strong> is specified, it allows a <strong id="EN-US_TOPIC_0000001098830680__en-us_topic_0058966196_b84235270693853">SELECT</strong> subquery to reference itself by name.</p>
<p id="EN-US_TOPIC_0000001098830680__ac389e37c7363438aa52da1c125ad2cad">The with_query detailed format is as follows:</p>
<p id="EN-US_TOPIC_0000001098830680__aaedaa4c840fc4a798741b95f7ee11b4a">with_query_name [ ( column_name [, ...] ) ] AS</p>
<p id="EN-US_TOPIC_0000001098830680__af9616d5803644d13a798bc1eb9fdc1d2">( {select | values | insert | update | delete} )</p>
<p id="EN-US_TOPIC_0000001098830680__ac5670fa7fb5541f8b9d4e802d57019d9">-- <strong id="EN-US_TOPIC_0000001098830680__b52561578214026">with_query_name</strong> specifies the name of the result set generated by a subquery. Such names can be used to access the result sets of </p>
<p id="EN-US_TOPIC_0000001098830680__aebe8cb0bb66c45c3abf1f0ba36b76e97">subqueries in a query.</p>
<p id="EN-US_TOPIC_0000001098830680__a23e83c12a68745fd9c8c34d1b448d364"><strong id="EN-US_TOPIC_0000001098830680__en-us_topic_0058966196_b842352706112838">column_name</strong> specifies the column name displayed in the subquery result set.</p>
<p id="EN-US_TOPIC_0000001098830680__a232c160c065c4b68829d3efca31623fe">Each subquery can be a <strong id="EN-US_TOPIC_0000001098830680__en-us_topic_0058966196_b84235270693925">SELECT</strong>, <strong id="EN-US_TOPIC_0000001098830680__en-us_topic_0058966196_b84235270693928">VALUES</strong>, <strong id="EN-US_TOPIC_0000001098830680__en-us_topic_0058966196_b84235270693932">INSERT</strong>, <strong id="EN-US_TOPIC_0000001098830680__en-us_topic_0058966196_b84235270693936">UPDATE</strong> or <strong id="EN-US_TOPIC_0000001098830680__en-us_topic_0058966196_b84235270693940">DELETE</strong> statement.</p>
</li><li id="EN-US_TOPIC_0000001098830680__la448a7d3789c4ff58ff028d37d8be671"><strong id="EN-US_TOPIC_0000001098830680__a9a91341bf47d4e76ba08c2b1ea4c14c4">ONLY</strong><p id="EN-US_TOPIC_0000001098830680__a747e586cb2464423b50a456e2c0513f5">If <strong id="EN-US_TOPIC_0000001098830680__b19082625314051">ONLY</strong> is specified, only that table is deleted. If <strong id="EN-US_TOPIC_0000001098830680__b14658841034051">ONLY</strong> is not specified, this table and all its sub-tables are deleted.</p>
</li><li id="EN-US_TOPIC_0000001098830680__lc1ea1869abc947bfbff43525ed13b5bb"><strong id="EN-US_TOPIC_0000001098830680__aa1749132c9aa4b4fa4b4e85e5d1573ea">table_name</strong><p id="EN-US_TOPIC_0000001098830680__a76155b18f70d4296b9d10f43acf2290b">Specifies the name (optionally schema-qualified) of a target table.</p>
<p id="EN-US_TOPIC_0000001098830680__a22f6113763154108ab395975a7a305be">Value range: an existing table name</p>
</li><li id="EN-US_TOPIC_0000001098830680__l240d9da52c064a12a06679599c3a27f1"><strong id="EN-US_TOPIC_0000001098830680__a208b1cefb34548f2bbf0ae61a8813021">alias</strong><p id="EN-US_TOPIC_0000001098830680__a0e888f1cf58e48ce93b2144f8cbd6e53">Specifies the alias for the target table.</p>
<p id="EN-US_TOPIC_0000001098830680__ac8936d6d732b47959e8046286dc38da4">Value range: a string. It must comply with the naming convention.</p>
</li><li id="EN-US_TOPIC_0000001098830680__l6f2bf2ae63094b4488040532097a8a6b"><strong id="EN-US_TOPIC_0000001098830680__a6710d01abd094654b331efd5b25bac18">using_list</strong><p id="EN-US_TOPIC_0000001098830680__a8ad40173192343098f7baa98c38d5c55">Specifies the <strong id="EN-US_TOPIC_0000001098830680__b10981112153313">USING</strong> clause.</p>
</li><li id="EN-US_TOPIC_0000001098830680__l796ce0e3e76841169a171ff3849bff25"><strong id="EN-US_TOPIC_0000001098830680__ac7b4f6dd455c4c3280cfba686de23671">condition</strong><p id="EN-US_TOPIC_0000001098830680__abbc05041c0314d328643ead456cc0b4c">Specifies an expression that returns a value of type <span id="EN-US_TOPIC_0000001098830680__text87165226913">boolean</span>. Only rows for which this expression returns <strong id="EN-US_TOPIC_0000001098830680__b105851913194017">true</strong> will be deleted.</p>
</li><li id="EN-US_TOPIC_0000001098830680__lb6bdf7fcbc8b466e89fbf637d87802ef"><strong id="EN-US_TOPIC_0000001098830680__a824b9469044446a0b29868649908565f">WHERE CURRENT OF cursor_name</strong><p id="EN-US_TOPIC_0000001098830680__a0f4ebdcee5f04bac94884771f9299c3a">Not supported currently. Only syntax interface is provided.</p>
</li><li id="EN-US_TOPIC_0000001098830680__lf379dc2a421f40598087bf2883dca079"><strong id="EN-US_TOPIC_0000001098830680__a446588ca9c54412d9e6f6181b3ac2d2d">output_expr</strong><p id="EN-US_TOPIC_0000001098830680__a1309b8a6bf2940699db70a7c4edc14bb">Specifies an expression to be computed and returned by the <strong id="EN-US_TOPIC_0000001098830680__b26532261182532">DELETE</strong> command after each row is deleted. The expression can use any column names of the table. Write * to return all columns.</p>
</li><li id="EN-US_TOPIC_0000001098830680__lb47a5f4353204aedaa5dbb720eee53b4"><strong id="EN-US_TOPIC_0000001098830680__a918a35ac35824f1385844ecd39799341">output_name</strong><p id="EN-US_TOPIC_0000001098830680__a347e3f4a9382451aa979de7a97d98de6">Specifies a name to use for a returned column.</p>
<p id="EN-US_TOPIC_0000001098830680__ae446c85782dd46bfbe1a48301d48ee89">Value range: a string. It must comply with the naming convention.</p>
</li></ul>
</div>
<div class="section" id="EN-US_TOPIC_0000001098830680__sc62f0ffeacde4228a7e8c56b5a2b85f1"><h4 class="sectiontitle">Examples</h4><p id="EN-US_TOPIC_0000001098830680__p14184155072415">Create the <strong id="EN-US_TOPIC_0000001098830680__b4686451894051"><span id="EN-US_TOPIC_0000001098830680__text10184350142420">tpcds.</span>customer_address_bak</strong> table.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001098830680__screen17521554122411"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">tpcds</span><span class="p">.</span><span class="n">customer_address_bak</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">tpcds</span><span class="p">.</span><span class="n">customer_address</span><span class="p">;</span><span class="w"></span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001098830680__p1118445002416">Delete employees whose <strong id="EN-US_TOPIC_0000001098830680__b242734454051">ca_address_sk</strong> is less than <strong id="EN-US_TOPIC_0000001098830680__b1339515484051">14888</strong> in the <strong id="EN-US_TOPIC_0000001098830680__b637877264051"><span id="EN-US_TOPIC_0000001098830680__text91841050112414">tpcds.</span>customer_address_bak</strong> table.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001098830680__screen1986105612419"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">DELETE</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">tpcds</span><span class="p">.</span><span class="n">customer_address_bak</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">ca_address_sk</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">14888</span><span class="p">;</span><span class="w"></span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001098830680__p1363726154112">Delete the employees whose <strong id="EN-US_TOPIC_0000001098830680__b71785591203">ca_address_sk</strong> is <strong id="EN-US_TOPIC_0000001098830680__b14178559162017">14891</strong>, <strong id="EN-US_TOPIC_0000001098830680__b71789593204">14893</strong>, and <strong id="EN-US_TOPIC_0000001098830680__b617975914208">14895</strong> from <strong id="EN-US_TOPIC_0000001098830680__b3179195915201"><span id="EN-US_TOPIC_0000001098830680__text1179115902012">tpcds.</span>customer_address_bak</strong>.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001098830680__screen364004111415"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">DELETE</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">tpcds</span><span class="p">.</span><span class="n">customer_address_bak</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">ca_address_sk</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="p">(</span><span class="mi">14891</span><span class="p">,</span><span class="mi">14893</span><span class="p">,</span><span class="mi">14895</span><span class="p">);</span><span class="w"></span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001098830680__p1184115072410">Delete all data in the <strong id="EN-US_TOPIC_0000001098830680__b955804304051"><span id="EN-US_TOPIC_0000001098830680__text171842050202412">tpcds.</span>customer_address_bak</strong> table.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001098830680__screen49030112510"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">DELETE</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">tpcds</span><span class="p">.</span><span class="n">customer_address_bak</span><span class="p">;</span><span class="w"></span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001098830680__p13851105724112">Use a subquery (to delete the row-store table <strong id="EN-US_TOPIC_0000001098830680__b220564517126"><span id="EN-US_TOPIC_0000001098830680__text98824190186">tpcds.</span>warehouse_t30</strong>) to obtain a temporary table <strong id="EN-US_TOPIC_0000001098830680__b82053451125">temp_t</strong>, and then query all data in the temporary table <strong id="EN-US_TOPIC_0000001098830680__b32052457124">temp_t</strong>.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001098830680__screen24191918195514"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">WITH</span><span class="w"> </span><span class="n">temp_t</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="p">(</span><span class="k">DELETE</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">tpcds</span><span class="p">.</span><span class="n">warehouse_t30</span><span class="w"> </span><span class="n">RETURNING</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">temp_t</span><span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"></span>
</pre></div></td></tr></table></div>
</div>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="dws_06_0227.html">DML Syntax</a></div>
</div>
</div>