SQL第16课——更新和删除数据

介绍如何利用updatedelete语句进一步操作表数据。

16.1 更新数据

使用update语句。两种使用方式:

  1. 更新表中的特定行;

  2. 更新表中的所有行。

!!!(使用update时不要省略where子句,因为容易更新表中的所有行)

基本update语句由三部分组成 = 要更新的表 + 列名和它们的新值 + 确定要更新哪些行的过滤条件

**例:**客户1000000005现在有了电子邮件地址,因此需要更新记录

更新单个列:

这里是更新customers表中cust_id为1000000005的email.

没有where子句的话,DBMS将会用这个电子邮件地址更新customers表中的所有行。

更新多个列:

**!!!**在update语句中使用子查询,使得能用select语句检索出的数据更新列数据。

有的SQL实现支持在update语句中使用from子句,用一个表的数据更新另一个表的行。

删除某个列的值,可设置它为null(表定义允许null值):

null去除cust_email列中的值,与保存空字符串不同(' ',是一个值),null表示没有值。

16.2 删除数据

delete删除(去掉)数据,有两种方式:

  1. 删除特定的行;

2.删除所有行。

同样不要省略where子句,不然容易删除所有行。

**例:**从customers表中删除一行:

delete from 指定删除的表名

!!!友好的外键

12课中的联结,简单联结两个表需要两个表中的公用字段,

使用外键确保引用完整性的好处:DBMS通常可以防止删除某个关系需要用到的行。如从Products表中删除一个产品,但这个产品用在orderitems的已有订单中,那么delete语句将抛出错误并中止。

delete不需要列名或通配符,delete删除整行而不是删除列,删除指定的列,使用update语句。

delete删除行,不删除表本身

要删除所有行,用truncate table语句更快。

16.3 更新和删除的指导原则

|------------------------------------------------------|
| 1. 如果不是更新或删除每一行,那么一定要使用where子句 |
| 2. 保证每个表都有主键,尽可能像where子句那样使用它(可以指定各主键,多个值或值的范围) |
| 3. 在使用where子句前,应该先用select进行测试,保证过滤的是正确的记录 |
| 4. 使用强制实施引用完整性的数据库,这样DBMS将不允许删除其数据与其他表相关联的行 |
| 5. 有得DBMS允许数据库管理员施加约束,防止执行不带where子句得update或delete语句。 |
| 6. 如果SQL没有撤销(undo)按钮,小心使用,不然容易更新或删除错误数据。 |
[update和delete遵循的重要原则]

相关推荐
数据最前线2 分钟前
Doris表设计与分区策略:让海量数据管理更高效
数据库
时光追逐者11 分钟前
MongoDB从入门到实战之MongoDB快速入门(附带学习路线图)
数据库·学习·mongodb
头顶秃成一缕光34 分钟前
Redis的主从模式和哨兵模式
数据库·redis·缓存
AIGC大时代37 分钟前
高效使用DeepSeek对“情境+ 对象 +问题“型课题进行开题!
数据库·人工智能·算法·aigc·智能写作·deepseek
博睿谷IT99_38 分钟前
数据库证书可以选OCP认证吗?
数据库·oracle·开闭原则·ocp认证
乐维_lwops1 小时前
数据库监控 | MongoDB监控全解析
数据库·mongodb·数据库监控
观无1 小时前
Redis安装及入门应用
数据库·redis·缓存
我的golang之路果然有问题2 小时前
速成GO访问sql,个人笔记
经验分享·笔记·后端·sql·golang·go·database
柏油2 小时前
MySql InnoDB 事务实现之 undo log 日志
数据库·后端·mysql
DolphinScheduler社区2 小时前
白鲸开源WhaleStudio与崖山数据库管理系统YashanDB完成产品兼容互认证
数据库·开源·认证·崖山数据库·白鲸开源