美文网首页
十六、更新和删除数据

十六、更新和删除数据

作者: 曾经像素有点低 | 来源:发表于2023-03-01 23:53 被阅读0次
UPDATE 和 DELETE.png
  • 利用 UPDATE 和 DELETE 语句进一步操作表数据

1.更新数据 (UPDATE)

更新(修改)表中的数据,可以使用UPDATE 语句。有两种使用 UPDATE的方式:
① 更新表中的特定行;
② 更新表中的所有行。

注意:不要省略 WHERE 子句
在使用 UPDATE 时一定要细心。因为稍不注意,就会更新表中的所有行。

提示:UPDATE 与安全
在客户端/服务器的 DBMS 中,使用 UPDATE 语句可能需要特殊的安全权限。在你使用 UPDATE 前,应该保证自己有足够的安全权限。

基本的 UPDATE 语句由三部分组成,分别是:

  • ① 要更新的表;
  • ② 列名和它们的新值;
  • ③ 确定要更新哪些行的过滤条件

  • 更新一个列中的一行
UPDATE Customers
SET cust_email = 'xiaoma@163.com'
WHERE cust_id = 1005;
UPDATE    要更新的表名 --->(Customers)
//SET 将新值赋给被更新的列   
SET    列 = 新值 -->(cust_email) = (xiaoma@163.com)   
WHERE 条件

  • 更新多个列
UPDATE Customers
SET cust_mobile = '183****0000',
    cust_email = 'xiaoma@163.com'
WHERE cust_id = 1006;

在更新多个列时,只需要使用一条 SET 命令,每个“列=值”对之间用逗号分隔(最后一列之后不用逗号)

提示:在 UPDATE 语句中使用子查询
UPDATE 语句中可以使用子查询,使得能用 SELECT 语句检索出的数据更新列数据。

提示:FROM 关键字
有的 SQL 实现支持在 UPDATE 语句中使用 FROM 子句,用一个表的数据更新另一个表的行。

要删除某个列的值,可设置它为 NULL(假如表定义允许 NULL 值)。如下进行:

UPDATE Customers
SET cust_email = NULL
WHERE cust_id = 1005;

其中 NULL 用来去除 cust_email 列中的值。这与保存空字符串很不同(空字符串用' '表示,是一个值,而 NULL 表示没有值)。

2 删除数据(DELETE)

从一个表中删除(去掉)数据,使用 DELETE 语句。有两种使用 DELETE的方式:
① 从表中删除特定的行;
② 从表中删除所有行。

注意:不要省略 WHERE 子句
在使用 DELETE 时一定要细心。因为稍不注意,就会错误地删除表中所有行。

提示:DELETE 与安全
在客户端/服务器的 DBMS 中,使用 DELETE 语句可能需要特殊的安全权限。在你使用 DELETE 前,应该保证自己有足够的安全权限。


下面的语句从 Customers 表中删除一行:

DELETE FROM Customers
WHERE cust_id = 1006;

提示:友好的外键
第 12 课介绍了联结,简单联结两个表只需要这两个表中的公用字段。也可以让 DBMS 通过使用外键来严格实施关系。存在外键时,DBMS 使用它们实施引用完整性。

例如:例如要向Products 表中插入一个新产品,DBMS 不允许通过未知的供应商 id插入它,因为 vend_id 列是作为外键连接到 Vendors 表的。

使用外键确保引用完整性的一个好处是,
DBMS 通常可以防止删除某个关系需要用到的行。

例如:要从Products 表中删除一个产品,而这个产品用在 OrderItems 的已有订单中,那么 DELETE 语句将抛出错误并中止。这是总要定义外键的另一个理由。


提示:FROM 关键字
在某些 SQL 实现中,跟在 DELETE 后的关键字 FROM 是可选的。但是即使不需要,也最好提供这个关键字。这样做将保证SQL代码在DBMS之间可移植。

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

说明:删除表的内容而不是表
DELETE 语句从表中删除行,甚至是删除表中所有行。但是,DELETE不删除表本身。

提示:更快的删除
如果想从表中删除所有行,不要使用DELETE。可使用TRUNCATE TABLE语句,它完成相同的工作,而速度更快(因为不记录数据的变动)。

相关文章

网友评论

      本文标题:十六、更新和删除数据

      本文链接:https://www.haomeiwen.com/subject/iradldtx.html