暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

华为GaussDB T DELETE

墨天轮 2019-10-12
854

DELETE

功能描述

从表中删除行。

注意事项

  • 执行该语句的用户需要有表的DELETE权限或者DELETE ANY TABLE的系统权限。
  • DELETE事务提交是默认关闭的。会话退出时,需要显式COMMIT,否则记录将丢失。

语法格式

从表中删除行。
DELETE FROM [ schema_name. ]table_name [ WHERE condition ] [ ORDER BY { column_name [ ASC | DESC ] [ NULLS FIRST | NULLS LAST ] } [ , ... ] ] [ LIMIT [ start, ] count | LIMIT count OFFSET start | OFFSET start[ LIMIT count ] ]

删除表中与另外一个表匹配的行记录。

DELETE table_ref_list FROM join_table

DELETE FROM table_ref_list USING join_table
  • table_ref_list子句:
    [ schema_name.]table_name
  • join_table 子句:
    table_reference [LEFT [OUTER] | RIGHT [OUTER] | INNER ] JOIN table_reference ON conditional_expr
    table_reference 子句:
    { [ schema_name. ]table_name [ [AS] alias ] | [ schema_name. ]view_name [ [AS] alias] | ( select query ) [ [AS] alias ] | join_table }

参数说明

  • [ schema_name. ]table_name

    要删除数据的表的名称。

  • condition

    指定删除数据要满足的条件。

  • ORDER BY

    指定结果集用于排序的字段。

  • ASC | DESC

    指定ORDER BY排序的方向,是升序或降序排序。

  • NULLS FIRST | NULLS LAST

    指定ORDER BY列中NULL值的排序位置, FIRST表示将包含NULL值的行排在最前面, LAST表示将包含NULL值的行排在最后面, 若不指定该选项, ASC默认为NULLS LAST, DESC默认为NULLS FIRST。

  • start,count

    count指定要返回的最大行数,而start指定在返回行之前要跳过的行数。在两者都被指定时,在开始计算要返回的count行之前会跳过start行。

  • table_ref_list

    待删除数据的表,不支持临时表出现在该列表中。

  • table_reference

    查询表、视图、子查询。

  • join_table

    用于关联查询的一组表集合。

    • LEFT [OUTER] JOIN用于取左表的全集,右表不匹配的,以null值代替。
    • RIGHT [OUTER] JOIN用于取右表的全集,左表不匹配的,以null值代替。
    • [INNER] JOIN用于取两表的交集。
    • conditional_expr

      指定两表关联要满足的条件。

    • table_reference

      待删除的数据表子句。

    • table_name

      要删除数据的表的名称。

    • view_name

      视图名称。

    • select query

      子查询作为待删除数据表。

示例

  • 批量删除表training中staff_id和表education中staff_id相同的记录。
    --删除表education、training。 DROP TABLE IF EXISTS education; DROP TABLE IF EXISTS training;
    --创建表education、training。 CREATE TABLE education(staff_id INT, first_name VARCHAR(20)); CREATE TABLE training(staff_id INT, first_name VARCHAR(20));
    --插入记录。 INSERT INTO education VALUES(1, 'ALICE'); INSERT INTO education VALUES(2, 'BROWN'); INSERT INTO training VALUES(1, 'ALICE'); INSERT INTO training VALUES(1, 'ALICE'); INSERT INTO training VALUES(1, 'ALICE'); INSERT INTO training VALUES(3, 'BOB');
    --批量删除表training中staff_id和表education中staff_id相同的记录。 DELETE training FROM education JOIN training ON education.staff_id = training.staff_id; 或者 DELETE FROM training USING education JOIN training ON training.staff_id = education.staff_id;
  • 删除表training中staff_id为10的用户的“INFORMATION SAFETY”培训记录。
    --删除表training。 DROP TABLE IF EXISTS training;
    --创建表training。 CREATE TABLE training(staff_id INT NOT NULL,course_name CHAR(50),course_start_date DATETIME, course_end_date DATETIME,exam_date DATETIME,score INT);
    --向表training中插入记录1。 INSERT INTO training(staff_id,course_name,course_start_date,course_end_date,exam_date,score) VALUES(10,'SQL majorization','2017-06-15 12:00:00','2017-06-20 12:00:00','2017-06-25 12:00:00',90); --向表training中插入记录2。 INSERT INTO training(staff_id,course_name,course_start_date,course_end_date,exam_date,score) VALUES(10,'INFORMATION SAFETY','2017-06-20 12:00:00','2017-06-25 12:00:00','2017-06-26 12:00:00',95); --向表training中插入记录3。 INSERT INTO training(staff_id,course_name,course_start_date,course_end_date,exam_date,score) VALUES(10,'MASTER ALL KINDS OF THINKING METHONDS','2017-07-15 12:00:00','2017-07-20 12:00:00','2017-07-25 12:00:00',97); --删除表training中同时匹配course_name='INFORMATION SAFETY'和staff_id=10的记录。 DELETE FROM training WHERE course_name='INFORMATION SAFETY' AND staff_id=10; --提交事务。 COMMIT;
  • 删除表training的全部数据。
    --删除表training的全部记录。 DELETE FROM training; --提交事务。 COMMIT;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论