Oracle高级查询总结

Oracle高级查询总结
Oracle高级查询总结

高级查询总结

A.层次查询:start with……connec by prior……..

select lpad(' ',3*level)||ename,job,level from emp

start with mgr is null

connect by prior empno=mgr;

从根结点向下查,lpad()为左添加,level为第几层,prior为查找的方向;此句若省掉start with….则表示要遍历整个树型结构;若出现level,则后面一定要跟connect by

B.交叉报表(case when then end 与decode())

select ename,case when sal>=1500then sal*1.01

else sal*1.1

end工资

from emp;

select姓名,

max(case课程when'语文'then分数end) 语文,

max(case课程when'数学'then分数end) 数学,

max(case课程when'历史'then分数end) 历史

from学生group by姓名;------(交叉报表与函数一起使用)

select ename,sum(decode(sal,'sal',comm,null)) 奖金from emp

group by ename;--可实现分支

decode(条件,(值),(返回值),…………,(默认值)) 部门

select sal,decode(sign(sal-1500),-1,1.1*sal,0,1.1*sal,1,1.05*sal) from emp;

C.连接查询

1.等值:

select * from emp,dept where emp.deptno(+)=dept.deptno;

‘+’在左则以右表为主,反之亦然

2.非等值:where的运算符不是等号

3.自然连接:

select * from emp natural join dept

4.99乘法:

select * from emp e full join dept d

using (deptno) where deptno=10; --where必须放在using(on)的后面

D集合查询:

1.A Union B:消除重复行,有all则可以重复,默认第一列升序select ename,sal from deptno=20

union

select ename,sal from job=’CLERK’;

2.A intersect B:A与B的交集

select ename,sal from deptno=20

intersect

select ename,sal from job=’CLERK’;

3.A minus B:在A中减去既属于A又属于B的一部分

select ename,sal from deptno=20

minus

select ename,sal from job=’CLERK’;

单行子查询:

In:匹配子句查询结果任意一个即可

All: 必须符合子句查询结果的所有值

Any: 只要符合查询结果的任意一个即可

多行子查询:

(ename,job) 操作符(in,all,any)子句组合

分析函数

E cube与rollback的区别:(select5)

cube(deptno,job)/*等价*/grouping sets((deptno,job),(deptno),(job),()); rollback(deptno,job)/等价/grouping sets((deptno,job),(deptno),());

--partition by(分析分组函数):

select emp.*,sum(sal)over(partition by deptno) from emp

/*window子句(窗口子句)*/--rows n preceding

select deptno,sal,sum(sal)over(order by sal rows2 preceding) 二行和from emp;

--range unbounded preceding(只对日期和数字有效 )

select deptno,sal,sum(sal)over(order by sal range unbounded preceding)from emp;

--rank(),dense_rank()

select deptno,ename,sal,rank()over(partition by deptno order by sal)跳,dense_rank()over(partition by deptno order by sal) 不跳--有波动总数据有可能减少from emp;

--row_number()按照分组从上到下排序

select deptno,ename,sal,row_number()over(partition by deptno order by sal)from emp

--lag(上一个) lead(下一个)

select deptno,ename,sal,

lag(sal)over(partition by deptno order by sal) 上一个,

lead(sal)over(partition by deptno order by sal) 下一个

from emp

ORACLE数据库学习心得

ORACLE数据库结课论文 一个好的程序,必然联系着一个庞大的数据库网路... 今年我们学习了oracle数据库这门课程,起初的我,对这个字眼是要多陌生有多陌生,后来上课的时候听一会老师讲课,偶尔再跟上上机课,渐渐的学会了不少东西,但我感觉,我学到的仍是一些皮毛而已,怀着疑惑和求知的心态,我在网上搜索了关于oracle数据库的一些知识。 1.ORACLE的特点: 可移植性ORACLE采用C语言开发而成,故产品与硬件和操作系统具有很强的独立性。从大型机到微机上都可运行ORACLE的产品。可在UNIX、DOS、Windows等操作系统上运行。可兼容性由于采用了国际标准的数据查询语言SQL,与IBM的SQL/DS、DB2等均兼容。并提供读取其它数据库文件的间接方法。 可联结性对于不同通信协议,不同机型及不同操作系统组成的网络也可以运行ORAˉCLE数据库产品。 2.ORACLE的总体结构 (1)ORACLE的文件结构一个ORACLE数据库系统包括以下5类文件:ORACLE RDBMS的代码文件。 数据文件一个数据库可有一个或多个数据文件,每个数据文件可以存有一个或多个表、视图、索引等信息。 日志文件须有两个或两个以上,用来记录所有数据库的变化,

