Oracle数据库学习<四>

来源:互联网 发布:2016网络播放器软件 编辑:程序博客网 时间:2024/05/22 00:34

3.2 数据的更新

3.2.1 简单的数据更新

UPDATE 语句用来对数据表中的数据进行更新。下边的语句用来将表 T_Person 中所有
人员的 FREMARK 字段值更新为“SuperMan” :
UPDATE T_Person SET FRemark = 'SuperMan'

UPDATE 语句用来将所有人员的 FRemark 字段更新为“Sonic” ,并且将年龄更新为 25
UPDATE T_Person SET FRemark = 'Sonic',FAge=25
多个列之间需要使用逗号分隔开。 

 

3.2.2 带 WHERE 子句的 UPDATE 语句

HERE 语句中我们设定适当的过滤条件,这样 UPDATE 语句只会更新符合 WHERE 子句中过滤条件的行,而其他行的数据则不被修改。执行下边的 UPDATE 语句:
UPDATE T_Person SET FAge = 12 WHERE FNAME='Tom'

 

可以使用复杂的 WHERE 语句来满足更加复杂的需求,比如下面的 UPDATE 语句就用来将 FNAME 等于’Jim’或者’LXF’的行的 FAge 字段更新为 22
UPDATE T_Person SET FAge = 22 WHERE FName ='jim' OR FName='LXF'

这里我们使用 OR 逻辑运算符来组合两个条件来实现复杂的过滤逻辑, 我们还可以使用
OR、NOT 等运算符实现更加复杂的逻辑,甚至能够使用模糊查询、子查询等实现高级的数
据过滤

 

 

3.2.3 非空约束对数据更新的影响

T_Debt 表的 FAmount 字段是有非空约束

UPDATE T_Debt set FAmount = NULL WHERE FPerson='Tom'

错误信息:
不能将值 NULL 插入列 'FAmount',表 'demo.dbo.T_Debt';列不允许有空值。UPDATE
失败。

 

 

3.2.3 主键对数据更新的影响

主键是在同一张表中必须是唯一的, 如果在进行数据更新的时候指定的主键与表中已有
的数据重复的话则会导致违反主键约束的异常。

UPDATE T_Debt set FNumber = '2' WHERE FPerson='Tom'
由于表中已经存在一条 FNumber 字段为 的记录,所以运行这句 SQL 的时候会报出类似
如下的错误信息:
违反了 PRIMARY KEY 约束 'PK__T_Debt__1920BF5C'。不能在对象 'dbo.T_Debt' 中插入重复键。

3.2.4 外键对数据更新的影响

外键是指向另一个表中已有数据的约束,因此外键值必须是在目标表中存在的。如果更
新后的数据在目标表中不存在的话则会导致违反外键约束异常。


UPDATE T_Debt set FPerson = 'Merry' WHERE FNumber='1

由于在 T_Person 表中不存在 FName 字段等于“Merry”的数据行,所以会数据库系统会
报出类似如下的错误信息:
UPDATE 语句与 FOREIGN KEY 约束"FK__T_Debt__FPerson__1A14E395"冲突。该冲突发生于数据库"demo",表"dbo.T_Person", column 'FName'

 

3.3 数据的删除

数据库中的数据一般都有一定的生命周期,当数据不再需要的时候我们就要将其删除,
执行 DELETE 语句就可以将数据从表中删除。不过需要注意的就是如果被删除的数据行是
某个外键关联关系中的被引用数据的话,则进行删除的时候会失败,如果要删除成功则必须
首先删除引用者才可以。

 

3.3.1 简单的数据删除

DELETE FROM T_Debt;
DELETE FROM T_Person;

 

3.3.2 带 WHERE 子句的 DELETE 语句

我们要删除年龄大于 20 岁或者来自火星(Mars)的人员,因此使用带复合逻辑 WHERE
子句
DELETE FROM T_Person WHERE FAge > 20 or FRemark = 'Mars'

0 0