PostgreSQL 的 DELETE 数据删除功能有哪些用法?

PostgreSQL DELETE 语句:完整指南 PostgreSQL 的DELETE语句是一个强大的工具,用于从数据库表中删除数据。正确使用它可以帮助维护数据库的整洁和高效。然而,由于删除操作通常是不可逆的,因此在执行之前应仔细考虑和验证。 阅读详情

PostgreSQL 的数据删除功能主要通过 DELETE 语句实现,用于从数据库表中删除一行或多行数据。以下是 全面且详细的 DELETE 用法示例,涵盖基础到高级场景,均附带中文注释说明。


1. 基本删除:删除满足条件的记录

-- 删除 id 为 5 的用户
DELETE FROM users WHERE id = 5;

2. 删除多条记录(使用 IN)

-- 删除 id 在指定列表中的用户
DELETE FROM users WHERE id IN (1, 2, 3);

3. 使用范围条件删除(BETWEEN)

-- 删除年龄在 10 到 15 岁之间的用户
DELETE FROM users WHERE age BETWEEN 10 AND 15;

4. 模糊匹配删除(LIKE)

-- 删除邮箱包含 'spam' 的用户
DELETE FROM users WHERE email LIKE '%spam%';

5. 删除空值(NULL)记录

-- 删除邮箱为空的用户
DELETE FROM users WHERE email IS NULL;

6. 删除非空值记录

-- 删除邮箱不为空的用户(谨慎使用!)
DELETE FROM users WHERE email IS NOT NULL;

7. 使用逻辑运算符组合条件

-- 删除北京地区且年龄小于 18 的用户
DELETE FROM users WHERE city = '北京' AND age < 18;

-- 删除非管理员或注册时间早于 2020 年的用户
DELETE FROM users WHERE NOT is_admin OR created_at < '2020-01-01';

8. 删除所有数据(清空表)

-- 删除表中所有记录(表结构保留)
DELETE FROM users;

⚠️ 注意:此操作不会重置自增 ID,且可能较慢(尤其大表)。建议使用 TRUNCATE 替代(见下文)。


9. 使用 LIMIT 限制删除数量(PostgreSQL 支持)

-- 仅删除一条满足条件的记录(可用于调试或分批删除)
DELETE FROM users WHERE age < 18 LIMIT 1;

💡 适用于需逐步删除的场景,避免误删大量数据。


10. 使用 RETURNING 返回被删除的数据

-- 删除用户并返回被删除的姓名和邮箱(便于日志或审计)
DELETE FROM users WHERE id = 10 
RETURNING name, email, deleted_at;

RETURNING 是 PostgreSQL 强大特性,可用于获取删除前的数据。


11. 使用子查询定位要删除的记录

-- 删除没有订单记录的用户
DELETE FROM users 
WHERE id NOT IN (
    SELECT DISTINCT user_id FROM orders WHERE user_id IS NOT NULL
);

12. 使用 EXISTS 删除关联数据

-- 删除有异常订单的用户(存在金额为负的订单)
DELETE FROM users u
WHERE EXISTS (
    SELECT 1 FROM orders o 
    WHERE o.user_id = u.id AND o.amount < 0
);

13. 联合多表删除(使用 USING)

-- 删除 orders 表中属于已注销用户(users 表中已删除)的订单
DELETE FROM orders 
USING users 
WHERE orders.user_id = users.id 
  AND users.status = 'deleted';

USING 允许在 DELETE 中引用其他表进行条件判断。


14. 使用 CTE(公共表表达式)进行复杂删除

-- 先找出要删除的用户,再执行删除并返回结果
WITH deleted_users AS (
    DELETE FROM users 
    WHERE last_login < '2020-01-01' 
    RETURNING id, name, email
)
SELECT '已删除用户: ' || name FROM deleted_users;

适合需要记录删除日志或链式操作的场景。


15. 使用 LATERAL 进行高级删除(较少见,但可行)

-- 示例:删除每个城市中最老的一位用户(按 id 排序)
DELETE FROM users u
USING (
    SELECT city, MIN(id) AS min_id 
    FROM users 
    GROUP BY city
) oldest_users
WHERE u.city = oldest_users.city 
  AND u.id = oldest_users.min_id;

16. 使用 TRUNCATE 快速清空表(替代 DELETE)

-- 快速清空 users 表(比 DELETE 快,且重置自增 ID)
TRUNCATE TABLE users;

-- 同时清空多个表
TRUNCATE TABLE users, orders, logs;

-- 清空并重置外键关联表(需 CASCADE)
TRUNCATE TABLE users CASCADE;

✅ TRUNCATE 优势:速度快、不逐行删除、可重置序列。
❌ 限制:不能带 WHERE 条件,不能触发 DELETE 触发器(除非指定)。


