`
ZYzhongyang
  • 浏览: 6675 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
文章分类
社区版块
存档分类
最新评论
阅读更多
1. 删除表的注意事项
  在删除一个表中的全部数据时,须使用TRUNCATE TABLE 表名;因为用DROP TABLE,DELETE * FROM 表名时,
TABLESPACE表空间该表的占用空间并未释放,反复几次DROP,DELETE操作后,该TABLESPACE上百兆的空间就被耗光了。
  
  2.having 子句的用法
  having 子句对 group by 子句所确定的行组进行控制,having 子句条件中只允许涉及常量,聚组函数或group by 子句中的列.
  
  3.外部联接"+"的用法
  外部联接"+"按其在"="的左边或右边分左联接和右联接.若不带"+"运算符的表中的一个行不直接匹配于带"+"预算符的表中的任何行,
则前者的行与后者中的一个空行相匹配并被返回.若二者均不带’+’,则二者中无法匹配的均被返回.利用外部联接"+",
可以替代效率十分低下的 not in 运算,大大提高运行速度.例如,下面这条命令执行起来很慢
  
  用外联接提高表连接的查询速度
  在作表连接(常用于视图)时,常使用以下方法来查询数据:
  SELECT PAY_NO, PROJECT_NAME
  FROM A
  WHERE A.PAY_NO NOT IN (SELECT PAY_
  NO FROM B WHERE VALUE >=120000);
  ---- 但是若表A有10000条记录,表B有10000条记录,则要用掉30分钟才能查完,主要因为NOT IN要进行一条一条的比较,
共需要10000*10000次比较后,才能得到结果。该用外联接后,可以缩短到1分左右的时间:
  SELECT PAY_NO,PROJECT_NAME
  FROM A,B
  WHERE A.PAY_NO=B.PAY_NO(+)
  AND B.PAY_NO IS NULL
  AND B.VALUE >=12000;
  
  4.set transaction 命令的用法
  在执行大事务时,有时oracle会报出如下的错误:
  ORA-01555:snapshot too old (rollback segment too small)
  这说明oracle给此事务随机分配的回滚段太小了,这时可以为它指定一个足够大的回滚段,以确保这个事务的成功执行.例如
  
  set transaction use rollback segment roll_abc;
  delete from table_name where ...
  commit;
  回滚段roll_abc被指定给这个delete事务,commit命令则在事务结束之后取消了回滚段的指定.
  
  5.数据库重建应注意的问题
  在利用import进行数据库重建过程中,有些视图可能会带来问题,因为结构输入的顺序可能造成视图的输入先于它低层次表的输入,
这样建立视图就会失败.要解决这一问题,可采取分两步走的方法:首先输入结构,然后输入数据.命令举例如下
(uesrname:jfcl,password:hfjf,host sting:ora1,数据文件:expdata.dmp):
  
  imp jfcl/hfjf@ora1 file=empdata.dmp rows=N
  
  imp jfcl/hfjf@ora1 file=empdata.dmp full=Y buffer=64000
  
  commit=Y ignore=Y
  
  第一条命令输入所有数据库结构,但无记录.第二次输入结构和数据,64000字节提交一次.ignore=Y选项保证第二次输入既使对象存在的情况下也能成功.
  
  select a.empno from emp a where a.empno not in
  
  (select empno from emp1 where job=’SALE’);
  
  倘若利用外部联接,改写命令如下:
  
  select a.empno from emp a ,emp1 b
  
  where a.empno=b.empno(+)
  
  and b.empno is null
  
  and b.job=’SALE’;
  
  可以发现,运行速度明显提高.
  
  6.从已知表新建另一个表:
  CREATE TABLE b
  AS SELECT * (可以是表a中的几列)
  FROM a
  WHERE a.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 * FROM EM5_PIPE_PREFAB
  WHERE ROWID!=(SELECT MAX(ROWID) FROM EM5_PIPE_PREFAB D --D相当于First,Second
  WHERE EM5_PIPE_PREFAB.DRAWING=D.DRAWING AND
  EM5_PIPE_PREFAB.DSNO=D.DSNO);
  
  ---- 执行下面SQL语句后就可以刪除所有DRAWING和DSNO相同且重复的记录
  DELETE FROM EM5_PIPE_PREFAB
  WHERE ROWID!=(SELECT MAX(ROWID) FROM EM5_PIPE_PREFAB D
  WHERE EM5_PIPE_PREFAB.DRAWING=D.DRAWING AND
  EM5_PIPE_PREFAB.DSNO=D.DSNO);
  
  8.返回表中[N,M]条记录:
  取得某列中第N大的行
  select column_name from
  (select table_name.*,dense_rank() over (order by column desc) rank from table_name)
  where rank = &N;
  
  假如要返回前5条记录:
  select * from tablename where rownum,>=,=,Between...and。由于rownum是一个总是从1开始的伪列,Oracle 认为这种条件 不成立,查不到记录.
  
  另外,这个方法更快:
  select * from (
  select rownum r,a from yourtable
  where rownum  10
  这样取出第11-20条记录!(先选再排序再选)
  要先排序再选则须用select嵌套:内层排序外层选。
  
  rownum是随着结果集生成的,一旦生成,就不会变化了;同时,生成的结果是依次递加的,没有1就永远不会有2!
  rownum 是在 查询集合产生的过程中产生的伪列,并且如果where条件中存在 rownum 条件的话,则:
  1: 假如 判定条件是常量,则:
  只能 rownum = 1, SPOOL ON.SQL
  SQL >SELECT ‘ALTER VIEW ‘||TNAME||’
  COMPILE;’ FROM TAB;
  SQL >SPOOL OFF
  然后执行ON.SQL即可。
  SQL >@ON.SQL
  当然,授权和创建同义词也可以快速进行,如:
  SQL >SELECT ‘GRANT SELECT ON ’
  ||TNAME||’ TO USERNAME;’ FROM TAB;
  SQL >SELECT ‘CREATE SYNONYM
  ‘||TNAME||’ FOR USERNAME.’||TNAME||’;’ FROM TAB;
  
  10.读写文本型操作系统文件
  ---- 在PL/SQL 3.3以上的版本中,UTL_FILE包允许用户通过PL/SQL读写操作系统文件。如下:
  
  DECALRE
  FILE_HANDLE UTL_FILE.FILE_TYPE;
  BEGIN
  FILE_HANDLE:=UTL_FILE.FOPEN(
  ‘C:\’,’TEST.TXT’,’A’);
  UTL_FILE.PUT_LINE(FILE_HANDLE,’
  HELLO,IT’S A TEST TXT FILE’);
  UTL_FILE.FCLOSE(FILE_HANDLE);
  END;
  
  11.在数据库触发器中使用列的新值与旧值
  ---- 在数据库触发器中几乎总是要使用触发器基表的列值,如果某条语句需要某列修改前的值,
使用:OLD就可以了,使用某列修改后的新值,用:NEW就可以了。如:OLD.DEPT_NO,:NEW.DEPT_NO。
  
  12.数据库文件的移动方法
  当想将数据库文件移动到另外一个目录下时,可以用ALTER DATABASE命令来移动(比ALTER TABLESPACE适用性强):
  1. 使用SERVER MANAGER关Oracle入门教程闭实例.
  SVRMGR > connect internal;
  SVRMGR > shutdown;
  SVRMGR >exit;
  2. 使用操作系统命令来移动数据库文件位置(假设这里操作系统为SOLARIS 2.6). 在UNIX中用 mv命令可以把文件移动到新的位置,
  #mv /ora13/orarun/document.dbf /ora12/orarun
  3. 装载数据库并用alter database命令来改变数据库中的文件名.
  SVRMGR > connect internal;
  SVRMGR > startup mount RUN73;
  SVRMGR > alter database rename file
  > ‘/ ora13/orarun/document.dbf’
  > ‘/ ora12/orarun/document.dbf’;
  4. 启动实例.
  SVRMGR > alter database open;
分享到:
评论

相关推荐

    oracle基础教程

    oracle基础教程 课程说明 1 课程介绍 1 课程目标 1 相关资料 1 第1章 ORACLE数据库概述 2 1.1 产品概述 2 1.1.1 产品简介 2 1.1.2 基本概念 3 1.2 ORACLE系统结构 4 1.2.2 ORACLE物理结构 4 1.2.3 系统全局区 6 ...

    oracle基础知识入门

    对于初学者来说,掌握Oracle基础知识是进入数据库领域的第一步。本文将深入浅出地介绍Oracle数据库的一些核心概念和基本操作,帮助你快速入门。 一、Oracle数据库系统概述 Oracle数据库是由美国Oracle公司开发的,...

    oracle基础资料学习oracle的来下

    oracle ORACLE 基础资料 基础知识 培训资料oracle ORACLE 基础资料 基础知识 培训资料oracle ORACLE 基础资料 基础知识 培训资料oracle ORACLE 基础资料 基础知识 培训资料

    Oracle基础教程

    Oracle 基础教程 Oracle 是一款流行的关系型数据库管理系统,由 Oracle 公司开发和维护。作为一个功能强大且广泛应用的数据库管理系统,Oracle 具有强大的数据存储和管理能力,广泛应用于各种 Industries,包括金融...

    oracle基础教程ppt

    通过本Oracle基础教程PPT,你将逐步了解并掌握这些概念,为你的Oracle学习之路打下坚实基础。随着对Oracle的理解加深,你还可以进一步探索高级主题,如数据仓库、分布式数据库、RAC集群等。学习Oracle不仅是技术的...

    Oracle 基础知识 -大全- 原创整理.pdf

    以下将详细讲解Oracle基础知识,包括数据库管理、表的创建与维护、SQL查询技巧、权限管理以及PL/SQL编程等方面。 1. **Oracle数据库优势** Oracle数据库因其高性能、高可用性和安全性而受到青睐。它支持大规模并发...

    oracle基础知识考试题_答案.zip

    这个"oracle基础知识考试题_答案.zip"压缩包文件包含了关于Oracle数据库的基础知识学习材料,特别是针对初学者或者准备Oracle相关资格考试的人员。 首先,Oracle数据库的核心概念包括SQL(结构化查询语言)的使用,...

    oracle基础知识回顾与练习.zip

    本资料“oracle基础知识回顾与练习.zip”是针对Oracle数据库的基础知识进行整理,采用纯SQL语句的形式,适合初学者及需要巩固基础的用户进行学习和实践。 1. SQL基础 SQL(Structured Query Language)是用于管理...

    Oracle基础教程.pdf

    Oracle基础教程.pdf

    ORACLE基础知识及故障定位.pdf

    ORACLE基础知识及故障定位 学校oracle基础知识,包含所有orcale的数据库知识,以及常见问题解决思路,解决方案,问题怎么定位。

    oracle基础

    oracle基础创建表,删除表,修改表,查看表的结构和数据,添加数据语法:删除数据语法,更新数据语法:基础查询语法:

    Oracle基础教程源码下载 James Perry , Gerald Post 著,钟鸣 郝玉洁 等译

    《Oracle基础教程》是由James Perry和Gerald Post合著,并由钟鸣、郝玉洁等人翻译的一本教育性书籍,旨在帮助初学者和专业人士理解Oracle数据库的基础知识。源码下载部分提供了书中各章节实例的数据文件,使读者能够...

    oracle基础资料

    本文将基于"Oracle基础资料"这一主题,结合提供的压缩包文件"Oracle8i_9i数据库基础.doc",深入探讨Oracle数据库的基础知识,包括其核心概念、数据类型、SQL语句、表的创建以及备份恢复策略。 首先,Oracle数据库的...

    图灵邮电版oracle基础教程+数据库文件

    oracle基础教程,很适合oracle的学习和数据库的操作练习。同时里面主要是以练习为主。包括了ORACLE的基础操作。

    ORACLE基础培训文档

    这篇“Oracle基础培训文档”旨在为初学者提供一个全面了解Oracle数据库的平台,帮助大家掌握其基本概念、操作和管理技巧。 首先,我们从基础开始,Oracle数据库的核心是SQL(结构化查询语言),它是用于管理和处理...

    oracle基础教程.pdf

    "Oracle基础教程.pdf" 提供了丰富的学习资源,共分为21章,涵盖了Oracle数据库的核心概念和技术。 第1章:Oracle简介 本章将介绍Oracle数据库的历史、特点和应用领域,以及它在现代企业级数据管理中的重要地位。你...

    ORACLE 基础训练

    以上是Oracle基础训练的主要内容,通过深入学习和实践,你将能熟练掌握Oracle数据库的基础操作和高级特性。"Oracle基礎教程(一).ppt"至"Oracle基礎教程(三).ppt"中的材料将帮助你逐步掌握这些知识,为你的数据库管理...

    Oracle基础知识

    "Oracle基础知识"涵盖了SQL语言的基本概念以及Oracle 10G版本的相关特性。以下将详细介绍这些知识点。 首先,SQL(Structured Query Language)是用于管理和处理关系数据库的标准编程语言。SQL基础包括以下几个部分...

    Oracle基础.ppt

    Oracle 基础知识点总览 Oracle 基础知识点可以概括为以下几个方面: 1. Oracle 概述 Oracle 是一种对象关系数据库管理系统(ORDBMS),它提供了关系数据库系统和面向对象数据库系统这二者的功能。Oracle 数据库...

Global site tag (gtag.js) - Google Analytics