用于数据库的恢复。控制文件可以有备份,采用多个备份控制文件是为了防止控制文件的损坏。参数文件含有数据库例程起时所需的配置参数。 (2)ORACLE的内存结构一个ORACLE例程拥有一个系统全程区(SGA)和一组程序全程区(PGA)。 SGA(System Global Area)包括数据库缓冲区、日志缓冲区及共享区域。 PGA(Program Global Area)是每一个Server进程有一个。一个Server进程起动时,就为其分配一个PGA区,以存放数据及控制信息。 (3)ORACLE的进程结构ORACLE包括三类进程: ①用户进程用来执行用户应用程序的。 ②服务进程处理与之相连的一组用户进程的请求。 ③后台进程ORACLE为每一个数据库例程创建一组后台进程,它为所有的用户进程服务,其中包括: DBWR(Database Writer)进程,负责把已修改的数据块从数据库缓冲区写到数据库中。LGWR(Log Writer)进程,负责把日志从SGA中的缓冲区中写到日志文件中。 SMON(System Moniter)进程,该进程有规律地扫描SAG进程信息,注销失败的数据库例程,回收不再使用的内存空间。PMON (Process Moniter)进程,当一用户进程异常结束时,该进程负责恢复未完成的事务,注销失败的用户进程,释放用户进程占用的资源。

学习oracle数据库的总结(图文整理)

1、在开发环境中连接到数据库,进行基本的select查询操作; 2、熟悉plsql的使用; 3、熟悉sqlplus相关命令(登录、查询、导入导出等) 登录sqlplus: 第一:使用dos窗口登录sqlplus Sqlplus 用户名/密码@数据库实例名 Sqlplus system/密码@数据库实例名as sysdba 第二:使用oracle自带的一个sqlplus登录,提供界面,显得更简单一些。 显示当前用户名:show user; 创建一个用户:create user 用户名identified by 密码; 给用户赋予登录的权限:grant connect to 用户名;(此时才可以使用这个用户来登录这个数据库。)给其赋予dba的权限。 修改用户的密码:alter user 用户名identified by 新密码; 查询: Select * from t_user; Select id from t_user; Select name from t_user; Select birthday from t_user; Select id,name from t_user; 导入导出: 导出表: (注意,导出表的exp命令不是在sqlplus下使用的,是在dos窗口下使用的命令。) exp userid=test/sa@test tables=(qx) file=d:\e1223.dmp exp userid=test/sa@test tables=(t_user,qx) file=f:\test.dmp 导出方案: Exp userid=test/sa@test owner=test file=f:\test2.dmp 导出数据库: Exp userid=test/sa@test full=y inctype=complete file=f:\all.dmp 导入表: 下面以一个例子来说明: 看下面的图,我的用户名test,密码sa,数据库实例名test,所有的表都在这里 现在我执行导出表JD的操作:exp userid=test/sa@test tables=(jd) file=f:\jd.dmp 在我的f盘下就出现了这么一个.dmp文件

oracle学习心得体会

oracle学习心得 一、sqlserver的理解 sqlserver服务器就像一栋大楼,大楼里的机房就像服务器的数据库,机房里的电脑如同数据库里的表 1、登录用户可以登录服务器——可以进大楼 2、登录用户成为数据库用户才能进指定的数据库——进入大楼的人给了某个机房的钥匙 才能进入机房 3、登录用户有权限使用表——进入机房的人有电脑的密码才能使用电脑 二、oracle的理解 oracle服务器(全局数据库)就像一个商场,商场的每一家公司是表空间,公司的业务是表 1、数据库由多个表空间组成——商场里有多家公司组成 2、表空间由段组成——公司要有自己的经营业务,可以只有一个业务,就是一个表空 间中只有一个段,可以有多个业务,就是一个表空间有多个段 3、段由区组成——单个业务的细分类别。例如有家公司经营三个业务,卖书,卖家电,

卖衣服,则每个业务就是一个段。而每个业务又有细分,比如卖书的话要进行分类了。计算机区,人文区,小说区等,每一区都要放上书架存放书籍,则书架就是oracle块,存放数据的 三、数据库,表空间,用户(指定默认表空间),表统统由管理员管理 四、在oem中管理数据库的步骤 1、创建 1)存储——表空间——创建表空间(tomspace)(类似于在sql中创建数据库, 通常可以省略,使用默认表空间为users,,临时表空间为temp) 2)首先展开安全性——创建新用户(tom,指定表空间)(类似于在sql中指定 数据库用户) 3)创建表——指定方案(用户)和表空间(列名不要带<>) 4)设置约束 5)输入信息:方案——用户名——表——右击——查看/编辑目录… 2、修改 1)方案——用户名——表 2)修改表结构,添加约束

oracle index学习总结

oracle index 1.index需要储存空间和I/O操作。 2.index的目的是加快select的速度的。 3.insert,update,delete数据oracle会同时对索引进行相应的调整,因此会增加一定的消耗。 4.使用index一定能加快select速度吗?不是的,数据少和巨大时index会影响select的速度,因此如果查询速度可以满足,就不要建index。 5.Index 对null 无效。 分类: 一、从物理角度 1. partitioned or nonpartitioned : 分区或不分区索引。分区索引用于分区表。 2.B-tree(平衡树) : normal or reverse key 正常和倒序索引。 oracle默认索引方式,平衡树形索引,在叶子节点上有双向链表,加快索引定位速度,oracle有一定的优化,可以根据链表直接定位记录,而不走树,综合使用提高速度。见图1和图2。 图1 图2

