文章目录

  • update语句
    • 示例1:更新一列
    • 示例2:更新多列
    • 示例3:通过设置某个值为null,以删除它
    • 小结
  • delete语句
    • 示例1
    • 小结
  • 总结

update语句

  • 一定要用where子句过滤出你想更新的行,千万不要更新所有行,就这点容易出错,所以使用updata语句的权限要求更高。毕竟90%的人用数据库只能查,根本不能添删改。
  • 而update语句本身是特别简单的,所以难点就是过滤出想更新的行。

示例1:更新一列

UPDATE Customers
set cust_email = 'kim@thetoystore.com'
where cust_id = '1000000005';

用select语句查一下修改后的结果

select cust_id, cust_name, cust_email
from Customers
where cust_id = '1000000005';

示例2:更新多列

update Customers
SET cust_contact = 'Sam Robert',cust_email = 'sam@toyland.com'
where cust_id = '1000000006';

更新后查询:

select cust_id, cust_name, cust_contact, cust_email
from Customers
where cust_id = '1000000006';

示例3:通过设置某个值为null,以删除它

update Customers
set cust_email = null
where cust_id = '1000000005';

查询

select cust_id, cust_name, cust_contact, cust_email
from Customers
where cust_id = '1000000005';


小结

  • 更新一列或者多列都只需要一个set命令
  • 在updata语句中可以用子查询,以用查询出的数据更新,而不必自己输入。

我想自己试试怎么写的,然后写了下面的代码,虽然执行正确没报错,但是并没有真的改成功。

update Customers
set cust_email = (select cust_email where cust_id = '1000000001')
where cust_id = '1000000005';

注意上面的括号中不可以写from Customers,不然报错。

select cust_email from Customers where cust_id = '1000000001'

所以我还是不知道怎么在update中用子查询。。。一个失败的尝试

  • 在update中使用from子句

这个尝试也失败了

CREATE table CustCopy as
select * from Customers;
update CustCopy
set CustCopy.cust_email = 'lalala@huhuhu.com'
where CustCopy.cust_id = '1000000004';
update customers from CustCopy
where Customers.cust_id = '1000000004';

本意是:创建一个新表CustCopy,它和customers表一样,然后先修改一下custcopy表的一个email地址,然后再用custcopy去更新customers表。

看来是因为mysql语法的问题,暂时不想深究了

delete语句


和update的注意点一样

示例1

delete from Customers
where cust_id = '1000000006';

小结

  • 一定要定义外键:以防止删除某个关系要用到的行

  • delete删除的是一整行。所以如果你想删除某一列,就要用update语句,搭配null。
  • delete语句删除的是表的行,不会删掉表本身。
  • 删除表的所有行,又不用delete了,不是做不到,而是速度不够快。应该用truncate table语句,(之前用过create table语句创建表)速度更快。
  • 每个表都必须有主键
  • 一定一定要用where子句,并且还必须先用select测试一下where子句的过滤条件的正确性,然后再去更新或者删除,不然没有撤销后悔药,会完犊子的。
  • 总之就是小心小心再小心,从删库到跑路,很危险的

总结

where子句对update和delete语句是非常非常非常重要的。

关键字

  • update
  • set
  • delete
  • truncate table

