首页 > 数据库 > > SQL语法-DELETE
DELETE从指定的表里删除满足WHERE子句的行。如果WHERE子句不存在,将删除表中所有行,结果只保留表结构。
[ WITH [ RECURSIVE ] with_query [, ...] ]
DELETE FROM [ ONLY ] table_name [ * ] [ [ AS ] alias ]
[ USING using_list ]
[ WHERE condition | WHERE CURRENT OF cursor_name ]
[ RETURNING { * | { output_expr [ [ AS ] output_name ] } [, ...] } ];
用于声明一个或多个可以在主查询中通过名字引用的子查询,相当于临时表。
如果声明了RECURSIVE,那么允许SELECT子查询通过名字引用它自己。
其中with_query的详细格式为:
with_query_name [ ( column_name [, ...] ) ] AS
( {select | values | insert | update | delete} )
– with_query_name指定子查询生成的结果集名字,在查询中可使用该名称访问
子查询的结果集。
– column_name指定子查询结果集中显示的列名。
– 每个子查询可以是SELECT,VALUES,INSERT,UPDATE或DELETE语句。
如果指定ONLY则只有该表被删除;如果没有声明,则该表和它的所有子表将都被删除。
目标表的名字(可以有模式修饰)。
取值范围:已存在的表名。
目标表的别名。
取值范围:字符串,符合标识符命名规范。
using子句。
一个返回boolean值的表达式,用于判断哪些行需要被删除。
当前不支持,仅保留语法接口。
DELETE命令删除行之后计算输出结果的表达式。该表达式可以使用表的任意字段。可以使用*返回被删除行的所有字段。
一个字段的输出名称。
取值范围:字符串,符合标识符命名规范。
--创建表tpcds.customer_address_bak。
CREATE TABLE tpcds.customer_address_bak AS TABLE tpcds.customer_address;
--删除tpcds.customer_address_bak中ca_address_sk小于14888的职员。
DELETE FROM tpcds.customer_address_bak WHERE ca_address_sk < 14888;
--删除tpcds.customer_address_bak中所有数据。
DELETE FROM tpcds.customer_address_bak;
--删除tpcds.customer_address_bak表。
DROP TABLE tpcds.customer_address_bak;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69959250/viewspace-3164034/ ,如需转载,请注明出处,否则将追究法律责任。