3.bitmap(位图) :用二进制的0、1来构建索引,在进行or操作时非常快, 但要注意bitmap 对于并发操作时,改一条会锁了很多记录,因为所有的记录在一个索引条目上,所以修改或增加时会一起锁定,见图3. 图3

区别和使用场景 二、逻辑角度: 1.single column or concatenated单索引和组合索引。 2.unique or nonunique: 唯一索引和非唯一索引。 3.function-based: 基于函数的索引,把一些where条件作为函数。 4.domain:数据库以外的索引,如文件等。

oracle数据库学习总结(一)

oracle数据库———学习总结 基础: 一、ORACLE中字段的数据类型 1、字符型 1)char 范围最大2000个字节定长 char(10) '张三' 后添空格6个把10个字节补满'张三' 性别char(2) '男' 2)varchar2 范围最大4000个字节变长 varchar2(10) '张三' 在数据库中'张三' 2、数字number 范围10的-38次方到10的38次方 可以表示小数也可以表示整数 number(4) 最大表示4位整数-9999 到9999 number(5,2) 表示5位有效数字2位小数的一个小数-999.99 到999.99 3、日期date 包含年月日和时分秒7个字节 4、图片blob 二进制大对象图像/声音4G 二、如何建表 学生表student create table student( --学生表 xh number(4), --学号 xm varchar2(10), --姓名 sex char(2), --性别 birthday date, --日期 sal number(7,2) --奖学金 ); 三、字段的添加、删除、修改 1、添加字段(学生所在班级classid) alter table student add (classid number(2)); 2、修改字段的长度 alter table student modify (xm varchar2(12)) ; 3、修改字段的类型(不能有记录的) alter table student modify (xh varchar2(5)); 4、删除一个字段 alter table student drop column sal; 5、删除表 drop table student; 6、表的名字修改 rename student to stu; 7、字段如何改名字 --先删除 a)alter table student drop column sal;

Oracle数据库安装学习总结

学习总结 1、配置环境的安装: 2、安装须知: a)拷下来的文件夹大概20+G,从移动硬盘(别人家的移动硬盘) 中拷出和这两个文件夹; b)1中的四个工具在Han_training_college文件夹当中,注意安装 这些程序之前先把其中的EBS_工具集_For_R12改名字去掉其 中的中文,改成比如EBS_For_R12之类的。否则安装的时候会 报错; c)安装第一个工具Developer10G的时候,需要先设置虚拟内存,

虚拟内存的设置方法:计算→系统属性→高级系统设置→高级→性能的设置→高级→虚拟内存的更改,然后更改为自定义大小,贴上我的设置: d)安装第二个文件的时候也就是安装PLSQL Developer的时候, 建议不安装他给的东西,去官网下载最新的程序 https://www.360docs.net/doc/3913234093.html,/plsqldev1005.exe e)贴上官网给出的中文包: https://www.360docs.net/doc/3913234093.html,/plsqldevlang/100/chinese.exe

f)安装PLSQL的时候,注意安装的时候会报警,原因是因为安装 路径不允许有空格和括号,所以就像ReadMe里面说的那样, 建议安装在C:\PLSQLdev中; g)第三个没什么要说的; h)第四个的话,需要先安装java的环境和office办公软件,java 环境说的不是jdk和jre之类的,说的是可以直接运行.jar类型 文件的java虚拟机,很小,贴上网址: https://www.360docs.net/doc/3913234093.html,/zh_CN/ i)安装这些之前或者之后都可以,安装java的jdk和jre,具体的 配置环境变量的就不说了,很容易的; j)安装完这些之后安装虚拟机:VMware-workstation; k)然后用虚拟机打开里面的系统; l)里面是XP系统,已经配置好的XP系统; m)里面是LINUX系统; n)安装VMware-workstation可以选择安装官网最新版的10版本,这个版本支持中文版;https://www.360docs.net/doc/3913234093.html,/ 3、建立主机和虚拟机的访问 a)这一步的目的是为了让主机和虚拟机之间能够互相Ping通, 互相Ping通的目的是为了让主机里面的PLSQLdev可以访问主 机里面的oracle服务器然后进行操作,现阶段我们操作的主要 是练习SQL语句 b)要让主机和虚拟机之间互相Ping通有两个办法:

oracle数据库学习笔记心得

select* |字段表名 from 表名 where 布尔表达式【条件】 externalcandidate 职员相关信息 contractrecruiter 猎头公司 查看表里所有字段 describe[描述] contractrecruiter select cname,nperecentagecharge from contractrecruiter 不显示原来名字,显示现在名字【用AS】 select cname as "Recruiter Name",nperecentagecharge as "Hire Fees" from contractrecruiter 不显示原来名字,显示现在名字【可不用AS】 select cname "Recruiter Name",nperecentagecharge "Hire Fees" from contractrecruiter 【双引号是否写】 双引号是为了区分大小写 职位表 position select *from position 缺额运算:[想减] select VDESCRIPTION , nbudgetedstrength, NBUDGETEDSTRENGTH -NCURRENTSTRENGTH , NYEAR from position

