数据更新操作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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