数据更新操作

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据更新操作(重点)

数据库的操作主要分为两种

·查询Query :SELECT

·更新Update:INSERT(增加),UPDA TE(修改,更新),DELECT(删除)

为了保存原来的emp表的信息,在进行更新操作前将表复制一份

CREATE TABLE myemp AS select * from emp;

此语句执行后,表结构和数据就完整的复制出来了

·添加数据

语法:

INSERT INTO 表名[字段名1,字段名2,….]

V ALUES (值1,值2,…)

注:INTO 不能省略

推荐:按标准做法完成数据的添加

例:

INSERT INTO myemp(empno,ename,job,mgr,hiredate,sal,comm,deptno)

V ALUES (7899,'张三','清洁工',7369,'14-2月-2005',9000,300,40);

注:数据不用加… ,而字符串必须加上…

如果不写列名,一定要保证添加数据的顺序与表中列的顺序一致

例:现要求添加一个新雇员,他没有领导,没有资金

·第一种做法:不明确写出要插入的字段

·第二种做法:用null替代

INSERT INTO MYEMP(empno,ename,job ,hiredate,sal ,deptno)

V ALUES(8899,'侯帅','PM','14-2月-2015',900,40);

INSERT INTO myemp(empno,ename,job,mgr,hiredate,sal,comm,deptno)

V ALUES (8898,'骆义','PG',null,'14-2月-2010',200,null,40);

例:日期格式

之前添加数据时的日期格式使用了表中固定好的格式化,如果现在日期格式为“2010-08-25”, 那么怎么放到表中呢?

SELECT TO_DATE (…25- 08 -2010‟,‟DD- MM - YYYY‟) FROM DUAL;

SELECT TO_DATE (…20100825‟,‟DD- MM - YYYY‟) FROM DUAL;

INSERT INTO myemp(empno,ename,job,mgr,hiredate,sal,comm,deptno)

V ALUES (8897,'骆义','PG',null, TO_DATE (…20100825‟,‟DD- MM - YYYY‟),200,null,40); ·修改数据

语法:

修改全部: UPDATE 表名SET 字段=新值,字段=新值,…

修改局部:UPDATE 表名SET 字段=新值,字段=新值,… WHERE 修改条件

例:将myemp表中所有雇员的佣金改为1000

UPDATE MYEMP SET COMM=1000;

例:将编号为7899的雇员工资改为4500

UPDATE MYEMP SET SAL=4500 WHERE EMPNO=7899

例:将编号为7899的领导取消

UPDATE MYEMP SET MGR=NULL WHERE EMPNO=7899

例:将7369 8899 7788的领导及资金取消

UPDATE MYEMP SET MGR=NULL, COMM=NULL

WHERE EMPNO in ( 7369 ,8899 , 7788)

·删除数据

语法:

删除全部: DELETE FROM 表名;

删除局部:DELETE FROM 表名WHERE 删除条件

例:删除编号为7789的雇员信息

DELETE FROM MYEMP WHERE EMPNO=7789;

例:删除编号为7789 8899 8888的雇员信息

DELETE FROM MYEMP WHERE EMPNO in ( 7369 ,8899 , 7788)

例:删除全部领取资金的雇员信息

DELETE FROM MYEMP WHERE COMM IS NOT NULL;

例:删除全部雇员信息

DELETE FROM MYEMP;

此时,表中数据全部删除,但是表结构还是存在的

事务处理

例:创建一个只包含10部门雇员的临时表emp10

CREATE TABLE EMP10 AS ( SELECT * FROM EMP WHERE DEPTNO=10)

例:删除emp10表中的7782

DELETE FROM EMP10 WHERE EMPNO=7782

事务的特点:ACDI

原子性:事务一旦开始执行,中间不可以打断,要么执行,要反不执行

一致性:事务执行前后的数据在保持一致性

隔离性:中间不可以打断,占有资源不释放

持久性:事务一旦终止,数据的影响是永久性的

从当前窗口查询,该条记录已经删除,但是,打开第二个窗口,再次查询emp10, 发现7782 还存在,证明没有删除,实际上这就是oracle中事务处理的概念

事务处理:即保证数据操作的完整性,所在的操作要么同时成功,要么同时失效

在oracle中对于每一个连接到数据库的窗口(sqlplus,sqlplusw),在连接成功之后都会与数据库间建立一个session,即:每一个连接到数据库的用户创建是一个session 一个session对数据库做了修改后,不会立刻反映到数据库的真实数据上,是允许回滚的,当一个session提交所有的操作之后,数据才真正发生改变

·什么操作是由事务组成的

•一个或多个DML 语句: 查询不属于DML, INSERT UPDATE DELETE

•一个DDL 语句: CREATE ALTER DROP

•一个DCL 语句:

·事务在什么情况下结束

·提交:事务正常线束

·回滚:撤消之前的操作

·事务处理命令

·提交事务:commit

·回滚事务:rollbak

·事务的开始与结束

•以第一个DML 语句的执行作为开始

•以下面的其中之一作为结束:

–COMMIT 或ROLLBACK 语句

–DDL 或DCL 语句(自动提交)

–用户会话正常结束

–系统异常终了

·存储点:SA VEPOINT 存储点名

·回滚到存储点:ROLLBACK TO 存储点名;

区别:

ROLLBACK TO 存储点名:回滚到某一个存储点,该存储点之后执行的事务全部回滚,但是事务并没有结束

ROLLBACK :回滚全部操作,事务正常线束

注:在执行DML语句时必须commit

相关文档
最新文档