select VDESCRIPTION "Potion", nbudgetedstrength "Budgeted Strength" , NBUDGETEDSTRENGTH -NCURRENTSTRENGTH "Vacancies", NYEAR "Year" from position 显示非重复运行 查询来源地的人数 describe externalcandidate 查看职员城市名字 select ccity from externalcandidate 查看职员城市名字【名字不重复,插入一个关键字:distinct】select distinct ccity,cstate from externalcandidate 运算符: 两列 select vfirstname,vlastname from externalcandidate 字段拼接 select vfirstname||vlastname from externalcandidate select vfirstname||' '||vlastname from externalcandidate 学校 describe college 查看所有学校 select *from college 查看只是加利福尼亚的学校 select * from college where cstate='California' 一个条件 select vfirstname,vlastname,dbirthdate,ntestscore from externalcandidate where dbirthdate>='01-1月-70'

Oracle数据库心得体会

学习Oracle数据库的心得体会 对于学习Oracle数据库,应该先要了解Oracle的框架。它有物理结构(由控制文件、数据文件、重做日志文件、参数文件、归档文件、密码文件组成),逻辑结构(表空间、段、区、块),内存分配(SGA和PGA)算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写,后台进程(数据写进程、日志写进程、系统监控、进程监控、检查点进程、归档进程、服务进程、用户进程),SCN(System Change Number)。这些东西感觉都比较专业,我对它们也就是个知道,想要真真去认识我还得努力去做。虽然懂得还不是很多,起码会了基本的软件操作,老师说我们用的都是客户端,服务端看不到,也不知道服务端是什么样的,只知道客户端就挺多东西的,没有真正的去学习利用是很难掌握的。 Oracle数据库的学习使我对数据库的有了新的进步,以后再看到也就不至于什么也不懂,其实那么多数据库我觉得学好一门就行,只是他们的语言可能不大一样,学好一门后就可去认识其它的,这样应该有事半功倍的效果。就像我学习C语言,当时不能说是学习的棒,但不算差。所以我对以后的语言感觉都不是很困难,了解了https://www.360docs.net/doc/3913234093.html,、C++还有网页中用的Html 语言、asp语言都能看懂,起码可以对别人的东西进行了一下修改。因此,我感谢Oracle数据库老师给了我有用的知识,以便我在以后学习或认识更多的内容能有新的方法和思维,也能更加有效和快速的去消化吸收新的东西。希望在今后中,Oracle能给我更多帮助,让我在我熟悉的https://www.360docs.net/doc/3913234093.html,中运用上去,我以前的一个目标是要为学校的选课做一个选课助手来帮助大学。不过因为种种原因一直没有完成,也包括我对数据库的不了解,因为学了Oracle以后知道第一项内容是通过SQL查询后得到的,如果去把它们联系起来还不是真正明白,不过我相信我的目标能在学习Oracle后得到进展。

Oracle学习心得

1、Oracle进入数据库的命令: Sqlplus “as sysdba” 2、检查数据库是否已经成功安装: SQL>select status from v$instance; 3、删除数据库: SQL>exit 4、动态表:Oracle的动态表也是属于字典表,属于Oracle内部的表,不能手工更改数据, 动态表是因为表中的数据根据其他表的数据而变化,在Oracle中动态表通常使用“v$” 开头,v$instance为Oracle数据库的动态表之一,该表记录Oracle数据库实例的各种信息。 5、关闭数据库数据库的命令: SQL>shutdown immediate 6、继续输入启动数据库的命令: SQL>startup 7、查看数据库名称的命令 SQL>show parameter db_name Show parameter :表示查看Oracle数据库中的各种参数值。 8、如何查询数据库中的一个用户是什么状态? 可以查询数据字典表dba_users来了解用户的状态,dba_users表存储着Oracle数据库所有用户的信息。 9、字典表:是Oracle数据库的内表,在Oracle数据库中不需要创建就存在的表,不能更改 其信息。 10、查询数据库默认SCOTT用户的状态: SQL>SELECT username,account_status FROM dba_users WHERE username=’scott’ 运行情况如下: 未能查询出任何数据,这是因为:where条件后面的每个字段所表示的值是区分大小写写的,如username字段的值应该为SCOTT,如下: SQL>SELECT username,account_status FROM dba_users WHERE username=’SCOTT’;如下:

ORACLE实训心得体会

