使用 DELETE 语句删除数据。

    示例如下:

    假设有如下所示数据的表 t1t2。其中,表 t2 为 KEY 分区表,且分区名由系统根据分区命令规则自动生成,即分区名为 p0p1p2p3

    1. obclient> CREATE TABLE t1(c1 int primary key, c2 int);
    2. Query OK, 0 rows affected (0.16 sec)
    3. obclient> INSERT t1 VALUES(1,1),(2,2),(3,3),(4,4);
    4. Query OK, 4 rows affected (0.00 sec)
    5. Records: 4 Duplicates: 0 Warnings: 0
    6. obclient> SELECT * FROM t1;
    7. +----+------+
    8. | c1 | c2 |
    9. +----+------+
    10. | 1 | 1 |
    11. | 2 | 2 |
    12. | 3 | 3 |
    13. | 4 | 4 |
    14. +----+------+
    15. 4 rows in set (0.06 sec)
    16. obclient> CREATE TABLE t2(c1 int primary key, c2 int) partition BY key(c1) partitions 4;
    17. Query OK, 0 rows affected (0.19 sec)
    18. obclient> INSERT INTO t2 VALUES(5,5),(1,1),(2,2),(3,3);
    19. Query OK, 4 rows affected (0.01 sec)
    20. Records: 4 Duplicates: 0 Warnings: 0
    21. obclient> SELECT * FROM t2;
    22. +----+------+
    23. | c1 | c2 |
    24. +----+------+
    25. | 5 | 5 |
    26. | 1 | 1 |
    27. | 2 | 2 |
    28. | 3 | 3 |
    29. +----+------+
    30. 4 rows in set (0.02 sec)
    • 单表删除,删除 c1=2 的行,其中 c1 列为表 t1 中的 Primary Key。

      1. obclient> DELETE FROM t1 WHERE c1 = 2;
      2. Query OK, 1 row affected (0.02 sec)
      3. obclient> SELECT * FROM t1;
      4. +----+------+
      5. | c1 | c2 |
      6. +----+------+
      7. | 1 | 1 |
      8. | 3 | 3 |
      9. | 4 | 4 |
      10. +----+------+
      11. 3 rows in set (0.01 sec)
    • 单表删除,删除表 t1 中按照 c2 列排序之后的第一行数据。

      1. obclient> DELETE FROM t1 ORDER BY c2 LIMIT 1;
      2. Query OK, 1 row affected (0.01 sec)
      3. obclient> SELECT * FROM t1;
      4. +----+------+
      5. | c1 | c2 |
      6. +----+------+
      7. | 2 | 2 |
      8. | 3 | 3 |
      9. | 4 | 4 |
      10. +----+------+
      11. 3 rows in set (0.00 sec)
    • 单表删除,删除表 t2p2 分区的数据。

      1. obclient> SELECT * FROM t2 PARTITION(p2);
      2. +----+------+
      3. | c1 | c2 |
      4. +----+------+
      5. | 1 | 1 |
      6. | 2 | 2 |
      7. | 3 | 3 |
      8. +----+------+
      9. 3 rows in set (0.01 sec)
      10. obclient> DELETE FROM t2 PARTITION(p2);
      11. Query OK, 3 rows affected (0.02 sec)
      12. obclient> SELECT * FROM t2;
      13. +----+------+
      14. | c1 | c2 |
      15. +----+------+
      16. | 5 | 5 |
      17. +----+------+
      18. 1 row in set (0.02 sec)
    • 多表删除,删除 t1t2 表中 t1.c1 = t2.c1 的数据。

      1. obclient> DELETE t1, t2 FROM t1, t2 WHERE t1.c1 = t2.c1;
      2. Query OK, 3 rows affected (0.02 sec)
      3. obclient> SELECT * FROM t1;
      4. +----+------+
      5. | c1 | c2 |
      6. +----+------+
      7. | 4 | 4 |
      8. +----+------+
      9. 1 row in set (0.01 sec)
      10. obclient> SELECT * FROM t2;
      11. +----+------+
      12. | c1 | c2 |
      13. +----+------+
      14. | 5 | 5 |
      15. +----+------+
      16. 1 row in set (0.01 sec)
    • 多表删除,删除 t1t2 表中 t1.c1 = t2.c1 的数据。

      1. obclient> DELETE FROM t1, t2 USING t1, t2 WHERE t1.c1 = t2.c1;
      2. Query OK, 4 rows affected (0.02 sec)
      3. obclient> SELECT * FROM t1;
      4. +----+------+
      5. | c1 | c2 |
      6. +----+------+
      7. | 4 | 4 |
      8. +----+------+
      9. 1 row in set (0.01 sec)
      10. obclient> SELECT * FROM t2;
      11. Empty set (0.01 sec)

    更多 DELETE 语句相关的语法说明请参见《SQL 参考(MySQL 模式)》中 DELETE 章节。