17. 使用 DELETE FROM … WHERE … IN (SELECT …) 的安全写法

-- 安全删除:确保子查询不会因 NULL 导致意外
DELETE FROM users 
WHERE id IN (
    SELECT user_id FROM login_attempts 
    WHERE attempt_time < NOW() - INTERVAL '30 days'
      AND success = false
);

18. 防止误删:使用事务(Transaction)

BEGIN;

DELETE FROM users WHERE age < 10;

-- 检查影响行数
GET DIAGNOSTICS row_count = ROW_COUNT;
RAISE NOTICE '将删除 % 行', row_count;

-- 确认无误后提交,否则 ROLLBACK
-- COMMIT;
-- ROLLBACK;

建议在生产环境删除前使用事务,避免不可逆错误。


19. 删除重复数据(保留一条)

-- 删除 users 表中 email 重复的记录,只保留每组中 id 最小的一条
DELETE FROM users u1
USING users u2
WHERE u1.email = u2.email 
  AND u1.id > u2.id;

20. 使用触发器(Trigger)记录删除日志

-- 创建触发器函数:将删除的用户记录插入日志表
CREATE OR REPLACE FUNCTION log_deleted_user()
RETURNS TRIGGER AS $$
BEGIN
    INSERT INTO user_deletion_log (user_id, name, deleted_at)
    VALUES (OLD.id, OLD.name, NOW());
    RETURN OLD;
END;
$$ LANGUAGE plpgsql;

-- 创建触发器
CREATE TRIGGER trigger_log_delete
    BEFORE DELETE ON users
    FOR EACH ROW EXECUTE FUNCTION log_deleted_user();

删除时自动记录日志,便于审计和恢复。


21. 条件删除 + RETURNING + CTE 实现审计删除

-- 删除用户并记录到审计表
WITH deleted AS (
    DELETE FROM users 
    WHERE id = 100 
    RETURNING id, name, email, '手动删除' AS reason
)
INSERT INTO audit_log (table_name, record_id, action, details)
SELECT 'users', id, 'DELETE', jsonb_build_object('name', name, 'email', email, 'reason', reason)
FROM deleted;

总结:PostgreSQL 删除功能对比

方法适用场景是否可带 WHERE是否触发触发器速度是否重置序列
DELETE FROM ...精确删除部分数据✅✅慢❌
TRUNCATE TABLE清空整个表❌❌(默认)快✅
DELETE ... RETURNING需要获取删除数据✅✅慢❌
USING / EXISTS多表关联删除✅✅中❌

🛡️ 安全建议

  1. 始终在 WHERE 条件中测试 SELECT:先 SELECT * FROM table WHERE ... 确认范围。
  2. 使用事务包装 DELETE:便于出错回滚。
  3. 备份重要数据:删除前导出。
  4. 避免在生产环境直接执行无 WHERE 的 DELETE。
  5. 使用 RETURNING 和日志表进行审计。

PostgreSQL 的删除功能不仅强大,还支持高度灵活的条件控制、审计和性能优化,合理使用可确保数据安全与操作可控。

PostgreSQL DELETE居然有这些操作?返回数据、连表删你试过没? title: PostgreSQL DELETE居然有这些操作?返回数据、连表删你试过没?DELETE语句用于从表中删除满足条件的行,核心逻辑通过WHERE条件筛选。若无WHERE,将删除所有行。USING子句可连接其他表进行关联删除,RETURNING子句可返回被删除的行。用于删除游标当前指向的行。批量删除可通过WITH子查询模拟LIMIT。清空表时,TRUNCATE比DELETE更快,但不触发触发器。常见报错包括权限不足、语法错误等,需根据具体原因解决。扫描。 阅读详情

相关推荐

深入剖析数据删除操作:DELETE 语句的使用与管理实践

table_name是需要删除数据的表名。condition是用于指定哪些记录应被删除的条件。

https://blog.cmdragon.cn/ 1347

【PostgreSQL】删除postgresql表中的数据

需要注意的是,使用 DROP TABLE 命令将会直接删除整个表,包括其中的数据和约束等,操作不可恢复。需要注意的是,使用 TRUNCATE 命令将会删除表中的所有数据,并且不可恢复。其中,table_name 是要删除数据的表名,condition 是删除条件。如果没有指定 condition,则会删除该表中的所有数据。另外,如果需要删除表本身,可以使用 DROP TABLE 命令。其中,table_name 是要删除数据的表名。其中,table_name 是要删除的表名。

Fanjufei的博客 1万+

PostgreSQL数据delete删除恢复

本文档适用数据表数据被delete类型的删除语句情况下恢复,需要满足数据库或数据表未被vacuum或者vacuum full。