o r a c l e实训 总结 系别:信管院班级:姓名:浦江峰学号 日期: 2012年12月21日 实训总结: 由于感到oracle实训担子很重,而自己的学识、能力和阅历与其任职都有一定的距离,所以总 不敢掉以轻心,总在学习,向书本学习、向周围的同学学习,向老师请教,这样下来感觉自己半年来 还是有了一定的进步。 颠末一个星期的oracle数据库实训,让我体会到了日常仄凡是很多课堂上所无法实践知晓的, 让人收获颇丰,明白如何去应用。而本次数据库实训的目标是让我们把握数据库系统的原理。将理论 与实践相结合,利用现有的数据库管理系统硬件、范例、科学地完成一个设计。 这个星期是我们oracle 数据库管理课的实训,经过一个星期的实训,让我领会到了许多平时课 堂上所没有接受的课外知识,很让人受益匪浅,懂得如何去运用,而进行的一次分析设计综合的训练。而本次实训的目的是让我们掌握数据库系统的原理、技术。将理论与实际相结合,应用现有的数据库 管理系统软件,规范、科学地完成一个设计与实现。这次我们实训的内容是从数据库、数据表的创建和修改开始的,表是建立关系数据库的基本结构,用来存储数据具有已定义的属性,在表的操作过程中,有查看表信息、查看表属性、修改表中的数据、删除表中的数据及修改表和删除表的操作。从实 训中让我更明白一些知识,表是数据最重要的一个数据对象,表的创建好坏直接关系到数数据库的成败,表的内容是越具体越好,但是也不能太繁琐,以后在实际应用中多使用表,对表的规划和理解就 会越深刻。我们实训的另一个内容是数据库的约束、视图、查询。从中我们了解到查询语句的基本结构,和简单select语句的使用,多表连接查询。而在视图的操作中,也了解到了视图是常见的数据库对象,是提供查看和存取数据的另一种途径,对查询执行的大部分操作,使用视图一样可以完成。使 用视图不仅可以简化数据操作,还可以提高数据库的安全性,不仅可以检索数据,也可以通过视图向 基表中添加、修改和删除数据。存储过程、触发器也是我们实训的内容之一,在操作中有建立存储过程,执行存储过程,及查看和修改存储过程,这些都是非常基础的东西,但对用户却是非常重要的呢,只有熟悉了t_sql语言,才能更好的掌握更多的东西。我们还学习了,数据库的管理、数据的导入、 导出、备份和还原。有oracle 安全访问控制;登录账户的管理;数据库角色的管理;用户权限管理。维护数据库的安全是确保数据库正常运行的重要工作。数据的备份是对oracle数据事务日志进行拷贝,数据库备份记录了在进行备份操作的数据库中所有数据的状态。而数据的备份还分为数据库完整备份、差异备份、事务日志备份、文件及文件组备份。做数据备份就是为了以后的数据库恢复用。在实训内 容上我们还做了图书管理数据库,其中的要求包含了许多数据库的对象,综合了我们所学的许多知识,让我们更努力的把所学到的东西运用上去。 实训课是在学习与探索中度过的,短暂的一星期实训是结束了,但其中让我们学到了许多知识,出现许多未知的为什么,如仓库管理数据库的初步设置、数据备份与还原的步骤,如何建立视图、触 发器等一系列的问题,正是在老师和同学的共同努力之下,我们才一步步把问题解决了,最终完成了 不可能完成的任务。 日期:2012年12月21日篇二:oracle实训总结 oracle数据库管理与应用实训总结 在这一周oracle数据库管理与应用的实训的时间里,实训老师针对我们本学期的学习,有针对 性地对我们进行了很有价值的实训工作,从最基础的字段类型,到一般的oracle语句,如创建数据表、视图、存储过程、触发器等,给我们细心讲解,虽然oracle数据库管理与应用的课已经学习了将近一学期,但对其简单的知识点运用的都不是很熟练,没能真正去融会贯通。 不过,经过为期一周的针对性实训,我学到了很多知识,把以前学的所有知识点都贯穿到一起,又温习了一遍,让我们能从真正意义上了解到oracle数据库的用处。 不论再用到什么软件编写网站,都会用到数据库连接,都要从那个数据库中调用数据,这说明了数据库的重要性,认识到学习数据库的必要性。oracle数据库是很重要的数据库系统。在数据库实训 过程中,难免会出现小错误,但经过我们的讨论研究,加上老师认真的辅导,我们会解决这些错误, 从而更加熟练掌握oracle数据库。这一周不仅学到了oracle数据库的知识,还培养了我们的团队合

oracle数据库学习总结.doc

oracle数据库学习总结 篇一:oRAcLE数据库学习心得 oRAcLE数据库结课论文 一个好的程序,必然联系着一个庞大的数据库网路... 今年我们学习了oracle数据库这门课程,起初的我,对这个字眼是要多陌生有多陌生,后来上课的时候听一会老师讲课,偶尔再跟上上机课,渐渐的学会了不少东西,但我感觉,我学到的仍是一些皮毛而已,怀着疑惑和求知的心态,我在网上搜索了关于oracle数据库的一些知识。 1.oRAcLE的特点: 可移植性oRAcLE采用c语言开发而成,故产品与硬件和操作系统具有很强的独立性。从大型机到微机上都可运行oRAcLE的产品。可在UNIX、doS、windows等操作系统上运行。可兼容性由于采用了国际标准的数据查询语言SqL,与Ibm的SqL/dS、db2等均兼容。并提供读取其它数据库文件的间接方法。 可联结性对于不同通信协议,不同机型及不同操作系统组成的网络也可以运行oRAˉcLE数据库产品。 2.oRAcLE的总体结构 (1)oRAcLE的文件结构一个oRAcLE数据库系统包括以下5类文件:oRAcLERdbmS的代码文件。 数据文件一个数据库可有一个或多个数据文件,每个数据文件可以存有一个或多个表、视图、索引等信息。

