以下的文章主要介绍的是在Oracle学习中有哪些的相关事项是值得我们注意的?下面就有Oracle 注意事项的描述,望你会有所收获。

以下的文章首要介绍的是作为一名新手的Oracle学习者,应留意的事项,其实想要学好Oracle并不难,只需把握好其首要的学习构架与相关的留意事项即可,以下的文章首要是对 Oracle留意事项的描绘。

1.Oracle 留意事项: 删去表的留意事项

Oracle 注意事项有哪些?(oracle使用方法)  注意事项 第1张

在删去一个表中的悉数数据时,须运用TRUNCATE TABLE 表名;由于用DROP TABLE,DELETE * FROM 表名时,TABLESPACE表空间该表的占用空间并未开释,重复几回DROP,DELETE操作后,该TABLESPACE上百兆的空间就被耗光了。

2.having 子句的用法

having 子句对 group by 子句所确认的行组进行操控,having 子句条件中只允许触及常量,聚组函数或group by 子句中的列.

3.外部联接"+"的用法

外部联接"+"按其在"="的左面或右边分左联接和右联接.若不带"+"运算符的表中的一个行不直接匹配于带"+"预算符的表中的任何行,则前者的行与后者中的一个空行相匹配并被回来.若二者均不带’+’,则二者中无法匹配的均被回来.运用外部联接"+",能够代替功率非常低下的 not in 运算,大大进步运转速度.例如,下面这条指令履行起来很慢

用外联接进步表衔接的查询速度

在作表衔接(常用于视图)时,常运用以下办法来查询数据:

  1. SELECTPAY_NO,PROJECT_NAME
  2. FROMA
  3. WHEREA.PAY_NONOTIN(SELECTPAY_
  4. NOFROMBWHEREVALUE>=120000);

可是若表A有10000条记载,表B有10000条记载,则要用掉30分钟才干查完,首要由于NOT IN要进行一条一条的比较,共需求10000*10000次比较后,才干得到成果。该用外联接后,能够缩短到1分左右的时刻:

  1. SELECTPAY_NO,PROJECT_NAME
  2. FROMA,B
  3. WHEREA.PAY_NO=B.PAY_NO(+)
  4. ANDB.PAY_NOISNULL
  5. ANDB.VALUE>=12000;

4Oracle 留意事项:.set transaction 指令的用法

在履行大业务时,有时Oracle会报出如下的过错:

  1. ORA-01555:snapshottooold(rollbacksegmenttoosmall)

这说明Oracle给此业务随机分配的回滚段太小了,这时能够为它指定一个足够大的回滚段,以确保这个业务的成功履行.例如

  1. settransactionuserollbacksegmentroll_abc;
  2. deletefromtable_namewhere...
  3. commit;

回滚段roll_abc被指定给这个delete业务,commit指令则在业务完毕之后取消了回滚段的指定.

5.数据库重建应留意的问题

在运用import进行数据库重建过程中,有些视图或许会带来问题,由于结构输入的次序或许形成视图的输入先于它低层次表的输入,这样树立视图就会失利.要处理这一问题,可采纳分两步走的办法:首要输入结构,然后输入数据.指令举例如下 (uesrname:jfcl,password:hfjf,host sting:ora1,数据文件:expdata.dmp):

  1. impjfcl/hfjf@ora1file=empdata.dmprows=N
  2. impjfcl/hfjf@ora1file=empdata.dmpfull=Ybuffer=64000
  3. commit=Yignore=Y

***条指令输入一切数据库结构,但无记载.第2次输入结构和数据,64000字节提交一次.ignore=Y选项确保第2次输入既使目标存在的情况下也能成功.

  1. selecta.empnofromempawherea.empnonotin
  2. (selectempnofromemp1wherejob=’SALE’);

假使运用外部联接,改写指令如下:

  1. selecta.empnofromempa,emp1b
  2. wherea.empno=b.empno(+)
  3. andb.empnoisnull
  4. andb.job=’SALE’;

能够发现,运转速度明显进步.

6.Oracle 留意事项:从已知表新建另一个表:

  1. CREATETABLEb
  2. ASSELECT*(能够是表a中的几列)
  3. FROMa
  4. 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相同且重复的记载

  1. SELECT*FROMEM5_PIPE_PREFAB

WHERE ROWID!=(SELECT MAX(ROWID) FROM EM5_PIPE_PREFAB D --D相当于First,Second

  1. WHEREEM5_PIPE_PREFAB.DRAWING=D.DRAWINGAND
  2. EM5_PIPE_PREFAB.DSNO=D.DSNO);

以上的相关内容便是对Oracle 留意事项的介绍,望你能有所收成。

【修正引荐】

  1. Oracle查询记载数在什么环境下会呈现问题?
  2. Oracle字符集的检查与修正全集
  3. Oracle 分页和排序功能在数据库中怎么完成?
  4. Oracle移植到MySQL会碰到那些问题?
  5. Oracle多条件查询的分页存储怎么操作?
转载请说明出处
知优网 » Oracle 注意事项有哪些?(oracle使用方法)

发表评论

您需要后才能发表评论