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

这篇具有很好参考价值的文章主要介绍了【postgresql 基础入门】update命令与delete命令,表达式作为值,带筛选条件的删除,避够清空全表。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数据的操作(更新删除)

专栏内容

  • postgresql内核源码分析
  • 手写数据库toadb
  • 并发编程

个人主页:我的主页
管理社区:开源数据库
座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物.

一、概述


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

本章节主要分享如何更新 update, 删除 delete数据。

二、数据更新 udpate


数据的更新,顾名思义就是将原来的旧值变更为另一个新值,这里就需要SQL的update命令,下面我们先介绍命令的语法,再通过案例来熟悉命令的使用和技巧。

2.1 udpate 语法

UPDATE table_name1
SET column1 = value1,
    column2 = value2,
    ...
WHERE conditions;

还可以写成这样的形式:

UPDATE table_name1
SET (column1,column2, ...) 
    = (value1, value2, ...)
WHERE conditions;

说明

  • UPDATE 命令后面是被修改的表名;
  • SET 子句中,列出了被修改的列,以及修改后的新值;这里可以是多个列一起修改,但都对应到被修改表中;
  • 当然可以通过WHERE子句指定过滤条件,只有满足条件的行才会被修改;
  • 执行成功后,返回符合的行数量;

下面我们通过几个案例来看看update命令的几种用法。

2.2 基本使用

这里先创建一张表users,用于后面的演示。

postgres=# create table users(uid int primary key, uname varchar(30), age int);
CREATE TABLE
postgres=# insert into users values(1,'lilei', 16),(2,'markhu',22);
INSERT 0 2
postgres=# select * from users;
 uid | uname  | age 
-----+--------+-----
   1 | lilei  |  16 
   2 | markhu |  22 
(2 rows)

发现名字写错了,需要更正一下。

postgres=# update users set uname = 'lihua' ;
UPDATE 2
postgres=# select * from users;
 uid | uname | age 
-----+-------+-----
   1 | lihua |  16 
   2 | lihua |  22 
(2 rows)

这里更正名字,可以看到一次更新了2行数据,查询可以看到,两行数据的名字都变了。

也就是说,没有条件限制时,会对所有行进行更新。

2.3 条件过滤更新

如何能精确的更新,下面来看带筛选条件的更新。

我们将前面更新错误的数据再纠正一下。

postgres=# update users set uname='markhu' where uid=2;
UPDATE 1
postgres=# select * from users;
 uid | uname  | age 
-----+--------+-----
   1 | lihua  |  16 
   2 | markhu |  22 
(2 rows)

通过uid进行筛选,只更新一行数据。

当然数据复杂时,可以带更多的过滤条件,它与select查询时的where子句是一样的作用和用法。

2.4 表达式新值

在设置新值时,新值不仅可以是确定的值,也可以是表达式,也就是根据其它数据计算的结果。

发现年龄也有错误时,现在来纠正一下;

postgres=# update users set age = age+2 where uid=1;
UPDATE 1
postgres=# select * from users;
 uid | uname  | age
-----+--------+-----
   2 | markhu |  22
   1 | lihua  |  18
(2 rows)

原来1号的年龄少报了两岁,更新时在原来的基础上再加2岁即可。

当然这里也可以依据其它列或表的值来计算新值。

三、数据删除 delete


数据维护时,对于冗余数据可以进行删除,使用delete命令,同时可以带有条件选择,精确选择符合的行进行删除。

3.1 delete 语法

delete命令的SQL语法形式如下:

DELETE FROM table_name1
WHERE conditions;

说明

  • delete from 命令后面是被操作的表名;
  • 可以使用where 子句来进行筛选要删除的行;
  • 符合的行都会被删除,命令执行成功后返回符合的行数量;

3.2 删除单行数据

为了演示的清晰,再往users表中多插入几条数据。

postgres=# insert into users values(3,'xueni',68),(4,'wuguang',77),(5,'xiaoming',8),(6,'zhouhui',28);
INSERT 0 4
postgres=# select * from users;
 uid |  uname   | age
-----+----------+-----
   2 | markhu   |  22
   1 | lihua    |  18
   3 | xueni    |  68
   4 | wuguang  |  77
   5 | xiaoming |   8
   6 | zhouhui  |  28
(6 rows)

在一张表中,已经有很多数据时,删除单行数据,就需要严格的条件过滤。

postgres=# delete from users where age>70;
DELETE 1
postgres=# select * from users;
 uid |  uname   | age
-----+----------+-----
   2 | markhu   |  22
   1 | lihua    |  18
   3 | xueni    |  68
   5 | xiaoming |   8
   6 | zhouhui  |  28
(5 rows)

可以看到age=77的行被删除了。

有时可能没有符合条件的数据行, 例如:

postgres=# delete from users where age>70;
DELETE 0

此时返回0,表示符合条件的行数为0;

3.3 删除多行数据

当然也可以一次删除多行数据,指定删除age>25的数据行;

postgres=# delete from users where age > 25;
DELETE 2
postgres=# select * from users ;
 uid |  uname   | age
-----+----------+-----
   2 | markhu   |  22
   1 | lihua    |  18
   5 | xiaoming |   8
(3 rows)

可以看到一次删除了两行。