日志文件须有两个或两个以上,用来记录所有数据库的变化, 用于数据库的恢复。控制文件可以有备份,采用多个备份控制文件是为了防止控制文件的损坏。参数文件含有数据库例程起时所需的配置参数。 (2)oRAcLE的内存结构一个oRAcLE例程拥有一个系统全程区(SGA)和一组程序全程区(PGA)。 SGA(SystemGlobalArea)包括数据库缓冲区、日志缓冲区及共享区域。PGA(ProgramGlobalArea)是每一个Server进程有一个。一个Server 进程起动时,就为其分配一个PGA区,以存放数据及控制信息。(3)oRAcLE的进程结构oRAcLE包括三类进程: ①用户进程用来执行用户应用程序的。 ②服务进程处理与之相连的一组用户进程的请求。 ③后台进程oRAcLE为每一个数据库例程创建一组后台进程,它为所有的用户进程服务,其中包括: dbwR(databasewriter)进程,负责把已修改的数据块从数据库缓冲区写到数据库中。LGwR(Logwriter)进程,负责把日志从SGA中的缓冲区中写到日志文件中。 SmoN(Systemmoniter)进程,该进程有规律地扫描SAG进程信息,注销失败的数据库例程,回收不再使用的内存空间。PmoN (Processmoniter)进程,当一用户进程异常结束时,该进程负责恢复未完成的事务,注销失败的用户进程,释放用户进程占用的资源。ARcH(ARcHIVER)进程。每当联机日志文件写满时,该进程将其拷贝到归档存储设备上。另外还包括分布式db中事务恢复进程REco和

oracle学习总结

Sqlplus的连接

手动创建oracle数据库 1.创建数据库实例,实例名为test C:\WINDOWS>oradim -new -sid test 2.为了sys用户可以连入数据库执行操作,先创建数据库的密码文件,密码文件的名称必须为PWDsid.ora C:\WINDOWS>orapwd password=oracle file=D:\oracle\product\10.2.0\db_1\database\PWDtest. ora 3.创建下列目录,以存放数据文件和dump信息 #数据文件目录 D:\oracle\product\10.2.0\oradata\test #background dump目录 D:\oracle\product\10.2.0\admin\test\bdump #core dump目录 D:\oracle\product\10.2.0\admin\test \cdump #user dump目录 D:\oracle\product\10.2.0\admin\test \udump 具体的目录如下二图:

数据库文件目录图: 4. 在listener.ora中添加下列信息,把此数据库注册在监听器中(可选) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = test) (ORACLE_HOME = D:\oracle\product\10.2.0\db_1) (service=test)

) ) 5. 为了可以访问数据库,在tnsnames.ora添加下列信息 test = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.102)(PORT = 1521)) (CONNECT_DATA = (SERVER = dedicated) (SERVICE_NAME = test) ) ) 6. 建立pfile文件D:\oracle\product\10.2.0\db_1\database\inittest.ora,文件的内容如下: background_dump_dest='D:/oracle/product/10.2.0/a dmin/test/bdump' compatible='10.2.0.1.0'

oracle学习总结

--在pl/sql中 --将正式库的零售单A部分数据导到测试库的零售单B中,首先要链接两个数据库 -----创建一个DATABASE LINK /*-- Drop existing database link dropdatabaselink TEST; -- Create database link createdatabaselink TEST connectto NEANDS3 using'(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.4)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl)))'; */ --然后将A表中的字段插入到B表中: insertinto m_retail(ID,C_STORE_ID,RETAILBILLTYPE,ISACTIVE,DOCNO,STATUS,BILLDATE,TOT_AMT_ACTUAL,CREATION DATE,REFNO,AD_CLIENT_ID ) selectID,C_STORE_ID,RETAILBILLTYPE,ISACTIVE,DOCNO,STATUS,BILLDATE,TOT_AMT_ACTUAL,CREATIONDAT E,REFNO,AD_CLIENT_ID from neands3.m_retail@test where status='2'and billdate='20140823' neands3:用户名 m_retail:表名 @test:链接的名称(已经创建好的) ---定时任务将M_RETAIL里的内容插入到新建的表M_RETAIL_MEN的存储过程: create or replace procedure P_M_RETAIL_MENDIAN(p_pi_id IN NUMBER) AS begin DELETE FROM M_RETAIL_MEN WHERE BILLDATE =TO_CHAR(BILLDATE ,'YYYYMMDD'); commit; insert into M_RETAIL_MEN(id,C_STORE_ID,BILLDATE,AMT_ACTUAL25) select get_sequences('M_RETAIL_MEN'),c_store_id,to_char(sysdate,'yyyymmdd'),sum(TOT_AMT_ACTUAL) from M_RETAIL t where t.billdate=to_char(sysdate,'yyyymmdd') and t.status='2' group by t.C_STORE_ID,t.BILLDATE; UPDATE AD_PInstance SET STATE = 'M', RESULT = 0, ModifiedDate = SYSDATE, ERRORMSG = NULL WHERE id = p_pi_id;---pl/sql存储过程自带的 end P_M_RETAIL_MENDIAN; get_sequences(部门):id自增 正则表达式: 在oracle里正则表达式有四个函数可用,分别是regexp_like、regexp_substr、regexp_instr

