
- 利用 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
语句,它完成相同的工作,而速度更快(因为不记录数据的变动)。
网友评论