Oracle相关总结.doc
《Oracle相关总结.doc》由会员分享,可在线阅读,更多相关《Oracle相关总结.doc(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Oracle相关总结Oracle相关总结Oracle相关总结一、测试oracle安装是否成功安装完Oracle如何验证安装是否成功呢?下面介绍测试方法:1.执行操作系统级命令:tnspingorcl(假定全局数据库名为orcl)结果如下:结果出现OK,说明侦听器配置无误,继续第2步。如果没有出现上图结果,请检查:1)使用OracleNetConfigurationAssistant检查网络配置(netca命令);2)使用DatabaseConfigurationAssistant检查数据库配置(dbca命令)。2.执行操作系统级的命令:sqlplussys/rootorclassysdba连接
2、成功后输入测试sql语句:select1+2+3sumfromdual;结果如下:如果结果正确,表明数据库例程安装和启动正常。可以开始用刚安装完的Oracle开始其他工作。二、新建用户、表空间并分配权限Oracle安装完后,其中有一个缺省的数据库,除了这个缺省的数据库外,我们还可以创建自己的数据库。创建完数据库后,并不能立即在数据库中建表,必须先创建该数据库的用户,并且为该用户指定表空间。明确要在哪个数据库下建立用户、表空间,就先用dba权限的用户(sys,system等)登录该数据库,再进行以下操作。1.查找所有数据库文件存放的路径,可根据查到的路径定自己新建表空间数据文件存放的路径。(当然
3、也可以自己定路径,不必参照,可略过此步)select*fromdba_data_files;2.创建表空间createtablespaceorcl_VoicedReading-表空间名Datafile-数据库文件保存路径C:ORACLEPRODUCT10.2.0ORADATAORCLorcl_VoicedReading.dbfsize100M-大小autoextendon;createuserwyli-用户名identifiedbyroot-密码defaulttablespaceorcl_VoicedReading;-指定默认表空间4.分配权限-自动增长3.创建用户并指定表空间grantdba
4、towyli;-分配dba权限给用户wyli到此,为数据库新建用户完成,可以用新建的用户以normal身份登录,然后开始在数据库上做建表等工作。三、写Oracle存储过程要注意的问题1.在oracle中,数据表别名不能加as,如:selecta.appnamefromappinfoa;-正确selecta.appnamefromappinfoasa;-错误2.在存储过程中,select某一字段时,后面必须紧跟into,如果select整个记录,利用游标的话就另当别论了。selectaf.keynodeintoknfromAPPFOUNDATIONafwhereaf.appid=aidandaf
5、.foundationid=fid;-有into,正确编译selectaf.keynodefromAPPFOUNDATIONafwhereaf.appid=aidandaf.foundationid=fid;-没有into,编译报错,提示:Compilation3.在利用select.into.语法时,必须先确保数据库中有该条记录,否则会报出nodatafound异常。可以在该语法之前,先利用selectcount(*)from查看数据库中是否存在该记录,如果存在,再利用select.into.4.在存储过程中,别名不能和字段名称相同,否则虽然编译可以通过,但在运行阶段会报错selectkey
6、nodeintoknfromAPPFOUNDATIONwhereappid=aidandfoundationid=fid;-正确运行selectaf.keynodeintoknfromAPPFOUNDATIONafwhereaf.appid=appidandaf.foundationid=foundationid;5.在存储过程中,关于出现null的问题假设有一个表A,定义如下:createtableA(idvarchar2(50)primarykeynotnull,vcountnumber(8)notnull,bidvarchar2(50)notnull-外键);如果在存储过程中,使用如下语
7、句:selectsum(vcount)intofcountfromAwherebid=xxxxxx;如果A表中不存在bid=xxxxxx的记录,则fcount=null(即使fcount定义时设置了默认值,如:fcountnumber(8):=0依然无效,fcount还是会变成null),这样以后使用fcount时就可能有问题,所以在这里最好先判断一下:iffcountisnullthenfcount:=0;endif;-运行阶段报错四、企业库连接Oracle企业库(3.1)连接Oracle命名空间Microsoft.Practices.EnterpriseLibrary.Data;中的Dat
8、abaseFactory类提供两个方法来创建database对象。1.用方法DatabaseFactory.CreateDatabase(string)配置文件:示例代码:usingMicrosoft.Practices.EnterpriseLibrary.Data;usingSystem.Data.Common;publicboolIsExistBackgroundMusic(stringbgMusicName)/创建database实例Databasedb=DatabaseFactory.CreateDatabase(Oracle);stringproduceName=proce_Back
9、groundMusic_Exist;DbCommandcommand=db.GetStoredProcCommand(produceName);/为command提供参数db.AddInParameter(command,ParamBackgroundMusicName,DbType.String,bgMusicName);db.AddOutParameter(command,outCount,DbType.Int32,4);/执行存储过程db.ExecuteScalar(command);intoutCount=(int)db.GetParameterValue(command,outCou
10、nt);if(outCount=0)returnfalse;returntrue;2.用方法DatabaseFactory.CreateDatabase()配置文件:示例代码:usingMicrosoft.Practices.EnterpriseLibrary.Data;usingSystem.Data.Common;publicboolIsExistBackgroundMusic(stringbgMusicName)Databasedb=DatabaseFactory.CreateDatabase();stringproduceName=proce_BackgroundMusic_Exist
11、;DbCommandcommand=db.GetStoredProcCommand(produceName);db.AddInParameter(command,ParamBackgroundMusicName,bgMusicName);db.AddOutParameter(command,outCount,DbType.Int32,4);db.ExecuteScalar(command);intoutCount=(int)db.GetParameterValue(command,outCount);if(outCount=0)returnfalse;returntrue;DbType.Str
12、ing,扩展阅读:Oracle知识点总结Oracle知识点总结根据阎赫老师讲义整理Zealjiang1、Oracle数据库的安装和配置OracleInternet级数据库SQLServer中小企业级数据库Access桌面级数据库Oracle的安装注意:来源和目标的目录不允许有中文或空格Oracle数据库启动时必需开启的后台服务OracleOrahome90TNSListener使第三方的软件或语言访问OracleServiceETCOracle的实例CRUD增删改查注意:中的ETC是你起的实例的名字Oracle的开发工具DOS界面的开发平台-运行-sqlplusOracle本身基于DOS的平台
13、-运行-sqlpluswOracleEnterpriseManagerConsolePL/SQLDeveloper7.1.5创建一个表的完整流程创建一个数数库例子:创建一个数据库ETC,物理文件放在F:,初始化1m,自增长开启createtablespaceetcdatafilef:etc.dbfsize1mautoextendon;删除表空间droptablespace数据库名称;为该数据库创建一个帐号和密码语法:createuser用户名称identifiedby密码defaulttablespace数据库名称注意:1、在Oracle中账号和数据库one2one绑定2、Oracle的密码不
14、允许为纯数字或空3、需要在system账号完成动作修改Oracle的账号密码语法:alteruser用户identifiedby新密码用grant权限to用户为该帐户授权语法:grant权限名称to用户;撤销权限语法:revoke权限名称from用户名;在该帐号下创建表Oracle中的事务处理Transacation事务特点:整体提交(commit)整体回滚(rollback)事务的四个特性原子性不可分割持久性-当数据整整写入到数据库物理文件中后,该数据被持久化隔离性-事务之间相互独立互不干扰一致性-数据安全Oracle中的保留点(还原点)关键字:savepoint使用方法:savepoint
15、名称;如进行保留点回滚rollbacktomark2Oracle备份数据表数据createtable备份表名称as查询语句;Oracle备份表结构createtableemp_bakasselect*fromempwhere1=2;2、Oracle的函数function(系统预定义函数)函数和存储过程相比,在于函数必须有返回值,而存储过程只有输出参数。语法:createorreplacefunction函数名称return返回类型asPL/SQL语句块例子:输入一个员工工号,返回该员工所在部门平均工资createorreplacefunctionfun_demo1(enoemp.empno%t
16、ype)returnemp.sal%typeasavgsalemp.sal%type;beginselectavg(sal)intoavgsalfromempwhereempno=eno;returnavgsal;end;调用:selectfun_demo1(7788)fromdual;publicintadd(intnum1,intnum2)intres=0;res=num1+num2;returnres;单行函数(单值函数):函数有且只有返回1个值|-字符函数substrinstr字符串连接函数:concatconcat(字符串1,字符串2)Oracle中字符连接操作符号|字符串对齐函数:
17、lpad-leftpadding左填充/rpad语法:lpad(字符串,预留位置,填充字符)SQL:selectlpad(ename,10,)fromemp;字符串截取函数:substr-substring语法:substr(字符串,截取的起始位置,截取个数)substr(字符串,截取的起始位置)SQL:selectsubstr(ename,1,3)fromeemp;字符查找函数:instr-innerstring语法:instr(字符串,待找的字符,查找的起始位置,出现次数)SQL:selectename,instr(ename,T,1,1)fromemp;注意:当返回值为0时,字符不存在函
18、数:initcap-initialcaptor语法:initcap(字符串)SQL:selectinitcap(ename)fromemp;函数:length语法:length(字符串)SQL:select*fromempwherelength(ename)=5;函数:lower/upper语法:lower(字符串)SQL:selectlower(ename)fromemp;|-日期函数sysdateadd_months函数:sysdateSQL:selectsysdatefromdual;dual-无实际意义,函数测试或其他测试使用月份差:months_between语法:months_be
19、tween(日期1,日期2)SQL:select*fromempwheremonths_between(sysdate,hiredate)=144函数:last_day语法:last_day(日期数据)SQL:select*fromempwherelast_day(hiredate)-2=hiredate;函数:add_months语法:add_months(时间,添加月份)SQL:selectadd_months(sysdate,3)fromdual;|-转换函数to_charto_date转换函数to_char语法:to_char(时间数据,制定格式)SQL:selectto_char(s
20、ysdate,yyyy-mm-ddhh24:mi:ssddddday)fromdual;yyyy-mm-dd年月日hh24:mi:ss时分秒(24)d一周第几天ddd一年的第几天day星期几to_date:将文本类型数据按照制定格式转换成时间类型数据语法:to_date(具体的时间字符数据,时间字符串格式)to_date(2022-01-19,yyyy-mm-dd)注意:Oracle中的date字段类型及其特殊|-数学函数absceilfloorabs(n)绝对值ceil(n)向上取值ceilling天花板ceil(1.1)-2floor(n)向下取值floor地板floor(2.9)-2mo
21、d(m,n)求模取余mod(5,2)-1power(m,n)m的n次方power(2,8)-256round(m,n)四舍五入m待处理数据n精度round(3.1415,2)-3.14trunc(m)整数截取trunc(3.1415)=3sign(m)符号sqrt(m)平方根|-混合函数usernvluser:返回当前登录账号SQLselectuserfromdual;nvl:替空函数语法:nvl(字符串,替换后的数据)注意:替换后的数据必须与该字段类型保持一致SQLselectename,nvl(comm,0)fromemp;分析函数:数据分析和挖掘功能DataMiningrankdense
22、_rank作用:主要用于排名使用函数:rank语法:rank()over(orderby字段名称)SQL:selectrank()over(orderbysaldesc),ename,salfromemp;若排名相同下一个将跳转SQL:selectdense_rank()over(orderbysaldesc),ename,salfromemp;连续语法:rank(参数1,参数2)withingroup(orderby字段1,字段2)SQL:selectename,rank(2850,BLAKE)withingroup(orderbysal,ename)fromemp;分组函数:类似于SQLS
23、erver中的聚合函数sumavgcountgroupby分组关键字having条件3、Oracle数据库的查询制定区间查询Oracle中伪列:Oracle为每张数据表(包括用户自定义创建的数据表)都自动创建两个位列分别是:rowid、rownum通过命令:SQLdesc表名;-查看表结构rowid:由18个字符组成唯一标识每一行rownum:行号介绍问题:使用Oracle分层查询以数据结构显示emp表中的人员关系语法:selectlpad(ename,level*5,)fromempconnectbypriorempno=mgrstartwithmgrisnull;并集:查询部门10的办事员
24、和部门20的经理关键字:unionallselect*fromempwheredeptno=10andjob=CLERKunionallselect*fromempwheredeptno=20andjob=MANAGER;注意:unionall不会消除查询结果中的重复数据,union会消除查询结果中的重复记录交集:查询部门10和部门20都有的工作类型关键字:intersectselectjobfromempwheredeptno=10intersectselectjobfromempwheredeptno=20;差集:查询部门30中有,而部门10中没有的工作类型关键字:minusselectj
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 相关 总结
限制150内