oracle数据库学习总结

oracle数据库学习总结 一、ORACLE中字段的数据类型 1、字符型 1)char 范围最大2000个字节定长 char(10) '张三' 后添空格6个把10个字节补满'张三' 性别char(2) '男' 2)varchar2 范围最大4000个字节变长 varchar2(10) '张三' 在数据库中'张三' 2、数字number 范围10的-38次方到10的38次方 可以表示小数也可以表示整数 number(4) 最大表示4位整数-9999 到9999 number(5,2) 表示5位有效数字2位小数的一个小数-999.99 到999.99 3、日期date 包含年月日和时分秒7个字节 4、图片blob 二进制大对象图像/声音4G 二、如何建表 学生表student create table student( --学生表 xh number(4), --学号 xm varchar2(10), --姓名 sex char(2), --性别 birthday date, --日期 sal number(7,2) --奖学金 ); 三、字段的添加、删除、修改 1、添加字段(学生所在班级classid) alter table student add (classid number(2)); 2、修改字段的长度 alter table student modify (xm varchar2(12)) ; 3、修改字段的类型(不能有记录的) alter table student modify (xh varchar2(5)); 4、删除一个字段 alter table student drop column sal; 5、删除表 drop table student; 6、表的名字修改 rename student to stu; 7、字段如何改名字 --先删除 a)alter table student drop column sal;

数据库学习心得体会

数据库学习心得体会 学习数据库对我来说是一直都计划学的,没接触的时候总是觉得它比较深奥或是不可 接近的电脑知识,尽管自己对电脑非常感兴趣,其实还是有些心理上的陌生感。学习电脑 就和我们平时的其它科目学习一样感觉它有永无止境的知识,在这从初接触电脑时连个电 脑的键盘都不敢动到现在连硬盘都也修理,其中的过程是多么长啊,数据库是我在高中时 候听过,到了大学渐渐了解了些,但就其原理性的内容还不知道,也就是根本就不清楚什 么是数据库,只是知道一个所谓的中国字典里的名词。我认识它是从我接触网页制作开始的,初用FrontPage做网页也就是弄几个框图,没什么东西但还觉得不错,后来听朋友说 这是最简单最普通的东东。朋友告诉我真真的网页起码也用到数据库这些东西了,有什么 前台的后台的。听我的都晕头转向了,感觉自己是一个长不大的菜鸟了,之后我就去查找 相关资料发现在数据库有很多种,这才对它有所了解。 大一、大二的时候想学可不知道怎么学,从什么地方学起。当时也没注意选课本上有 这类的课程,到了大三正式的课程也轻松些了,仔细观摩了选修课发现有数据库,有数据 库原理和Oracle数据库。当时感觉Oracle数据库既然是单独一门课程一定会讲的比较细,也能学到真正实用的内容。选上了这门课以后发现和我想的基本是一样的,老师对学生也 比较和蔼可亲,对我们要求也不是很紧。让每个人都觉得轻轻松松就能把这门课程学完, 没有多么紧张的作业,也没有太苛刻的要求。 当老师在最后说这个课程结束了,回顾一下以前老师给我们讲过的东西,真的有很多 是我们应该去注意的。学习完Oracle数据库后感觉Oracle可分两大块,一块是开发,一 块是管理。开发主要是写写存储过程、触发器什么的,还有就是用Oracle的Develop工 具做form。有点类似于程序员,当然我可不是什么程序员,有几个程序员朋友他们是我的偶像。开发还需要有较强的逻辑思维和创造能力,自己没有真正做过,但感觉应该会比较 辛苦,是青春饭;管理则需要对Oracle数据库的原理有深刻的认识,有全局操纵的能力和 紧密的思维,责任较大,因为一个小的失误就会down掉整个数据库,相对前者来说,后 者更看重经验。这些东西都是从老师哪里和朋友的讨论中得到的心得,也希望其他朋友能 多多向老师和朋友请教,如果是个人单独靠自己来完成一个完美的数据库我觉得比较困难,现在基本上都是团队类型的,而且他们的效率高开发的周期也快。在烟台的.NET俱乐部认识几个比较历害的人,他们的团队精神我比较佩服,像我这样一个大学生和他们说起来太 菜了。由于数据库管理的责任重大,很少公司愿意请一个刚刚接触Oracle的人去管理数 据库。对于我们这些初出茅庐的新手来说,个人认为可以先选择做开发,有一定经验后转型,去做数据库的管理。当然,这个还是要看人个的实际情况来定。其实在烟台大学里学 生中有做的好的也是有,只不过通常象这些兄弟们我觉得很少能发现在,因为我只知道一个。在烟雨楼台的BBS版块里有个程序版块,这位版主以前就是学校网络中心的牛人。他 曾告诉我学习的方法就是:看书、思考、写笔记、做实验、再思考、再写笔记。我觉得说 的很对,对于新手来说就要这样,不断的去努力奋斗,最后一定能得到自己想要的成果。