weixin_42329915的博客 1027

PG数据之SQL删除语句

Truncate table 通过释放用于存储表数据的数据页来删除数据,并且在事务日志中记录页数据,所以数据不可回滚。Delete 是数据操作语言(Dml),事务提交后生效,如果有相应的触发器,执行的时候将被触发。Delete删除语句的过程是每次从表中删除一行,该删除操作作为事务记录在日志中,以便于回滚操作。alter table 表名 change 原列名 新列名 类型 --需改表的列属性。alter table 表名 drop 列名 --删除表的某列。Truncate table 表名;

qq_42283143的博客 1799

【postgresql 基础入门】update命令与delete命令,表达式作为值,带筛选条件的删除,避够清空全表

已经存储在数据库中的数据,在日常使用过程中,在现实当中一些数据已经发生了变化,相应的我们需要更新或者删除数据库中的数据条目,让它们变得更加有效,减少数据的冗余。 本章节主要分享如何更新 update, 删除 delete数据。

一个追逐梦想的码农 3683

【PostgreSQL教程】PostgreSQL UPDATE 语句

如果我们要更新在 PostgreSQL 数据库中的数据,我们可以用 UPDATE 来操作。

No8g攻城狮的博客 2043

PostgreSQL DELETE 语句详解

PostgreSQL 的DELETE语句用于从数据库表中删除记录,是数据管理的四大基本操作(CRUD)之一。DELETE 操作具有不可逆性,使用时需要格外谨慎。理解DELETE与TRUNCATE的区别掌握条件删除和批量删除技巧学会处理外键约束问题了解性能优化方法遵循安全最佳实践删除操作是不可逆的,执行前务必确认操作的正确性。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 1万+

手机摄影新宠:In-line Hardware EIS如何让你的4K视频稳如鸡头(附实测对比)

本文深入解析了手机摄影中的In-line Hardware EIS(硬件级行内电子图像稳定)技术。通过对比传统软件EIS,阐述了其通过硬件管道实时处理实现极低延迟、减少画面裁切和有效抑制果冻效应的核心优势,并结合4K视频的日夜间实测,展示了该技术如何让手持拍摄的视频“稳如鸡头”,显著提升创作体验与成片质量。

tree的博客 994

PostgreSQL11 | 插入、更新与删除数据

本文根据原书《PostgreSql11 从入门到精通》(清华大学出版社)第7章总结整理,为提问与解答可以帮助更多人,本博客模拟GitHub的issue方案,所以私信已关,有问题请在评论区直接指正与提问,允许转发、复制或引用本文章,必须遵守开源法则注释来源与作者,感谢您的阅读。

红星编程实验室 1万+

嘉立创EDA报错:元件引脚与焊盘未对应报错解决记录

原件引脚与焊盘未对应报错解决方法,一文总结!

2303_77013775的博客 1万+

别再乱选离散化方法了!从零到一用Matlab对比差分、双线性Tustin和预矫正的实战效果

本文深入探讨了Matlab中四种主流离散化方法(差分、双线性Tustin和预矫正)的实战效果对比,帮助工程师在数字控制系统设计中做出明智选择。通过详细的理论分析和Matlab代码示例,展示了不同方法在稳定性、频率响应和计算复杂度上的差异,并提供了针对不同场景的工程选用指南。

weixin_28737603的博客 141

无涯教程-PostgreSQL - 删除数据(Delete)

PostgreSQL DELETE 查询用于从表中删除现有记录,您可以将WHERE子句与DELETE查询一起使用,以删除选定的行,否则,所有记录将被删除。无涯教程网提供PostgreSQL DELETE 查询用于从表中删除现有记录,您可以将WHERE子句与DELETE查询一起...如果要删除COMPANY表中的所有记录,则无需对WHERE子句使用DELETE查询,如下所示-现在,COMPANY表没有任何记录,因为所有记录已被DELETE语句删除。现在,COMPANY表将具有以下记录-

无涯教程 1224

STM32 SAES硬件加密协处理器全模式工程实践指南

AES(高级加密标准)是嵌入式系统中最基础且关键的对称密码算法,其硬件加速实现直接影响安全、性能与功耗平衡。Secure AES Coprocessor(SAES)作为STMicroelectronics在STM32U5等高安全MCU中集成的专用密码协处理器,不仅支持标准ECB/CBC/CTR模式,更原生兼容GCM和CCM等认证加密模式,具备抗侧信道、密钥保护与DMA卸载能力。理解其寄存器状态机(CHMOD/MODE/CPHASE)、NPBLB数据对齐机制及GCM四阶段编程范式,是规避Tag校验失败、IV错

