重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
oracle入门知识
成都创新互联公司拥有10余年的建站服务经验,在此期间,我们发现较多的客户在挑选建站服务商前都非常的犹豫。主要问题集中:在无法预知自己的网站呈现的效果是什么样的?也无法判断选择的服务商设计出来的网页效果自己是否会满意?成都创新互联公司业务涵盖了互联网平台网站建设、移动平台网站制作、网络推广、按需开发等服务。成都创新互联公司网站开发公司本着不拘一格的网站视觉设计和网站开发技术相结合,为企业做网站提供成熟的网站设计方案。
一个表空间只能属于一个数据库每个数据库最少有一个控制文件(建议 个 分别放在不同的磁盘上)
每个数据库最少有一个表空间(SYSTEM表空间)
建立SYSTEM表空间的目的是尽量将目的相同的表存放在一起 以提高使用效率 只应存放数据字典
每个数据库最少有两个联机日志组 每组最少一个联机日志文件
一个数据文件只能属于一个表空间一个数据文件一旦被加入到一个表空间中 就不能再从这个表空间中移走 也不能再加入到其他表空间中
建立新的表空间需要建立新的数据文件
MIT后 数据不一定立即写盘(数据文件)
一个事务即使不被提交 也会被写入到重做日志中
oracle server可以同时启动多个数据库
一套操作系统上可以安装多个版本的ORACLE数据库系统(UNIX可以 NT不可以)
lishixinzhi/Article/program/Oracle/201311/16610
oracle是块结构语言,oracle程序划分成几个部分,并在每个部分中写入逻辑代码块,每个块由三个子部分组成。
声明部分:此部分是以关键字DECLARE开头。这是一个可选部分,并定义了程序中要使用的所有变量,游标,子程序和其他元素。
可执行命令部分:此部分包含在关键字BEGIN和END之间,这是一个强制性部分。由程序的可执行oracle语句组成。应该有至少一个可执行代码行,可以只是一个NULL命令,表示不执行任何操作。
异常处理部分 :此部分以关键字EXCEPTION开头。这是一个可选部分,包含处理程序中错误的异常。
每个oracle语句以分号(;)结尾。使用BEGIN和END可以将oracle块嵌套在其他oracle块中。以下是Poracle块的基本结构。
Hello World示例:
END;行表示oracle块的结尾。要从oracle命令行运行代码,需要在代码的最后一行之后键入/字符。当上述代码在oracle提示符下执行时,它会产生以下结果:
oracle标识符:oracle标识符是常量,变量,异常,过程,游标和保留字。标识符包括一个字母,可选地后跟多个字母,数字,美元符号,下划线和数字符号,不得超过30个字符。
默认情况下,标识符不区分大小写。例如,可以使用integer或INTEGER来表示一个数值。 不能使用保留关键字作为标识符。
扩展资料
oracle注释程序:注释可以在编写的oracle代码中包含的说明性文字,并帮助其他人阅读源代码。所有编程语言都允许某种形式的注释。
oracle支持单行和多行注释。注释中的所有字符都被oracle编译器忽略。oracle单行注释以分隔符开头 --(双连字符),多行注释由/*和*/括起来。
当上述代码在oracle提示符下执行时,会产生以下结果:
oracle变量的名称由可选的字母,数字,美元($)符号,下划线和数字符号组成,不能超过30个字符。 默认情况下,变量名不区分大小写。不能将保留的oracle关键字用作变量名称。
oracle编程语言允许定义各种类型的变量,如:日期时间数据类型,记录,集合等,我们将在后面的章节中介绍。 在本章中仅学习基本的变量类型。
Oracle的学习主要有两个路线。 一个是Oracle的开发,主要用到Sql语句,一般来说做开发的都要用到其他的开发语言,如PB、VB、VC、Java、Delphi、.net等等,这样来配合使用开发C/S和B/s架构的程序。 一个是Oracle的管理,也就是人们常说的DBA,英文Database Administrator. 主要是维护数据库的工作。只用学会SQL语句和Oracle的结构等就可以了。 DBA需要对Oracle有一个很深的认识,否则难成大器。 而Oracle开发的话,相对来说不一定对Oracle有太深 的了解,当然你懂得越多,开发出来的肯定会越好。 可以找一本oracle的书看看,如果有人可以请教当然更好.oracle是数据库中经典的也是最抽象的,呵呵 要有心理准备,不过现在好像出新版的了,应该会改进一些!下边是些学习参考资料:Oracle Applications应用大全 本书详细介绍了如何实现和使用Oracle公司的ERP应用程序。全书分为五部分:第一部分概述ERP系统和Oracle公司的各种ERP应用程序;第二部分介绍Oracle Applications的实现方法,内容包括项目管理技术、封装软件以及ERP系统的实现,并讨论了软件项目、关键活动和交付使用阶段;第三部分详述如何配置和使用各种核心财务、分销等。ERP/CRM/SCM/BI协同商务建设指南 信息时代企业要生存、竞争与发展,必须尽快综合应用ERP(企业资源规划)、CRM(客户关系管理)、SCM(供应链管理)、BI(商业智能)新一代电子商务体系。本书主要内容包括:当前企业信息化发展趋势及基本原理;企业信息化体系结构,ERP、CRM、SCM、BI等核心技术要素;SAP、Oracle、I2、 SAS、Siebel、用友、金蝶等管理厂商!ERP概要分析采购、销售与分销、库存 本书以作者调研过的100多家企业的实际业务流程为依据,参考用友、SAP、ORACLE、JDE在软件中的实现方法,结合作者近10年来在ERP系统分析实践中积累的经验,对企业实际业务流程进行归类,给出了不同业务流程在采购、销售及分销、库存管理中的处理方法,以及在ERP软件中的设计方法。本书分析了在采购环节的质量控制、预!这三本书可以,值得去看看,最后祝你学习愉快!入门学习教程: ;restype=-1sortby=3suffix=page=1id=3
Oracle是目前最流行的数据库之一。功能强大,性能卓越。
oracle完全可以代表数据库技术的最高水平,因此学习oracle需要你具备一定基础:
1.学习过一门编程语言(java,c,c++均可)。
2.最好学习过一门别的数据库(sql server,mysql,access)。
严禁没有任何基础的同志学习oracle,那样你会浪费时间,同时还打击学习oracle的信心,我个人认为学习流程为:
第一阶段:计算机基础(了解它的基本原理)。
第二阶段:学习一门编程语言(java或者c,c++)。
第三阶段:学习oracle数据库或是别的数据库。
成为一个oracle高手的秘诀就是:
理解小的知识点-做小练习-把小的知识点连成线(知识线)-做oracle项目-把知识线形成知识面-深刻理解
基础部分:
Oracle基本使用
Oracle用户管理
Oracle表管理
高级部分:
Oracle表的查询
Oracle的函数
Oracle数据库管理
Oracle的权限、角色
Pl/sql编程
索引,约束和事务
oracle的体系太庞大了,对于初学者来说,难免会有些无从下手的感觉,什么都想学,结果什么都学不好,分享下自己的学习经验。
一、定位
oracle分两大块,一块是开发,一块是管理。
开发主要是写写存储过程、触发器什么的,还有就是用Oracle的Develop工具做form。有点类似于程序员,需要有较强的逻辑思维和创造能力,个人觉得会比较辛苦,是青春饭J;
管理则需要对oracle数据库的原理有深刻的认识,有全局操纵的能力和紧密的思维,责任较大,因为一个小的失误就会down掉整个数据库,相对前者来说,后者更看重经验。
二:学习
可以先直接挑本ORACLE入门看,类似ORACLE10G入门,ORACLE基础的书,不求完全懂,能看一点是一点,学习ORACLE是一个长期的过程,你在懂了一些后,再去看别的书,你会找到很多相同点,那时候就会有恍然大悟的感觉,一点点看就OK了。
多看网上视频教程、多上机实践练习相结合。
报培训班学习,可快速入门,主要是能获得很多实践经验。CUUG很不错你可以了解下,CUUG官网上也有很多oracle资源,还有免费的网络授课。
删除表的注意事项 在删除一个表中的全部数据时 须使用TRUNCATE TABLE 表名;因为用DROP TABLE DELETE * FROM 表名时 TABLESPACE表空间该表的占用空间并未释放 反复几次DROP DELETE操作后 该TABLESPACE上百兆的空间就被耗光了 having 子句的用法 having 子句对 group by 子句所确定的行组进行控制 having 子句条件中只允许涉及常量 聚组函数或group by 子句中的列 外部联接 + 的用法 外部联接 + 按其在 = 的左边或右边分左联接和右联接 若不带 + 运算符的表中的一个行不直接匹配于带 + 预算符的表中的任何行 则前者的行与后者中的一个空行相匹配并被返回 若二者均不带 + 则二者中无法匹配的均被返回 利用外部联接 + 可以替代效率十分低下的 not in 运算 大大提高运行速度 例如 下面这条命令执行起来很慢用外联接提高表连接的查询速度在作表连接(常用于视图)时 常使用以下方法来查询数据:SELECT PAY_NO PROJECT_NAMEFROM AWHERE A PAY_NO NOT IN (SELECT PAY_NO FROM B WHERE VALUE = ); 但是若表A有 条记录 表B有 条记录 则要用掉 分钟才能查完 主要因为NOT IN要进行一条一条的比较 共需要 * 次比较后 才能得到结果 该用外联接后 可以缩短到 分左右的时间:SELECT PAY_NO PROJECT_NAMEFROM A BWHERE A PAY_NO=B PAY_NO(+)AND B PAY_NO IS NULLAND B VALUE = ; set transaction 命令的用法 在执行大事务时 有时oracle会报出如下的错误:ORA :snapshot too old (rollback segment too *** all)这说明oracle给此事务随机分配的回滚段太小了 这时可以为它指定一个足够大的回滚段 以确保这个事务的成功执行 例如set transaction use rollback segment roll_abc;delete from table_name where mit;回滚段roll_abc被指定给这个delete事务 mit命令则在事务结束之后取消了回滚段的指定 数据库重建应注意的问题 在利用import进行数据库重建过程中 有些视图可能会带来问题 因为结构输入的顺序可能造成视图的输入先于它低层次表的输入 这样建立视图就会失败 要解决这一问题 可采取分两步走的方法:首先输入结构 然后输入数据 命令举例如下 (uesrname:jfcl password:hfjf host sting:ora 数据文件:expdata dmp):imp jfcl/hfjf@ora file=empdata dmp rows=Nimp jfcl/hfjf@ora file=empdata dmp full=Y buffer= mit=Y ignore=Y第一条命令输入所有数据库结构 但无记录 第二次输入结构和数据 字节提交一次 ignore=Y选项保证第二次输入既使对象存在的情况下也能成功 select a empno from emp a where a empno not in(select empno from emp where job= SALE );倘若利用外部联接 改写命令如下:select a empno from emp a emp bwhere a empno=b empno(+)and b empno is nulland b job= SALE ;可以发现 运行速度明显提高 从已知表新建另一个表 CREATE TABLE bAS SELECT * (可以是表a中的几列)FROM aWHERE lumn = ; 查找 删除重复记录: 法一: 用Group by语句 此查找很快的select count(num) max(name) from student 查找表中num列重复的 列出重复的记录数 并列出他的name属性group by numhaving count(num) 按num分组后找出表中num列重复 即出现次数大于一次delete from student(上面Select的)这样的话就把所有重复的都删除了 慎重法二:当表比较大(例如 万条以上)时 这个方法的效率之差令人无法忍受 需要另想办法: 执行下面SQL语句后就可以显示所有DRAWING和DSNO相同且重复的记录SELECT * FROM EM _PIPE_PREFABWHERE ROWID!=(SELECT MAX(ROWID) FROM EM _PIPE_PREFAB D D相当于First SecondWHERE EM _PIPE_PREFAB DRAWING=D DRAWING ANDEM _PIPE_PREFAB DSNO=D DSNO); 执行下面SQL语句后就可以删除所有DRAWING和DSNO相同且重复的记录DELETE FROM EM _PIPE_PREFABWHERE ROWID!=(SELECT MAX(ROWID) FROM EM _PIPE_PREFAB DWHERE EM _PIPE_PREFAB DRAWING=D DRAWING ANDEM _PIPE_PREFAB DSNO=D DSNO); 返回表中[N M]条记录 取得某列中第N大的行select column_name from(select table_name * dense_rank() over (order by column desc) rank from table_name)where rank = N 假如要返回前 条记录 select * from tablename where rownum ;(或是rownum = 或是rownum != )假如要返回第 条记录 select * from tablenamewhere …and rownum minusselect * from tablenamewhere …and rownum5order by name选出结果后用name排序显示结果。tW.wiNGWIt.(先选再排序)注意:只能用以上符号(、=、!=)。select * from tablename where rownum != 10;返回的是前9条记录。不能用:,=,=,Beeen...and。由于rownum是一个总是从1开始的伪列,Oracle 认为这种条件 不成立,查不到记录.另外,这个方法更快:select * from (select rownum r,a from yourtablewhere rownum = 20order by name )where r 10这样取出第11-20条记录!(先选再排序再选)要先排序再选则须用select嵌套:内层排序外层选。rownum是随着结果集生成的,一旦生成,就不会变化了;同时,生成的结果是依次递加的,没有1就永远不会有2!rownum 是在 查询集合产生的过程中产生的伪列,并且如果where条件中存在 rownum 条件的话,则:1: 假如 判定条件是常量,则:只能 rownum = 1, = 大于1 的自然数, = 大于1 的数是没有结果的, 大于一个数也是没有结果的即 当出现一个 rownum 不满足条件的时候则 查询结束 this is stop key!2: 当判定值不是常量的时候若条件是 = var , 则只有当 var 为1 的时候才满足条件,这个时候不存在 stop key ,必须进行 full scan ,对每个满足其他where条件的数据进行判定选出一行后才能去选rownum=2的行…… 9.快速编译所有视图 ---- 当在把数据库倒入到新的服务器上后(数据库重建),需要将视图重新编译一遍,因为该表空间视图到其它表空间的表的连接会出现问题,可以利用PL/SQL的语言特性,快速编译。SQL SPOOL ON.SQLSQL SELECT ALTER VIEW ||TNAME|| PILE; 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; 读写文本型操作系统文件 在PL/SQL 以上的版本中 UTL_FILE包允许用户通过PL/SQL读写操作系统文件 如下 DECALREFILE_HANDLE UTL_FILE FILE_TYPE;BEGINFILE_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; 在数据库触发器中使用列的新值与旧值 在数据库触发器中几乎总是要使用触发器基表的列值 如果某条语句需要某列修改前的值 使用:OLD就可以了 使用某列修改后的新值 用:NEW就可以了 如:OLD DEPT_NO :NEW DEPT_NO 数据库文件的移动方法 当想将数据库文件移动到另外一个目录下时 可以用ALTER DATABASE命令来移动(比ALTER TABLESPACE适用性强) 使用SERVER MANAGER关闭实例 SVRMGR connect internal;SVRMGR shutdown;SVRMGR exit; 使用操作系统命令来移动数据库文件位置(假设这里操作系统为SOLARIS ) 在UNIX中用 mv命令可以把文件移动到新的位置 #mv /ora /orarun/document dbf /ora /orarun 装载数据库并用alter database命令来改变数据库中的文件名 SVRMGR connect internal;SVRMGR startup mount RUN ;SVRMGR alter database rename file / ora /orarun/document dbf / ora /orarun/document dbf ; 启动实例 SVRMGR alter database open; 连接查询结果 表a 列 a a 记录 a b x y z用select能选成以下结果: ab xyz下面有两个例子 使用pl/sql代码实现 但要求 lishixinzhi/Article/program/Oracle/201311/18294