Oracle分析函数学习总结(完成版)

Oracle分析函数总结1.rollup函数和Cube函数 1.1. rollup函数事例1 1.1.1.事例功能说明 功能:完成XX市公司各县合同种植面积、合同量统计功能。 优点:SQL简单,减少合计列的平凑工作 1.1. 2.SQL语句 select nvl(substr(t.dept_code,1,6), 'Total') Dept_Code, sum(t.zzmj) , sum(t.amount1) , sum(t.amount2) , sum(t.amount_sum) from tb_yy_contract t where t.dept_code like'5304%' group by rollup(nvl(substr(t.dept_code,1,6), 'Total'))

1.1.3.输出结果 1.1.4.使用说明 1、在使用过程中先通过部门编码查出分析数据然后在和部门表关 联获得部门名称完成该功能; 2、部门和区域分别写SQL语句; 1.2. rollup函数和cube函数的另外用法 1.2.1.事例功能说明 功能:完成XX市公司各县烤烟小等级收购情况 优点:SQL简单,查询效率高,并能减少代码工作量,易维护。 1.2.2.rollup函数实现SQL语句 select t.ddj_code, t.DJ_CODE, sum(t.amount), sum(t.money),

round(case sum(t.amount) when0then else sum(t.money) / sum(t.amount) end, 2) price from TB_YY_PLANTER_SALE_SUM_D t where t.nd = 2008 and t.dept_code like'5304%' group by rollup(t.ddj_code, t.DJ_CODE) 1.2.3.rollUp函数输出结果 耗时22.985秒 说明:rollup函数只对DDJ_CODE做汇总而我们下面介绍cube函数则是分别对DDJ_CODE和DJ_CODE都进行汇总

oracle index学习总结

oracl e ind ex学习总结 oracle index学习总结 oracleindex 1.index需要储存空间和I/O操作。 2.index的目的是加快select的速度的。 3.insert,update,delete数据oracle会同时对索引进行相应的调整,因此会增加一定的消耗。 4.使用index一定能加快select速度吗?不是的,数据少和巨大时index会影响select的速度,因此如果查询速度可以满足,就不要建index。5.Index对null无效。 分类: 一、从物理角度 1.partitionedornonpartitioned:分区或不分区索引。分区索引用于分区表。 2.B-tree(平衡树):normalorreversekey正常和倒序索引。 oracle默认索引方式,平衡树形索引,在叶子节点上有双向链表,加快索引定位速度,oracle有一定的优化,可以根据链表直接定位记录,而不走树,综合使用提高速度。见图1和图2。 图1 图 3.bitmap(位图):用二进制的0、1来构建索引,在进行or操作时非常快,但要注意bitmap对于并发操作时,改一条会锁了很多记录,因为所有的记录在一个索引条目上,所以修改或增加时会一起锁定,见图3. 图

区别和使用场景B-tree索引Bitmap索引 Suitableforhigh-cardinalitySuitableforlow-cardinalitycolumns(用在记录相同的columns(记录对应的列重复值较多的列上,如果性别只有两种值:男和女)。的值较少,如主键,姓名等)。UpdatesonkeysrelativelyUpdatestokeycolumnsveryexpensiveinexpensive(在做updated(在做updated时,bitmap的消耗是昂贵的)。时,b-tree只消耗很少的资源)。InefficientforqueriesusingEffcientforqueriesusingORpredicatesORpredic ates(where子句中(where子句中or条件较多时速度非常快)or条件较多时速度较慢)UsefulforOLTP(记录频繁的Usefulfordatawarehousing(OLIP)数据仓库,查insert和update,查询相对较少询系统等较少做数据修改的系统。的系统)。 二、逻辑角度: 1.singlecolumnorconcatenated单索引和组合索引。 2.uniqueornonunique:唯一索引和非唯一索引。 3.function-based:基于函数的索引,把一些where条件作为函数。 4.domain:数据库以外的索引,如文件等。三、创建index时的注意事项: 1.balancequeryandDMLneeds:索引的目的是为了提高查询速度,但它会加重DML的负担。 2.placeinseparatetablespace:索引和表应该放在不同的表空间,如果把索引和表放在同一个空间,会引起竞争,因为在读取一个表时,记录和索引是同时读取,修改也同步进行的。 https://www.360docs.net/doc/3913234093.html,euniformextentsizes:Multipesoffiveblocksorminimumextentsizefortab

相关文档
最新文档