# DELETE
#### 功能描述
删除HStore opt表中的数据。
![](https://support.huaweicloud.com/devg-dws/public_sys-resources/note_3.0-zh-cn.png)
- 如需使用实时数仓能力，请在DWS控制台创建集群时，选择**存算一体1:4云盘规格** ，了解更多参见[存算一体规格](https://support.huaweicloud.com/productdesc-dws/dws_01_00018.html)。
- 创建DWS集群选择**1:8云盘规格** 为标准数仓，**1:4云盘规格**为实时数仓，以下内容描述的"实时数仓"、"标准数仓"即通过以上规格区分。
 
#### 注意事项
- 如果需要删除表上的所有数据，建议使用TRUNCATE语法，可以有效提高性能同时减少空间膨胀。
- HStore opt表上的单条DELETE操作，会往Delta中插入一条type是D的记录，同时再更新内存更新链用于管理并发。
- HStore opt表上的批量DELETE操作，对于每个CU上的连续delete，会插入一条type是MD的记录。
- 对于并发DELETE场景， 传统列存储格式由于同时操作相同CU时会阻塞所以并发性能较差， 对于HStore opt表由于不需要阻塞等待，并发DELETE性能可达到列存的百倍以上。
 
#### 语法格式
```
DELETE FROM [ ONLY ] table_name [ * ] [ [ AS ] alias ]
    [ USING using_list ]
    [ WHERE condition ]
```
#### 参数说明
- **ONLY**
  如果指定ONLY则只有该表被删除；如果没有声明，则该表和它的所有子表将都被删除。
  
- **table_name**
  目标表的名字（可以有模式修饰）。
  取值范围：已存在的表名。
  
- **alias**
  目标表的别名。
  取值范围：字符串，符合标识符命名规范。
  
- **using_list**
  using子句。
  
- **condition**
  一个返回boolean值的表达式，用于判断哪些行需要被删除。
  
 
#### 示例
创建表reason_t2：
```
CREATE TABLE reason_t2
(
    TABLE_SK          INTEGER               ,
    TABLE_ID          VARCHAR(20)           ,
    TABLE_NA          VARCHAR(20)
)WITH(ORIENTATION=COLUMN, ENABLE_HSTORE_OPT=ON);
INSERT INTO reason_t2 VALUES (1, 'S01', 'StudentA'),(2, 'T01', 'TeacherA'),(3, 'T02', 'TeacherB');
```
使用WHERE条件删除：
```
DELETE FROM reason_t2 WHERE TABLE_SK = 2;
DELETE FROM reason_t2 AS rt2 WHERE rt2.TABLE_SK = 2;
```
使用IN语法删除：
```
DELETE FROM reason_t2 WHERE TABLE_SK in (1,3);
```
