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

pg14.2 sql 训练第二天:SQL语句之DELETE实战

原创 闫龙伟 2023-09-14
943

SQL语句之DELETE实战


2023年7月12日

目 录

1. DELETE FROM 语句 1

1.1. 创建测试表,插入数据 1

1.2. 删除指定数据 1

1.3. 清空表 1

1.4. 删除ID=1的行 2

1.5. 在指定条件下批量删除 2

1.6. 返回删除数据 2

1.7. Truncate方式删表 2

1.8. DROP 方式删除 2

2. DELETE 和drop 和truncate的区别 2

DELETE FROM 语句

创建测试表,插入数据

删除指定数据

使用 DELETE 语句来删除 PostgreSQL 表中的数据,可以删除一行也可以同时删除多行。语法:DELETE FROM table_name WHERE [condition];

如果没有指定 WHERE 子句,PostgreSQL 表中的所有记录将被删除。通常我们需要在 WHERE 子句中指定条件来删除对应的记录,条件语句可以使用 AND 或 OR 运算符来指定一个或多个。执行删除后输出说明:

DELETE count ---count是被删除行的数目。

清空表

删除ID=1的行

在指定条件下批量删除

返回删除数据

Truncate方式删表

删除数据的其他方式TRUNCATE table_name;

TRUNCATE可以清空一个表或者一组表,和不带条件DELETE执行效果相同,不过它更快,因为它没有实际扫描表。此外,它会立刻回收磁盘空间, 而不是要求一个后续的VACUUM操作。在大表上 它最有用。

DROP 方式删除

DROP TABLE是移除一个表

DELETE 和drop 和truncate的区别

delete是DML,执行delete操作时(删除一行数据),可根据条件删除表中满足条件的数据,如果不指定where子句,那么删除表中所有记录,并且同时将删除操作记录在redo和undo表空间中以便进行回滚(rollback)和重做操作。需要手动提交(commit)操作才能生效,可以通过rollback撤消操作。delete语句不影响表所占用的extent,高水线(high watermark)保持原位置不变。

truncate是DDL,会删除表中所有记录,并且将重新设置高水线和所有的索引,缺省情况下将空间释放到minextents个extent,除非使用reuse storage。truncate会隐式提交,不需要commit提交,不会记录日志,所以执行速度很快,不能回滚,不会触发触发器。truncate只能作用于表,不能作用于视图,不能作用于带有外键的表,不能用于参与了索引视图的表。truncate相当于重新建表,数据库表属性信息同样会更新,这个表和索引所占用的空间会恢复到初始大小。

drop是DDL,不需要commit提交,所以执行速度很快,不能回滚,不会触发触发器,会删除表的结构所依赖的约束,触发器,索引,依赖于该表的存储过程/函数将保留,但是变为invalid状态。drop语句删除表结构及所有数据,并将表所占用的空间全部释放。

 

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论