Oracle:处理数据

来源:互联网 发布:看美剧用什么视频软件 编辑:程序博客网 时间:2024/06/10 02:46

数据的插入,更新,删除。

DML(data manipulation language数据操作语言):insertupdate delete select

DDL(data definition language数据定义语言):create/alter/drop/truncate表操作

                                                                                    Create/dropview/sequence/index/synonym 视图

DCL(data control language数据控制语言):commitrollback

 

增删改查组合起来可以组成事务。

--insert

insert into emp(empno,ename,dal,deptno)values(1001,’Tom’,3000,10);

可以插入null,可以显示插入:

Insert into emp(empno,ename,dal,deptno)values(1001,’Tom’,null,null);

可以隐式插入:
insert into emp(empno,ename,dal,deptno) values(1001,’Tom’);

 

地址符:&,与JDBCPreparedStatement作用差不多,&相当于一个?

insert into emp(empno,ename,sal,deptno)values(&empno,&ename,&sal,&deptno);

会提示为取地址符输入参数:

Empno的值:1002

Ename的值:’Mary’

Sal的值:3000

Deptno的值:20

会显示原值和新值:


在任何一个DML中都可以使用地址符。

Select * from &t;   t代表了一个表

 

批处理

建立一个表:

create table emp10 as select * from empwhere 1=2;

这样创建表的结构和员工表是一样的。但是里面没有数据。

--一次性将emp中所有的10号部门的员工插入到emp10。子查询可以和任何一个DML语句嵌套。

--使用子查询完成批量导入:会将后面select查询到的记录都插入到emp10中。

Insert into emp10 select * from emp wheredeptno=10;

 

--update中嵌套子查询。

--更新114号员工的工作和工资使其与205号员工相同,可以通过子查询将114号的信息查询出来,在set205中。

Update employees set job_id = (selectjob_id from employees where employee_id=205),salary = (select salary fromemployees where employee_id=205) where employee_id = 114;

--更新时的数据完整性错误,如果更新的值(比如子查询查出来的值)不存在,就会产生错误。

 

删除操作delete,truncate。

Truncate:清空表,只是清空数据,表结构还在,

与delete的区别是:

(1)delete是逐条删除数据;truncate是先摧毁表,再重建。

(2)最根本的区别是:delete是DML(可以回滚)语句,truncate是一个DDL(不可以回滚)语句。

(3)delete语句不会释放空间,truncate会释放空间。

(4)delete会产生碎片,truncate不会。

(5)delete可以闪回,truncate不可以闪回。

 

--关闭回显信息

Set feedback off

--删除的数据量大的时候,使用delete更快。

 

 

事务:

事务的标志:

起始标志:DML语句执行,就开始。

结束标志:提交à显示:commit,

                                     隐式:正常退出exit。DDL语句默认隐式提交。

                     回滚à显示:rollback

                                     隐式:非正常退出,停电,宕机。

 

Oracle中,事务不可以跨越DDL语句,比如执行了select操作,然后执行create操作,再执行DDL,则事务不连续。

 

通过设置会滚点SAVEPOINT

Create table testsavepoint (tidnumber,tname varchar2(20));

Set feedback on

Insert into testsavepoint values(1,’Tom’);

Insert into testsavepoint values(2,’Mary’);

--定义保存点:

Savepoint a;

--插入Mike,误插入成Mke,插入的数据错误,可以根据会滚点来回滚。

Insert into testsavepoint values(3,’Mke’);

Rollback to savepoint a;

 

Oracle只支持读已提交,和串行化,两种事务隔离级别。

Oracle支持三个事务隔离级别,它自己实现了一个隔离级别,还有read only。
原创粉丝点击