weixin_42311427的博客 76

PostgreSQL 删除表详解

PostgreSQL 使用DROP TABLE语句来永久删除数据库中的表格及其相关对象。这是一个不可逆的操作,会同时删除表中的所有数据、索引、规则、触发器和约束条件。DROP TABLE是PostgreSQL中一个强大但危险的命令,使用时必须格外谨慎。理解其工作原理和影响范围对于数据库管理员至关重要。始终先备份重要数据在测试环境验证DROP语句使用IF EXISTS避免意外错误注意依赖关系,必要时使用CASCADE考虑使用事务确保操作可控删除操作是不可逆的,谨慎执行每一个DROP语句。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 1万+

PCIE配置和地址空间

来源:https://www.jianshu.com/p/574e9a2cbc4e 每个PCIe设备,有这么一段空间,Host软件可以读取它获得该设备的一些信息,也可以通过它来配置该设备,这段空间就叫做PCIe的配置空间。不同于每个设备的其它空间,PCIe设备的配置空间是协议规定好的,哪个地方放什么内容,都是有定义的。PCI或者PCI-X时代就有配置空间的概念,那时的配置空间如下: 图6.1 整个配置空间就是一系列寄存器的集合,其中Type 0是Endpoint的配置,Type 1是Brid.

qq_28643619的博客 4058

别再只会regress了!用Stata的csdid命令搞定多期DID的完整实操指南

本文详细介绍了如何在Stata中使用csdid命令进行多期DID分析,解决传统DID方法在交错处理场景下的局限性。通过完整的实操指南,包括环境搭建、核心语法、结果解读和高阶应用,帮助研究者更准确地评估政策效果,适用于计量经济学和实证研究领域。

weixin_30236595的博客 582

PostgreSQL DELETE 语句

PostgreSQL中DELETE语句用于删除表中数据,基本语法为"DELETE FROM table_name WHERE [condition]"。不指定WHERE条件会删除全部记录。示例演示了如何删除特定ID(如ID=2)的记录,以及如何删除整张表数据。使用WHERE子句可精确控制要删除的数据行,支持AND/OR运算符组合多个条件。删除操作不可逆,需谨慎执行,尤其是不带条件的整表删除。

nmxiaocui的博客 560

【实战教程】OpenClaw接入MySQL数据库实战指南

本文介绍了在虚拟机Ubuntu中访问宿主机Win11中MySQL数据库的配置方法,重点包括创建远程用户、权限配置和安全设置。首先在MySQL中创建具有只读权限的用户并刷新权限,然后调整服务器设置允许远程连接。文章还提供了某金融机构财富管理系统的数据库设计方案,包含理财产品表、客户表和份额表的核心结构,其中金额字段使用DECIMAL类型确保精度,并设置唯一键约束。文末强调测试环境配置完成后应恢复安全更新模式以保障生产环境安全。

海兰 8696

sqlc 删除数据(DELETE)实战指南:从单条删除到批量删除与源码原理

本文以 sqlc 的删除操作(DELETE)为核心,系统讲解如何在 PostgreSQL、MySQL、SQLite 三种引擎下编写带注解的 DELETE 查询并生成类型安全的 Go 代码,同时深入解析 `:exec`、`:execresult`、`:execrows`、`:batchexec` 等命令的差异与适用场景,并结合仓库源码与端到端测试数据,说明 sqlc 内部如何处理 DELETE 语句

gitblog_01033的博客 871

pcie硬件时序分析实战(PHY层眼图测量)​

PCIe高速接口的信号完整性(SI)直接影响系统带宽和稳定性。其中,​。

xiaoheshang_123的博客 857

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

PostgreSQL 删除重复数据

本文介绍几种方法删除PostgreSQL表中的重复数据记录。 准备数据 创建 basket 表: CREATE TABLE basket( id SERIAL PRIMARY KEY, fruit VARCHAR(50) NOT NULL ); 插入示例数据: INSERT INTO basket(fruit) values('apple'); INSERT INTO basket(fruit) values('apple'); INSERT INTO basket(fruit) v.

neweastsun的专栏 9548

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

PostgreSQL 中如何处理数据的批量删除和恢复操作?

在 PostgreSQL 中,处理数据的批量删除和恢复操作是数据库管理的常见任务。批量删除可以有效地清除大量不再需要的数据,而恢复操作则能够在误删除或其他意外情况下还原数据。

发现生活,分享智慧,一起成长! 2824

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

上一篇: PostgreSQL 的 UPDATE 数据更新功能有哪些用法?
下一篇: PostgreSQL 的 INSERT 数据新增功能有哪些用法?
龙茶清欢
博客等级 码龄7年 3720粉丝 375原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙茶清欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值