第17章 SQL更新数据.ppt

第17章 SQL更新数据.ppt

ID:60906976

大小:66.00 KB

页数:21页

时间:2020-02-04

第17章  SQL更新数据.ppt_第1页
第17章  SQL更新数据.ppt_第2页
第17章  SQL更新数据.ppt_第3页
第17章  SQL更新数据.ppt_第4页
第17章  SQL更新数据.ppt_第5页
资源描述:

《第17章 SQL更新数据.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第17章SQL更新数据Oracle中可以利用DML更新数据。其DML语句与其他数据库的SQL语法完全一致——都是遵守了工业标准。与查询操作不同,更新数据将导致数据库状态的变化,因此,Oracle同样提供了提交与回滚操作来保证数据库状态的一致性。Oracle常见的更新操作包括:插入数据;修改数据;删除数据。17.1插入数据插入数据即向数据表中插入新的记录,插入数据应该使用insert命令。插入数据的主要途径包括:通过指定各列的值直接插入、通过子查询插入、通过视图插入等。对于通过视图插入的方式,大多数应该使用inst

2、eadof触发器来进行处理,因此,本章将着重讲述前两种插入方式。17.1.1insert语句向表中插入数据insertintopeoplevalues(people_seq.nextval,'张文','ACT');insertintopeople(id,name)values(people_seq.nextval,'柳平');注意与说明:当使用第二种方式插入数据时,列名列表和列值列表必须保持一致,即每个列的数据类型和实际插入类型保持一致。17.1.2利用子查询批量插入数据Oracle可以利用子查询向表中批量插入数

3、据。此时的SQL语句除了包含insertinto命令之外,还应该包含一个查询语句。insertintopeopleselectemployee_id,employee_name,statusfromt_employeeswhereemployee_id>=3;17.1.3insert语句与默认值当向数据表中插入数据时,如果表中某列含有默认值约束,对于该列又没有显式赋值,那么默认值将作为列值进行插入。altertablepeoplemodify(statusvarchar2(3)default'ACT');inse

4、rtintopeople(id,name)values(12,'殷商');select*frompeoplewhereid=12;17.1.4insert语句与唯一性约束当使用insert语句时,需要注意的是唯一性约束。当插入的列值违反了唯一性约束时,Oracle将抛出错误。例如,表people中,列id为表的主键,尝试向其中插入数据:insertintopeoplevalues(11,'张三','ACT')对于数值型主键来说,在插入数据时,使用序列来获得主键值是一个好的选择。17.1.5insert语句与外键约

5、束insert语句更新数据表时,同样会引起外键约束的检查。altertablet_salaryaddconstraintfk_employee_idforeignkey(employee_id)referencest_employees(employee_id);insertintot_salary(salary_id,employee_id,month,salary)values(31,20,'1月',5000);17.2修改数据像其他数据库一样,Oracle使用update命令来修改数据。update修改数据

6、一般有以下几种情况:直接修改单列的值、直接修改多列的值、利用where子句限制修改范围和利用视图修改数据。利用视图修改数据往往需要利用insteadof触发器实现,因此本节将着重讲述前三种更新方式。17.2.1利用update修改单列的值update可以修改单列的值。updatepeoplesetstatus='CXL';select*frompeople;17.2.2利用update修改多列的值update命令既可以修改单列值,也可以同时修改多列的值。例如,有时为了合并两个表的数据,需要为其中一个的主键id添加

7、一个基数,以避免两个表中主键的重复。此时,需要修改表中所有id的值。以表people为例,在修改列id的值的同时,也可以修改status列的值。updatepeoplesetid=(20000+id),status='ACT';17.2.3利用where子句限制修改范围where子句是update命令最常用的子句。不使用where子句的update命令是不安全的。因为不使用where子句将一次性修改表中所有记录,这将带来极大的安全隐患。为了将表people中,id大于20010的status列修改为“CXL”则可

8、以利用如下所示的SQL语句。updatepeoplesetstatus='CXL'whereid>20010;17.3删除数据数据删除的目标是数据表中的记录,而不是针对列来进行的。删除数据应该使用delete命令或者truncate命令。其中delete命令的作用目标是表中的某些记录,而truncate命令的作用目标是整个数据表。17.3.1用delete命令删除数据像u

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。