Oracle入门学习六
事务:把一组操作看做一个工作单元,要么都执行,要么都不执行。dml操作才有事务,查询没有事务。
- 开始事务:从上一次的事务结束之后,从第一次dml操作,就自动开启了事务
- 提交事务:commit
- 回滚事务:rollback
createtable bank(
id
number(5) primarykey,moneynumber(10) check(money>0))
insertinto bank values (1,3000);insertinto bank values (2,5000);update bank setmoney=money-1000where id=1;update bank setmoney=money+1000where id=2;beginupdate bank setmoney=money-1000where id =1;
update bank setmoney=money+1000where id =2;
commit;
exception
when others then
rollback;
end;
select*from bank;
视图:一个虚拟表,不存放数据,只存sql。建立在一张表或多张表的数据查询基础上。oracle普通用户本身没有创建视图权限,需要授予。
grantcreateviewto scott;
createview abcasselect e.empno,e.ename,d.dname from emp e,dept d where e.deptno=d.deptno;
select*from abc;
View Code
索引:在某列上创建索引,系统就会对该列进行排序,并且创建该列的索引目录。如果我们按这个条件来查询数据,会在该列的索引目录上找,比一条一条去看全部数据查找满足条件的要快。主键、外键创建,系统默认建立索引。
createindex ix_emp on emp (ename);dropindex ix_emp;
频繁用于搜索、查询选择、排序、分组的列最好就创建索引。该列的值没有几个不一样的(???)、或者该表数据不多,无需创建索引。
索引使用的优化知识:
- 查询列、减少*的使用,返回需要的列就好了
- where条件如果多个条件表达式,包含索引列的条件表达放前面。
- 避免order by使用表达式
- 一个表格一个索引就够了。
序列:一个自增的变量。
select*from bank;deletefrom bank;create sequence sq_bank;insertinto bank values(sq_bank.nextval,500);commit;create sequence sq_bank1start
with100increment
by5nomaxvalue;
insertinto bank values(sq_bank1.nextval,500);commit;
select sq_bank1.currval from dual;
以上是 Oracle入门学习六 的全部内容, 来源链接: utcz.com/z/533453.html