特别注意:在不指定筛选条件时,会删除表中的所有数据,也就是所有行都是符合条件的。

postgres=# delete from users;
DELETE 3
postgres=# select * from users ;
 uid | uname | age
-----+-------+-----
(0 rows)

可以看到表被清空了,大家在使用delete命令时一定要小心谨慎。

四、总结


本文分享了表中数据的按字段进行更新,新值可以使用明确的值,也可以通过表达式计算得到;

如果有冗余数据时,也可以使用delete命令进行删除;更新和删除命令,都可以带有条件筛选,精确操作到条件符合的行。

结尾


非常感谢大家的支持,在浏览的同时别忘了留下您宝贵的评论,如果觉得值得鼓励,请点赞,收藏,我会更加努力!

作者邮箱:study@senllang.onaliyun.com
如有错误或者疏漏欢迎指出,互相学习。

注:未经同意,不得转载!文章来源地址https://www.toymoban.com/news/detail-851321.html

到了这里,关于【postgresql 基础入门】update命令与delete命令,表达式作为值,带筛选条件的删除,避够清空全表的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python零基础入门(六)——超详细的字符串与正则表达式

    个人简介:机电专业在读研究生,CSDN内容合伙人,博主个人首页 Python入门专栏:《Python入门》欢迎阅读,一起进步!🌟🌟🌟 码字不易,如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!😊😊😊 欢迎来到本系列教程的第六篇,之前的文章已经介

    2024年02月13日
    浏览(76)
  • postgresql-条件表达式

    2024年02月10日
    浏览(46)
  • postgresql-通用表达式

    WITH 表示定义 CTE,因此 CTE 也称为 WITH 查询; cte_name 指定了 CTE 的名称,后面是可选的字段名 括号内是 CTE 的内容,可以是 SELECT 语句,也可以是 INSERT、UPDATE、DELETE 语句; sql_statement 是主查询语句,可以引用前面定义的 CTE。该语句同样可以是 SELECT、 INSERT、UPDATE 或者 DELETE

    2024年02月09日
    浏览(36)
  • C++ || C/C++内存管理 | C++动态内存管理方式 | operator new/delete函数 | new和delete实现原理 | 定位new表达式 | 内存泄漏

    C/C++中程序内存区域大致划分六个部分: 内核空间 (用户代码不能读写)、 栈 (向下增长)、 内存映射段 (文件映射、动态库、匿名映射)、 堆 (向上增长)、 数据段 (全局数据、静态数据)、 代码段 (可执行代码、只读常量)。 各自内存区域功能 栈 ,又叫做堆栈

    2024年02月21日
    浏览(57)
  • 《零基础入门学习Python》第060讲:论一只爬虫的自我修养8:正则表达式4

    有了前面几节课的准备,我们这一次终于可以真刀真枪的干一场大的了,但是呢,在进行实战之前,我们还要讲讲正则表达式的实用方法和扩展语法,然后再来实战,大家多把持一会啊。 我们先来翻一下文档: 首先,我们要举的例子是讲得最多的 search() 方法,search() 方法

    2024年02月15日
    浏览(58)
  • 【Python入门篇】——Python基础语法(字符串格式化,表达式格式化和数据输入)

    作者简介: 辭七七,目前大一,正在学习C/C++,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: Python入门,本专栏主要内容为Python的基础语法,Python中的选择循环语句,Python函数,Python的数据容器等。 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 目前通过%符号占位

    2024年02月05日
    浏览(59)
  • 【C++初阶】七、内存管理(C/C++内存分布、C++内存管理方式、operator new / delete 函数、定位new表达式)

    ========================================================================= 相关代码gitee自取 : C语言学习日记: 加油努力 (gitee.com)  ========================================================================= 接上期 : 【C++初阶】六、类和对象(初始化列表、static成员、友元、内部类)-CSDN博客  ==================

    2024年02月05日
    浏览(45)
  • MySQL修炼手册7:数据修改基础:INSERT、UPDATE、DELETE语句详解

    在掌握了MySQL数据库的基础之后,学习如何对数据进行有效的修改是至关重要的。本篇博客旨在提供一个深入的指南,涵盖了数据修改的三大基础操作:插入(INSERT)、更新(UPDATE)、删除(DELETE)。为了更好地理解这些概念,我们首先创建一个示例表“水果表”,然后逐一

    2024年01月17日
    浏览(77)
  • 【postgresql 基础入门】事物transaction的开启,提交,回滚命令,自动提交设置

    ​ 专栏内容 : postgresql内核源码分析 手写数据库toadb 并发编程 个人主页 :我的主页 管理社区 :开源数据库 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 入门准备 postgrersql基础架构 快速使用 初始化集群 数据库服务管理 psql客户端使用 pgAdmin图形化客户端

    2024年03月13日
    浏览(68)
  • 机器学习与数据科学-专题1 Python正则表达式-【正则表达式入门-1】

    为了完成本关任务,你需要掌握: 在 Python 中使用正则表达式; 最基础正则表达式; 正则匹配函数。 在 Python 中使用正则表达式 正可谓人生苦短,我用 Python。Python 有个特点就是库非常多,自然拥有正则匹配这种常见的库,并且此库已经嵌入在 Python 标准库中,使用起来非常

    2024年01月22日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包