以下的文章主要介绍的是在Oracle学习中有哪些的相关事项是值得我们注意的?下面就有Oracle 注意事项的描述,望你会有所收获。
以下的文章首要介绍的是作为一名新手的Oracle学习者,应留意的事项,其实想要学好Oracle并不难,只需把握好其首要的学习构架与相关的留意事项即可,以下的文章首要是对 Oracle留意事项的描绘。
1.Oracle 留意事项: 删去表的留意事项
在删去一个表中的悉数数据时,须运用TRUNCATE TABLE 表名;由于用DROP TABLE,DELETE * FROM 表名时,TABLESPACE表空间该表的占用空间并未开释,重复几回DROP,DELETE操作后,该TABLESPACE上百兆的空间就被耗光了。
2.having 子句的用法
having 子句对 group by 子句所确认的行组进行操控,having 子句条件中只允许触及常量,聚组函数或group by 子句中的列.
3.外部联接"+"的用法
外部联接"+"按其在"="的左面或右边分左联接和右联接.若不带"+"运算符的表中的一个行不直接匹配于带"+"预算符的表中的任何行,则前者的行与后者中的一个空行相匹配并被回来.若二者均不带’+’,则二者中无法匹配的均被回来.运用外部联接"+",能够代替功率非常低下的 not in 运算,大大进步运转速度.例如,下面这条指令履行起来很慢
用外联接进步表衔接的查询速度
在作表衔接(常用于视图)时,常运用以下办法来查询数据:
- SELECTPAY_NO,PROJECT_NAME
- FROMA
- WHEREA.PAY_NONOTIN(SELECTPAY_
- NOFROMBWHEREVALUE>=120000);
可是若表A有10000条记载,表B有10000条记载,则要用掉30分钟才干查完,首要由于NOT IN要进行一条一条的比较,共需求10000*10000次比较后,才干得到成果。该用外联接后,能够缩短到1分左右的时刻:
- SELECTPAY_NO,PROJECT_NAME
- FROMA,B
- WHEREA.PAY_NO=B.PAY_NO(+)
- ANDB.PAY_NOISNULL
- ANDB.VALUE>=12000;
4Oracle 留意事项:.set transaction 指令的用法
在履行大业务时,有时Oracle会报出如下的过错:
- ORA-01555:snapshottooold(rollbacksegmenttoosmall)
这说明Oracle给此业务随机分配的回滚段太小了,这时能够为它指定一个足够大的回滚段,以确保这个业务的成功履行.例如
- settransactionuserollbacksegmentroll_abc;
- deletefromtable_namewhere...
- commit;
回滚段roll_abc被指定给这个delete业务,commit指令则在业务完毕之后取消了回滚段的指定.
5.数据库重建应留意的问题
在运用import进行数据库重建过程中,有些视图或许会带来问题,由于结构输入的次序或许形成视图的输入先于它低层次表的输入,这样树立视图就会失利.要处理这一问题,可采纳分两步走的办法:首要输入结构,然后输入数据.指令举例如下 (uesrname:jfcl,password:hfjf,host sting:ora1,数据文件:expdata.dmp):
- impjfcl/hfjf@ora1file=empdata.dmprows=N
- impjfcl/hfjf@ora1file=empdata.dmpfull=Ybuffer=64000
- commit=Yignore=Y
***条指令输入一切数据库结构,但无记载.第2次输入结构和数据,64000字节提交一次.ignore=Y选项确保第2次输入既使目标存在的情况下也能成功.
- selecta.empnofromempawherea.empnonotin
- (selectempnofromemp1wherejob=’SALE’);
假使运用外部联接,改写指令如下:
- selecta.empnofromempa,emp1b
- wherea.empno=b.empno(+)
- andb.empnoisnull
- andb.job=’SALE’;
能够发现,运转速度明显进步.
6.Oracle 留意事项:从已知表新建另一个表:
- CREATETABLEb
- ASSELECT*(能够是表a中的几列)
- FROMa
- WHEREa.column=...;
7.查找、删去重复记载:
法一: 用Group by句子 此查找很快的
select count(num), max(name) from student --查找表中num列重复的,列出重复的记载数,并列出他的name特点
group by num
having count(num) >1 --按num分组后找出表中num列重复,即呈现次数大于一次
delete from student(上面Select的)
这样的话就把一切重复的都删去了。-----稳重
法二:当表比较大(例如10万条以上)时,这个办法的功率之差令人无法忍受,需求另想办法:
履行下面SQL句子后就能够显现一切DRAWING和DSNO相同且重复的记载
- SELECT*FROMEM5_PIPE_PREFAB
WHERE ROWID!=(SELECT MAX(ROWID) FROM EM5_PIPE_PREFAB D --D相当于First,Second
- WHEREEM5_PIPE_PREFAB.DRAWING=D.DRAWINGAND
- EM5_PIPE_PREFAB.DSNO=D.DSNO);
以上的相关内容便是对Oracle 留意事项的介绍,望你能有所收成。
【修正引荐】
- Oracle查询记载数在什么环境下会呈现问题?
- Oracle字符集的检查与修正全集
- Oracle 分页和排序功能在数据库中怎么完成?
- Oracle移植到MySQL会碰到那些问题?
- Oracle多条件查询的分页存储怎么操作?
知优网 » Oracle 注意事项有哪些?(oracle使用方法)