SQL (十五)更新和删除数据(updata语句,delete语句)相关推荐

  1. MySQL必知必会——插入、更新和删除数据

    一.插入数据 1.插入 本章节介绍如何利用SQL地INSERT语句将数据插入表中. 插入可以用几种方式使用: 插入完整的行 插入行的一部分 插入多行 插入某些查询的结果 2.插入完整的行 INSERT ...

  2. 《MySQL必知必会学习笔记》:更新和删除数据

    更新和删除数据 上篇博文介绍了下插入数据的几种方式.这篇博文就来讲述下更新和删除数据. 更新数据 更新(修改)表中的数据,使用update语句. 更新数据一般采用如下两种方式: 更新表中特定行的数据. ...

  3. SQL 必知必会·笔记14更新和删除数据

    1. 更新数据 基本的UPDATE语句,由三部分组成: 要更新的表 列名和它们的新值 确定要更新那些行的过滤条件 更新单列示例: 1 UPDATE Customers 2 SET cust_email ...

  4. mysql删除新添加数据_MySQL数据库基础(六)——SQL插入、更新、删除操作

    MySQL数据库基础(六)--SQL插入.更新.删除操作 一.插入数据 1.为表的所有字段插入数据 使用基本的INSERT语句插入数据要求指定表名称和插入到新记录中的值. INSERT INTO ta ...

  5. SQL必知必会-更新和删除数据

    更新数据 更新(修改)表中的数据,可以使用UPDATE语句.有两种使用UPDATE的方式: 1.更新表中的特定行: 2.更新表中的所有行. 警告:不要省略 WHERE 子句 在使用UPDATE时一定要 ...

  6. SQL 创建、更新、删除表、重命表名

    SQL 创建.更新.删除表.重命表名 一.创建表: SQL不仅用于表数据操纵,还用来执行数据库和表的所有操作,包括表本身的创建和处理. 一般有两种创建表的方法: 1.多数DBMS都具有交互式创建和管理 ...

  7. MySQL 8——学习笔记03(插入、更新、删除 数据 [DML语句]、查询数据 [DQL语句])

    MySQL 8--学习笔记03(插入.更新.删除 数据 [DML语句]) 一.插入数据 1.1 插入所有字段.插入部分字段 1.2 同时插入多条记录(批量插入) 1.3 将查询结果插入到表中 二.更新 ...

  8. Scott Mitchell 的ASP.NET 2.0数据教程之四十五::DataList和Repeater数据排序

    Scott Mitchell 的ASP.NET 2.0数据教程之四十五::DataList和Repeater数据排序(一) 原文 | 下载本教程中的编码例子 | 下载本教程的PDF版 (以后比较长的部 ...

  9. mysql插入第一_mySQL教程 第5章 插入 更新与删除数据

    第5章 插入 更新与删除数据 使用SQL Manager管理工具连接到schoolDB.由于三张表都设置了主键,因此,以下练习中插入的记录,主键不能重. 插入数据 1. 练习:为表的所有字段插入数据 ...

  10. mySQL教程 第5章 插入 更新与删除数据

    第5章 插入 更新与删除数据 使用SQL Manager管理工具连接到schoolDB.由于三张表都设置了主键,因此,以下练习中插入的记录,主键不能重. 插入数据 1. 练习:为表的所有字段插入数据 ...

最新文章

  1. LAMP兄弟连PHP课程学习笔记 第二天 PHP中使用变量
  2. 正则表达式的一点奇怪
  3. SSD论文阅读(Wei Liu——【ECCV2016】SSD Single Shot MultiBox Detector)
  4. Yahoo邮箱中全部邮件的下载保存
  5. 再不懂ZooKeeper,就安安心心把这篇文章看完
  6. (96)分频器设计(任意分频器)
  7. 计算机三级设计与应用题,计算机数据库三级设计与应用题.pdf
  8. 如何使用命令行 群晖_群晖Nas系统篇:拿回root账户权限,适用6.2及以上(7.0)系统...
  9. 转Java 开发环境配置
  10. 【永恒之蓝】最新勒索软件WannaCrypt病毒感染前后应对措施
  11. Java中Collections.singleton方法起什么作用呢?
  12. hive两拼接字段对比,涉及到的拼接字段拼接顺序问题
  13. 打印26个大写字母和26个小写字母
  14. Elasticsearch rest-high-level-client 基本操作
  15. SAP HANA HDBTable定义table语法
  16. 关于手机的三大谣传 千万不可信
  17. App架构经验总结(转)
  18. LeetCode(49)Anagram
  19. 考研高等数学知识框架
  20. Android开发资源(一)

热门文章

  1. meta pseudo label
  2. 继电器控制电路原理解析说明
  3. IDEA 奇淫 插件
  4. 实力认证!Coremail连续9次入围安全牛《中国网络安全行业全景图》
  5. echarts异步数据加载(在下拉框选择事件中异步更新数据)
  6. Longhorn,企业级云原生容器分布式存储 - 高可用
  7. linux桌面lxde 安装_ArchLinux下LXDE的安装与设置心得
  8. 恢复被文件夹病毒恶意隐藏的文件夹
  9. 零基础学习嵌入式C语言要学习什么?
  10. 没错,我在用JBOD,它真的很好