oracle学习心得2022

上传人:痛*** 文档编号:104075367 上传时间:2022-06-09 格式:DOC 页数:58 大小:96KB
收藏 版权申诉 举报 下载
oracle学习心得2022_第1页
第1页 / 共58页
oracle学习心得2022_第2页
第2页 / 共58页
oracle学习心得2022_第3页
第3页 / 共58页
资源描述:

《oracle学习心得2022》由会员分享,可在线阅读,更多相关《oracle学习心得2022(58页珍藏版)》请在装配图网上搜索。

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

2、业务,就是一个表空间有多个段3、段由区组成单个业务的细分类别。例如有家公司经营三个业务,卖书,卖家电,卖衣服,则每个业务就是一个段。而每个业务又有细分,比如卖书的话要进行分类了。计算机区,人文区,小说区等,每一区都要放上书架存放书籍,则书架就是oracle块,存放数据的三、数据库,表空间,用户(指定默认表空间),表统统由管理员管理四、在OEM中管理数据库的步骤1、创建1)存储表空间创建表空间(TOMSPACE)(类似于在SQL中创建数据库,通常可以省略,使用默认表空间为USERS,临时表空间为TEMP)2)首先展开安全性创建新用户(TOM,指定表空间)(类似于在SQL中指定数据库用户)3)创建

3、表指定方案(用户)和表空间(列名不要带)4)设置约束5)输入信息:方案用户名表右击查看/编辑目录2、修改1)方案用户名表2)修改表结构,添加约束3、删除:右击表移去五、注意事项1、刚创建的用户不会出现在方案中,只有创建了一个表指定方案和表空间,该用户的方案名就会出现在方案中,此时就可以方便为该方案创建其他表1)新创建的用户能在SQLPLUS中登录,为什么不能在企业管理器中登录呢?解答:需要授予SELECTANYDIRECTORY权限才能正常登录企业管理器,但没有其他权限2)可以对创建的用户在安全性中赋予角色权限,如DBA,则该用户就是数据库管理员3)SYS用户主要用来维护系统信息和管理实例,只

4、能以SYSOPER或SYSDBA角色登录4)安装oracle的用户自动为ora-dba权限,自动是sys用户,所以在登录时不需要用户名和密码,只要选中以sysdba登录。其他用户登录计算机系统,在使用oracle时就是正常登录状态了。2、向表中添加日期数据:时间格式为DD-MM-YYYY怎么修改呢?如何插入时间数据1)先在SQLPLUS中SELECTSYSDATEFROMDUAL;就知道日期的格式2)altersessionsetNLS_DATE_FORMAT=YYYY-MM-DD;修改当前输入格式3)oracle中的默认格式是:dd-mm-yyyy;修改语句:altersessionsetn

5、ls_date_format=yyyy-mm-dd;修改后输入和显示都为指定格式,缺点是只对当前会话起作用假如你是要永久修改的话,改注册表:regedit-hkey_local_machine-oracle-homeo-NLS_DATE_FORMAT值YYYY-MM-DD(经验证不管用)默认日期:50年之前是当前世纪,50年之后是之前世纪,31-12月-49代表2049年01-1月-50代表1950年4)由于在表编辑器中to_date函数的格式是dd-mon-yyyy,输入时为如下格式13-6月-1983(代码编辑时一样,世纪可以省略,代表当前世纪)5)to_char通常用于查询语句;to_d

6、ate通常用于增删改语句6)两个代表一个六、代码编辑器1、SQLPLUS2、SQLPLUSWORKSHEET3、isqlplus设置列宽:setlinesize50;七、与SQL202*中的查询分析器不同,SQLplusworksheet执行所有语句,不单单执行选中语句八、编辑清除;可以清除查询结果九、查看环境变量:select*fromv$nls_parameters;十、示例用户1)scott/tigernormal登录2)hr:需要解锁和重设密码(alteruserhraccountunlock;)十一、查看和更改oraclehttp占用端口号,D:ora9ApacheApachecon

7、f下,httpd.conf和httpd.conf.default中将80修改,然后重新启动HTTP服务加个字符串六、工具的使用1、netmanager:配置服务主机名和监听主机名2、netconfigurationassistant:配置监听程序,本地服务名配置等/*/oracle小知识点1、数据操作时,字段区分大小写2、Oracle两种认证模式:(1)操作系统认证(2)文件口令认证。初始化参数的文件目录为D:oracle_programdatabase3、sqlplus中使用helpindex查看帮助信息目录,?命令:查看某个命令的详细用法连接数据库后才能使用5、当代码中使用函数时,函数中固

8、定的关键字必须写正确,当放在字符串中的时候,编译没有错误,运行时才会出现错误,通常是SQL递归错误扩展阅读:Oracle学习心得成功源自勤奋ORACLE学习笔录ORACLE教学视频1.开始-运行-CMD-SQLPLUS/NOLOG注释:进入不用输入用户、密码的模式2.SQL-CONN/ASSYSDBA;或SQL-CONNSYS/TIGERASSYSDBA;注释:以SYS身份登录3.SQL-SHOWUSER;注释:显示当前用户4.SQL-ALTERUSERSYSACCOUNTUNLOCK;注释:使SYS用户处于解锁状态5.SQL-ALTERUSERSCOTTIDENTIFIEDBYTIGER;注

9、释:修改SCOTT的密码为:TIGERSQL*PLUS登录的快捷方式:发送SQLPLUS到桌面快捷方式。在其右键属性目标里加入“CONN/ASSYSDBA”或其他语句.如下图:=登陆时出现ORA-12560协议适配器错误的解决方法。右键单击我的电脑,属性-高级-环境变量-系统变量-新建,变量名=ORACLE_SID变量值=XXXX,XXXX就是你的DATABASESID这里软件安装时默认创建了一个实例(即数据库)ORCL,当然默认安装时,实例名称你可以随意起。当然这里的变量值随着你的实例名称的改变而改变。例如成功源自勤奋=关闭实例(数据库)的解决方法及启动方法前提是:必须以DBA的身份登录数据

10、库方可关掉数据库SQL-SHUTDOWN注释:把当前数据库关掉了,再连接时会显示“已连接到空闲例程”如图解决方法:步骤(一):关掉当前使用的SQLPLUS步骤(二):把服务里面ORACLESERVERORCL重新启动即可步骤(三):重新启动SQLPLUS就可以连接到实例上去了=ORACLE登录密码问题=1.SYS授权成功源自勤奋SQL-CONN/ASSYSDBA;注释:授权人须具有DBA的权限,因此以SYS登录以SYS身份创建一个名称为XIAOMING的用户,操作如下在不给XIAOMING赋予登录的权限的情况下,XIAOMING是不能登录数据库的,如下图:以SYS身份把连接数据库的权限赋予XI

11、AOMING这时候再用XIAOMING来登录数据库,看看效果如何,图如下:附加说明:SQL-GRANTCONNECTTOXIAOMING;等价于SQL-GRANTCREATESESSIONTOXIAOMING;注释:SYS用户授予小明连接数据库的权限SQL-GRANTRESOURCETOXIAOMING;等价于SQL-GRANTCREATETABLETOXIAOMING;注释:SYS用户授予小明来创建表的权限当然SYS有授权的权力,当然也有回收权限的权力SQL-CONN/ASSYSDBA;SQL-REVOKECONNECTFROMXIAOMING;注释:SYS回收XIAOMING登录的权限SQ

12、L-CONNXIAOMING/TIGER;SQL-CREATETABLETEXT(USERIDVARCHAR2(25),USERNAMEVARCHAR2(38);想要查看表TEXT的结构SQL-DESCTEXT;2.用户SCOTT把他的EMP表的查询权限赋予XIAOMINGSQL-GRANTSELECTONEMPTOXIAOMING;注释:SCOTT用户赋予XIAOMING查询他EMP表的权限SQL-GRANTUODATEONEMPTOXIAOMING;注释:SCOTT用户赋予XIAOMING更改他EMP表的权限SQL-GRANTALLONEMPTOXIAOMING;注释:SCOTT用户赋予X

13、IAOMING对他EMP表进行所有操作的权限包括(查询,修改,删除)SQL-CONNXIAOMING/TIGER;SQL-SELECT*FROMSCOTT.EMP;注释:此时XIAOMING可以查询SCOTT的EMP表3.用户SCOTT收回赋予用户XIAOMING的查询权限成功源自勤奋4.系统用户SYS回收SCOTT赋予XIAOMING对SCOTT的EMP表的查询权限5.权限的维护希望XIAOMING用户可以去查询SCOTT的EMP表、还希望XIAOMING可以把这个权限继续给别人。如果是对象权限,对象权限传递就加入withgrantoption这时候XIAOMING可以把对SCOTT.EMP

14、表的查询权限往下传给XIAOHONG。SQL-CONN/ASSYSDBA;注释:首先要以SYS的身份登录,才能创建XIAOHONG用户SQL-CREATEUSERXIAOHONGIDENTIFIEDBYTIGER;注释:此时成功创建了XIAOHONG用户SQL-GRANTCONNECTTOXIAOHONG;注释:SYS授予XIAOHONG登录数据库的权限SQL-CONNXIAOMING/TIGER;注释:此时登录XIAOMING用户SQL-GRANTSELECTONSCOTT.EMPTOXIAOHONG;注释:这时XIAOMING可以把SCOTT的EMP表的查询权限授予XIAOHONG如果是系

15、统权限时,系统权限传递就加入WITHADMINOPTIONSys授予XIAOMING权限时:SQL-GRANTCONNECTTOXIAOMINGWITHADMINOPTION;其后面的步骤和对象权限类似。?如果SCOTT把XIAOMING对EMP表的查询权限回收,那么XIAOMING会怎样?查询权限传递路线:SCOTTXIAOMINGXIAOHONG把XIAOMING的权限回收,那么XIAOHONG对Scott.emp表的权限也撤销了。(级联回收)注意:如果这里的SCOTT系统用户替换成SYS的话,此时把XIAOMING的系统权限回收,那么XIAOHONG的系统权限没有被回收(对于系统权限来说

16、,就不是级联回收了)=6使用PROFILE管理用户口令PROFILE是口令限制,资源限制的命令集合,当建立数据库时,ORACLE会自动建立名称为DEFAULT的PROFILE。当建立用户没有指定PROFILE选项,那ORACLE就会将DEFAULT分配给用户。(1)账户锁定概述:指定该账户(用户)登陆时最多可以输入密码的次数,也可以指定用户锁定的时间(天)一般用DBA的身份去执行该命令。例子:指定SCOTT这个用户最多只能尝试3次登陆,锁定时间为2天,让我们看怎么实现。SQL-CREATEPROFILELOCK_ACCOUNTLIMITFAILED_LOGIN_ATTEMPTS3PASSWOR

17、D_LOCK_TIME2;注意:红色字体为固定句式,LOCK_ACCOUNT是文件名SQL-ALTERUSERSCOTTPROFILELOCK_ACCOUNT;注意:给SCOTT登录的限制(2)给账户解锁SQL-ALTERUSERSCOTTACCOUNTUNLOCK;(3)终止命令为了让用户定期修改密码可以使用终止口令的指令来完成,同样这个命令也需要DBA身份来操作。例子:给前面创建的用户XIAOMING创建一个PROFILE文件,要求该用户每隔10天要修改成功源自勤奋自家的登陆密码,宽限期为2天。看看怎么做。SQL-CREATEPROFILEMYPROFILELIMITPASSWORD_LI

18、FE_TIME10PASSWORD_GRACE_TIME2;SQL-lALTERUSERXIAOMINGPROFILEMYPROFILE;(4)口令历史概述:如果希望用户在修改密码时,不能使用以前使用过的密码,可使用口令历史,这样Oracle就会将口令修改的信息存放到数据字典中,这样当用户修改密码时,ORACLE就会对新旧密码进行比较,当发现新旧密码一样时,就提示用户重新输入密码。例子:1)建立PROFILESQL-CREATEPROFILEPASSWORD_HISTORYLIMITPASSWORD_LIFE_TIME10PASSWORD_GRACE_TIME2PASSWORD_REUSE_T

19、IME10注意:PASSWORD_REUSE_TIME/指定口令可重用时间(即10天后就可以重用)2)分配给某个用户。SQL-ALTERUSERXIAOMINGPROFILEPASSWORD_HISTORY;3)删除PROFILE概述:当不需要某个PROFILE文件时,可以删除该文件。SQL-DROPPROFILEPASSWORD_HISTORY;【CASCADE】注意:如果该文件已经分发给某个用户了,要删除的话,得在后面添加CASCADE=Oracle卸载1.2.3.4.5.运行ORACLE的UNIVERSALINSTALLER运行REGEDIT进入注册表,删除时一定要小心别删错了进入HKE

20、Y_LOCAL_MACHINESOFTWAREORACLEHKEY_LOCAL_MACHINESYSTEMCURRENTCONTROLSETSERVICES下以ORACLE开头的值。重启计算机删除硬盘上的ORACLE目录,如果该目录不让删除,那么把这个目录改成一个别的名字,然后重启机器,再删除它。删除C:PROGRAMFILE下的ORACLE目录=连接命令:(1)CONNECT当用特权用户身份连接时,必须带上ASSYSDBA或是ASSYSOPER(2)DISCONNECT说明:该命令用来断开与当前数据库的连接(3)PASSWORD说明:该命令用于修改用户的密码,如果要想修改其他用户的密码,需要

21、用SYS/SYSTEM登陆。(4)SHOWUSER说明:显示当前用户名(5)EXIT说明:该命令会断开与数据库的连接,同时退出SQLPLUS文件操作命令(1)START和说明;运行SQL脚本案例:SQL-D:A.SQL或者SQL-STARTD:A.SQL(2)EDIT说明:该命令可以编辑指定的SQL脚本案例:SQL-EDITD:A.SQL(3)SPOOL说明:该命令可以将SQLPLUS屏幕上的内容输出到指定文件中去案例:SQL-SPOOLD:B.SQL并输入SQL-SPOOLOFF成功源自勤奋交互式命令(1)&说明:可以代替变量,而该变量在执行时,需要用户输入。案例:SQL-SELECT*FR

22、OMEMPWHEREJOB=&JOB显示和设置环境变量概述:可以用来控制输出的格式,SETSHOW如果希望永久的保存相关的设置,可以去修改GLOGIN.SQL脚本。(1)LINESIZE说明:设置显示行的宽度,默认是80个字符SQL-SHOWLINESIZE;SQL-SETLINESIZE90;操作如下图:(2)PADESIZE说明:设置每页显示的行数目,默认是14用法和LINESIZE一样=PL/SQL中把表中日期(DATE)的格式修改。(原先里面的是DD-MM-YY)ALTERSESSIONSETNLS_DATE_FORMAT=YYYY-MM-DD;注意:这样修改只能对于当前操作有效,并不

23、能永久修改=删除数据:DELETEFROMSTUDENT;删除所有记录,表结构还在,写日志,可以恢复的,速度慢DROPTABLESTUDENT;/删除表的结构和数据DELETEFROMSTUDENTWHEREXH=A001/删除一条记录TRUNCATETABLESTUDENT删除表中所有记录,表结构还在,不写日志,无法找回删除的记录,速度快。=当删掉一个表时,想把它恢复。则需要回滚。语句如:SQL-SAVEPOINTAA;注意:再删除表之前进行该操作,设置一个名为AA的保存点SQL-ROLLBACKTOAA;注意:当删除表后的操作,就可以恢复到设置保存点的时候的数据=查看表的结构SQL-DES

24、C表名;查询所有列SELECT*FROMDEPT;/这个会对查询结果影响很大,速度慢查询指定列成功源自勤奋SELECTENAME,SAL,JOB,DEPTNOFROMEMP;/这种查询方式比较快查看查询所用的时间SETTIMINGON;/执行完之前得操作,当执行结束到会显示查询所需要的时间SETTIMINGOFF;=超级复制(给表中插入它原本的东西)INSERTINTOUSERS(字段,字段)SELECT字段,字段FROMUSER;查询表中前面几行SELECT*FROMUSERSWHEREROWNUM1-1月-1982;SELECT*FROMEMPWHERESALBETWEEN800AND10

25、00;如何使用LIKE%表示任意0到多个字符,_(下划线)代表任意的单个字符SELECT*FROMSTUDENTWHEREXMLIKE%G;或WHEREXMLIKEX%;SELECT*FROMSTUDENTWHEREXMLIKE_O%;注意:查询第三个字母是O的姓名;在WHERE中使用INSELECT*FROMSTUDENTWHEREXMIN(XIAOMING,XIAOHONG);ISNULL使用;SELECT*FROMSTUDDENTWHEREXMISNULL;注意:切记不是XM=NULLORDERBYDESC或者ORDERBYASCSELECT*FROMEMPORDERBYEMPTNOAS

26、C,SALDESC;/按照部门号升序而雇员的工资降序排列。使用到的别名排序SELECTSAL“年薪”FROMEMPORDERBY“年薪”ASC;别名需要用双引号圈中或者SELECTSALAS“年薪”FROMEMPORDERBY“年薪”ASC;成功源自勤奋GROUPBY和HAVING子句?显示每个部门的平均工资与最高工资SELECTAVG(SAL),MAX(SAL),DEPTNOFROMEMPGROUPBYDEPTNO;/查询字段里面一定要有DEPTNO,因为是按照他分组的。?显示每个部门的每种岗位的平均工资与最高工资。SELECTAVG(SAL),MAX(SAL),DEPTNO,JOBFROM

27、EMPGROUPBYDEPTNO,JOB;?显示平均工资低于202*的部门号和它的平均工资。SELECTAVG(SAL),MAX(SAL),DEPTNOFROMEMPGROUPBYDEPTNOHAVINGAVG(SAL)ALL(SELECTSALFROMEMPWHEREDEPTNO=30);等价于SELECTENAME,SAL,DEPTNOFROMEMPSAL(SELECTMAX(SAL)FROMEMPWHEREDEPTNO=30);注意:提倡使用第二种方法,查询速度快ANY的用法成功源自勤奋SELECTENAME,SAL,DEPTNOFROMEMPWHERESALANY(SELECTSALF

28、ROMEMPWHEREDEPTNO=30);等价于SELECTENAME,SAL,DEPTNOFROMEMPSAL(SELECTMIN(SAL)FROMEMPWHEREDEPTNO=30);注意:提倡使用第二种方法,查询速度快?如何查询与SMITH的部门和岗位完全相同的所有雇员SELECT*FROMEMPWHERE(DEPTNO,JOB)=(SELECTDEPTNO,JOB)FROMEMPWHERE=SMITH);注意:前后两个字段要对应?如何显示高于自己部门平均工资的员工的信息。SELECTA.*FROMEMPA,(SELECTDEPTNO,AVG(SAL)ASPPFROMEMPGROUPB

29、YDEPTNO)BWHEREA.DEPTNO=B.DEPTNOANDA.SALB.PP;=在FROM子句中使用子查询这里需要说明的当在FROM子句中使用子查询时,该子查询会被作为一个视图来对待,因此叫做内嵌视图,当在FROM子句中使用子查询时,必须给子查询指定别名。ORACLE分页一共有三种方式1ROWNUM分页SQL-SELECT*FROMDEPT2.显示ROWNUMOracle分配的比如要查询前三条记录的话:SELECTA.*,ROWNUMNFROM(SELECT*FROMDEPT)AWHEREROWNUM成功源自勤奋SELECT*FROM(SELECTA.*,ROWNUMNFROM(SE

30、LECT*FROMDEPT)AWHEREROWNUM=2;/但他这种方法速度相对于其他数据库来说比较快3.几个查询变化a.如果指定查询列,只需修改最里面的子查询。如:SELECT*FROM(SELECTA.*,ROWNUMNFROM(SELECTDEPTNO,LOCFROMDEPT)AWHEREROWNUM=2;或者SELECT*FROM(SELECTDEPTNO,LOC,ROWNUMNFROMDEPTWHEREROWNUM=2;b.排序,只需修改最里面的子查询SELECT*FROM(SELECTA.*,ROWNUMNFROM(SELECTDEPTNO,LOCFROMDEPTORDERBYDE

31、PTNO)AWHEREROWNUM=2;=*用查询结果来创建新表*(注意)和SQLSERVER的区别CREATETABLEMYTABLE(ID,NAME,SAL,JOB,DEPTNO)ASSELECTEMPNO,ENAME,SAL,JOB,DEPTNOFROMEMP;注意:红色字段得一一对应这个区别于sql202*SQL202*-SELECTEMPNOASID,ENAME,SAL,JOB,DEPTNOINTOMYTABLEFROMEMP;=合并查询有时在实际应用中,为了合并多个SELECT语句的结果,可以使用集合操作符号UNION,UNIONALL,INTERSECT,MINUS(1)UNIO

32、N该操作符用于取得两个结果集的并集,当使用该操作符时,会自动去掉结果中重复行SELECTENAME,SAL,JOBFROMEMPWHERESAL2500UNIONSELECTENAME,SAL,JOBFROMEMPWHEREJOB=MANAGER;(2)UNIONALL该操作符与UNION相似,但是它不会取消重复行,而且不会排序。成功源自勤奋SELECTENAME,SAL,JOBFROMEMPWHERESAL2500UNIONALLSELECTENAME,SAL,JOBFROMEMPWHEREJOB=MANAGER;(3)INTERSECT使用该操作符用于取得两个结果集的交集。SELECTEN

33、AME,SAL,JOBFROMEMPWHERESAL2500INTERSECTSELECTENAME,SAL,JOBFROMEMPWHEREJOB=MANAGER;(4)MINUS使用该操作符用于取得两个结果集的差集,它只会显示存在第一个集合中,而不存在第二集合中的数据。SELECTENAME,SAL,JOBFROMEMPWHERESAL2500MINUSSELECTENAME,SAL,JOBFROMEMPWHEREJOB=MANAGER;=创建数据库有两种方法1)通过ORACLE提供的向导工具/必须掌握开始-程序-ORACLE-ORADBA10G_HOME1-CONFIGURATIONAND

34、MIGRATIONTOOLS-DATABASECONFIGURATIONASSISTANT2)我们可以用手工步骤直接创建=ORACLE中操作数据使用TO_DATE函数ALTERSESSIONSETNLS_DATE_FORMAT=YYYY-MM-DD;/改变当前用户日期格式方法1:INSERTINTOEMPVALUES(8976,HAH,CLERK,6754,18-12月-202*,9876.00,0,20);方法2:INSERTINTOEMPVALUES(8976,HAH,CLERK,6754,TO_DATE(202*-12-18,YYYY-MM-DD)9876.00,0,20);=成功源自勤

35、奋利用子查询来插入大量数据(方法和前面超级复制一样)这个区分于SQLSERVER202*Oracle:INSERTINTOUSER2(字段1,字段2)SELECT字段3,字段4FROMUSERS【WHERE条件】注意:ORACLE这里USER2要在这之前建好Sql202*:SELECT字段1,字段2INTOUSER2FROMUSERS【WHERE条件】注意:SQLSERVER这里USER2不能在该操作之前存在?希望员工Scott的岗位,工资,补助与smith员工一样UPDATEEMPSET(JOB,SAL,COMN)=(SELECTJOB,SAL,COMNFROMEMPWHEREENAME=S

36、MITH)WHEREENAME=SCOTT;=事务事务用于保证数据的一致性,它由一组相关的DML(即增加,删除,修改)语句组成,该组的DML语句要么全部成功,要么全部失败。事务和锁当执行事务操作时(DML语句),ORACLE会在被作用的表上加锁,防止其他用户修改表的结构。提交事务当执行COMMIT语句后可以提交事务,当执行了COMMIT语句后,会确认事务的变化,结束事务,删除保存点,释放锁,当使用COMMIT语句结束事务之后,其他会话将可以查看到事务变化后的新数据。回退事务在介绍回退事务前,我们先介绍一下保存点(SAVEPOINT)的概念和作用。保存点是事务中的一点,用于取消部分事务、当结束事

37、务时,会自动删除该事务所定义的所有保存点,当执行ROLLBACK时,通过指定保存点可以回退到指定的点。SQL-SAVEPOINTA1;SQL-DELETEFROMEMP;SQL-ROLLBACKTOA1;SQL-COMMIT;/提交,确保之前所作的是正确的,提交之后,保存点也随之消失了注意:如果在操作的过程中意外退出了,那么系统会默认执行COMMIT提交操作事务的几个重要操作:1)设置保存点SAVEPOINTA3)取消部分事务ROLLBACKTOA4)取消全部事务ROLLBACK只读事务只读事务是指只允许执行查询的操作,而不允许执行任何其他DML操作的事务,使用只读事务可以确保用户只能取得某时

38、间点的数据。假定机票代售点每天18点开始统计今天的销售情况。这时可以使用只读事务,在设置了只读事务后,尽管其他会话可能会提交新的事务,但是只读事务将不会取得最新数据的变化,从而可以保持取得特定时间点的数据信息。成功源自勤奋设置只读事务SETTRANSACTIONREADONLY=SQL函数的使用字符函数是ORACLE中最常用的函数,我们来看看有哪些字符函数。LOWER(CHAR):将字符串转化成小写的格式UPPER(CHAR):将字符串转化成大写的格式LENGTH(CHAR):返回字符串的长度SUBSTR(CHAR,M,N):取字符串的子串REPLACE(CHAR1,SEARCH_STRING

39、,REPLACE_STRING)INSTR(CHAR1,CHAR2):取子串在字符串中的位置这点区别于SQLSERVER中,SQLSERVER用PATINDEX(%,%,字符串)/查找逗号出现的位置字符串转化函数SELECTCAST(2768453ASNUMBER)-3FROMDUAL;数学函数数学函数的输入参数和返回值的数据类型都是数字类型的,数学函数包含COS,COSH,EXP,LN,LOG,SIN,SINH,SQRT,TAN,TANH,ACOS,ASIN,ATAN,ROUND,我们讲最常用的ROUND(N,M:/该函数用于执行四舍五入,如果省掉M,则四舍五入到整数;如果M是正数,则四舍五

40、入到小数点的M位后;如果M是负数,则四舍五入到小数点M位前。TRUNC(N,M):该函数用于截取数字,如果省掉M,就截掉小数部分,如果M是正数就截取到小数的M位后,如果M是负数,则截取到小数点的前M位。MOD(M,N):取模FLOOR(N):返回小于或等于N的最大整数CEIL(N):返回大于或等于N的最小整数对数字的处理,在财务系统或银行系统中用的最多,不同的处理方法,对财务报表有不同的结果。例子:ROUND(2456.34)=2456,ROUND(2456.56)=2457,ROUND(2456.34,1)=2456.3,ROUND(5.67,1)=5.7TRUNC(5.57,1)=5.5,

41、TRUNC(56.67,-1)=50,MOD(10.3,4)=2.3其他数学函数:ABS(N):返回数字N的绝对值ACOS(N):返回数字的反余弦值ASIN(N):返回数字的反正弦值ATAN(N):返回数字的反正切值COS(N):返回数字的余弦值EEP(N):返回E的N次方LOG(M,N)返回以M为底的对数值LN(N):以E为底的对数POWER(M,N)):返回m的n次方日期函数用于处理DATE类型的数据SYSDATE:该函数返回系统时间例子:SELECTSYSDATEFROMDUAL;ADD_MONTHS(D,M)?查找已经入职8个多月的员工答案:SELECT*FROMEMPWHERESYS

42、DATEADD_MONTHS(HIREDATE,8);成功源自勤奋?对于每个员工,显示其加入公司的天数答案:SELECTSYSDATE-HIREDATE入职天数FROMEMP;LAST_DAY(D):返回指定日期所在月份的最后一天?找出各月倒数第三天受雇的所有员工SELECTHIREDATE,ENAME,LAST_DAY(HIREDATE)FROMEMPWHEREHIREDATE=LAST_DAY(HIREDATE)-2;转换函数:转换函数用于将数据类型从一种转为另外一种,在某些情况下,ORACLESERVER允许值的数据类型和实际的不一样。这时ORACLESERVER会隐形地转化数据类型。比

43、如:CREATETABLET1(IDINT);INSERTINTOT1VALUES(10)/这样ORACLE会自动的把10-10CREATTABLET1(IDvarchar2(100);Insertintot1values(1);这样ORACLE就会自动得把1-1TO_CHAR:?日期是否可以显示:时/分/秒SELECTENAME,TO_CHAR(HIREDATE,YYYY-MM-DDHH24:MI:SS)FROMEMP;?薪水是否可以显示指定的货币符号。SELECTENAME,TO_CHAR(HIREDATE,YYYY-MM-DDHH24:MI:SS),TO_CHAR(SAL,L99999.

44、99)FROMEMP;SELECTENAME,TO_CHAR(HIREDATE,YYYY-MM-DDHH24:MI:SS),TO_CHAR(SAL,L99,999.99)FROMEMP;成功源自勤奋/其中L99,999.99中L表示本地货币号,如果安装的是中文版,那就是人民币。99,999.99是根据这个题目的要求的,因为SAL是NUMBER(7,2)类型的,也可以随意指定比如:99999.99或99,999.99或99,999.000注意:L和99999.99中不能加空格9:代表是数字,并忽略前面00:显示数字,如位数不足时,则用0补齐.:表示小数点,:表示逗号$:表示美元¥:表示人民币C:

45、表示国际货币?显示1980年入职的所有员工答案:SELECTENAME,TO_CHAR(HIREDATE,YYYY),TO_CHAR(SAL,L99,999.99)FROMEMPWHERETO_CHAR(HIREDATE,YYYY)=1980;?显示12月份入职的所有员工答案:SELECTENAME,TO_CHAR(HIREDATE,MM),TO_CHAR(SAL,L99,999.99)FRMEMPWHERETO_CHAR(HIREDATE,MM)=12;=系统函数:SYS_CONTEXT1)TERMINAL:当前会话客户所对应的终端的标识符。2)LANGUSGE:语言3)DB_NAME:当前

46、数据库名称4)NLS_DATE_FORMAT:当前会话客户所对应的日期格式5)SESSION_USER:当前会话客户所对应的数据库用户名6)HOST:返回数据库所在主机的名称成功源自勤奋7)CURRENT_SCHEMA:显示当前用户的方案名固定句式:SELECTSYS_CONTEXT(USERENV,DB_NAME)FROMDUAL;注意:红色部分是固定的=数据库管理员管理数据库的用户主要是SYS和SYSTEM(SYS相当于董事长,SYSTEM相当于总经理)(1)最重要的区别,存储的数据的重要性不同SYS:所有ORACLE的数据字典的基表和视图都存放在SYS用户中,这些基表和视图对于ORACL

47、E的运行来说是至关重要的,由数据库自己维护,任何用户都不能手动更改,SYS用户拥有DBA(数据库管理员),SYSDBA(系统管理员/最高权限),SYSOPER(系统操作员)角色或权限,是ORACLE权限中最高的用户。SYSTEM:用于存放次一级的内部数据,如:ORACLE的一些特性或工具的管理信息,SYSTEM用户拥有DBA,SYSDBA角色或系统权限。(2)其次的区别,权限的不同。SYS用户必须以ASSYSDBA或ASSYSOPER形式登陆,不能以NORMAL方式登陆数据库。SYSTEM如果正常登陆,它其实就是一个普通的DBA用户,但是如果以ASSYSDBA登陆,其结果实际上它是作为SYS用

48、户登陆的,从登陆信息里我们可以看出来例如:SYS可以建数据库,但SYSTEM不行=管理初始化参数初始化参数用于设置实例或是数据库的特征,ORACLE11g提供了200多个初始化参数,并且每个初始化参数都要默认值。显示初始化参数(1)SHOWPARAMETER命令注意:DBA权限的才可以查询如何修改参数需要说明的如果你希望修改这些初始化的参数,可以到文件中去修改实例名=数据库表的逻辑备份与恢复逻辑备份是指使用工具EXPORT将数据对象的结构和数据导出到文件的过程,逻辑恢复是指当数据库对象被误操作而损坏后使用工具IMPORT利用备份的文件把数据对象导入数据库的过程,物理备份即可在数据库OPEN的状

49、态下进行也可以关闭数据库后进行,但是逻辑备份和恢复只能在OPEN状态下进行。导出导出具体分为;导出表,导出方案,导出数据三种方式导出使用EXP命令来完成,该命令常用的选项有:USERID:用于指定执行导出操作的用户名,口令,连接字符串TABLE:用于指定执行导出操作的表成功源自勤奋OWNER:用于指定执行导出操作的方案FULL=Y:用于指定导出操作的数据库INCTYPE:用于指定执行导出操作的增量类型ROWS:用于指定执行导出操作是否要导出表中的数据FILE:用于指定导出文件名导出表:(1)导出自己的表EXPUSERID=SCOTT/TIGERORCLTABLES=(EMP)FILE=D:E1

50、.DMP(2)导出其他方案的表如果用户要导出其他方案的表,则需DBA的权限或是EXP_FULL_DATABASE的权限,比如SYSTEM可以导出SCOTT的表EXPUSERID=SYSTEM/TIGERORCLTABLES=(SCOTT.EMP)FILE=D:E1.DMP注意:在导入和导出的时候,要到ORACLE目录下的BIN目录下操作如下图:或快速进入输出结果为下图:导出多张表:EXPUSERID=SCOTT/TIGERORCLTABLES=(EMP,DEPT)FILE=D:E1.DMP成功源自勤奋(3)导出表的结构EXPUSERID=SCOTT/TIGERORCLTABLES=(EMP)F

51、ILE=D:E1.DMPROWS=N(4)使用直接导出方式EXPUSERID=SCOTT/TIGERORCLTABLES=(EMPFILE=D:E1.DMPDIRECT=Y这种方式比默认的常规方式要快,当数据量大时,可以考虑使用这样的方法这时需要数据库的字符集要和客户端字符完全一致,否则会报错。导出方案导出方案是指使用EXPORT工具导出一个方案或是多个方案中的所有对象(表,索引,约束)和数据,并存放到文件中。(1)导出自己的方案EXPSCOTT/TIGERORCLOWNER=SCOTTFILE=D:SCOTT.DMP导出数据库导出数据库是指利用EXPORT导出所有数据库中的对象及数据,要求该

52、用户具有DBA权限或是EXP_FULL_DATABASE权限EXPUSERID=SYSTEM/TIGERORCLFULL=YINCTYPE=COMPLETEFILE=D:X.DMP(2)导出其他方案如果用户要导出其他方案,则需要DBA的权限或是EXP_FULL_DATABASE的权限,例如SYSTEM用户就可以导出任何方案(但SYS另外)EXPSYSTEM/TIGERORCLOWNER=(SYSTEM,SCOTT)FILE=D:SYSTEM.DMP=导入导入就是使用工具import将文件中的对象和数据导入到数据库中,但是导入要使用的文件必须是export所导出的文件,与导出相似,导入也分为导入

53、表,导入方案,导入数据库三种方式。IMP常用的选项有USERID:用于指定执行导入操作的用户名,口令,连接字符串TABLE:用于指定执行导入操作的表成功源自勤奋FORMUSER:用于指定源用户TOUSER:用于指定目标用户FILE:用于指定导入文件名FULL=Y:用于指定执行导入整个文件INCTYPE:用于指定执行导入操作的增量类型ROWS:指定是否要导入表行数据IGNORE:如果表存在,则只导入数据(1)导入自己的表IMPUSERID=SCOTT/TIGERORCLTABLES=(EMP)FILE=D:E1.DMP(2)导入其他用户的表要求该用户具有DBA的权限,或是IMP_FULL_DAT

54、ABASE的权限IMPUSERID=SYSTEM/TIGERORCLTABLES=(EMP)FILE=D:E1.DMPTOUSER=SCOTT(3)导入表的结构IMPUSERID=SCOTT/TIGERORCLTABLES=(EMP)FILE=D:E1.DMPROWS=N(5)如果对象(如此表)已经存在可以只导入表的数据IMPUSERID=SCOTT/TIGERORCLTABLES=(EMP)FILE=D:E1.DMPIGNORE=Y导入方案导入方案是指使用IMPORT工具将文件中的对象和数据导入到一个或是多个方案中。如果要导入其他方案,要求该用户具有DBA的权限,或是IMP_FULL_DAT

55、ABASE的权限(1)导入自己的方案IMPUSERID=SCOTT/TIGERORCLFILE=D:XXX.DMP(2)导入其他方案要求该用户具有DBA的权限IMPUSERID=SYSTEM/TIGERORCLFILE=D:XXX.DMPFORMUSER=SYSTEMTOUSER=SCOTT导入数据库在默认情况下,当导入数据库时,会导入所有对象结构和数据,案例如下:IMPUSERID=SYSTEM/TIGERFULL=YFILE=D:XXX.DMP/这里数据库实例都不用写了,默认=数据字典数据字典是ORACLE数据库中最重要的组成部分,他提供了数据库的一些系统信息数据字典记录了数据库的系统信息

56、,他是只读表和视图的集合,数据字典的所有者为SYS用户。用户只能在数据字典上执行查询操作(SELECT语句),而其维护和修改是由系统自动完成的。数据字典包括字典基表和数据字典视图,其中基表存储数据库的基本信息,普通不能直接访问数据字典的基表,数据字典视图是基于数据字典基表所建立的视图,普通用户可以通过查询数据字典视图取得系统信息,数据字典视图主要包括USER_XXX,ALL_XXX,DBA_XXX三种类型。动态性能视图记载了例程启动后的相关信息例如:USER_TABLES:用于显示当前用户所拥有的所有表,它只返回用户所对应方案的所有表比如:SELECTTABLE_NAMEFROMUSER_TA

57、BLES成功源自勤奋ALL_USERS:用于显示当前用户可以访问的所有表。它不仅返回当前用户方案的所有表,还会返回当前用户可以访问的其他方案的表;比如:SELECTTABLE_NAMEFROMALL_TABLESDBA_TABLES:它会显示所有方案拥有的数据库表,但是查询这种数据库字典视图,要求用户必须是dba角色或是SELECTANYTABLE系统权限。例如:当用SYSTEM用户查询数据字典视图DBA_TABLES时,会返回SYSTEM,SYS,SCOTT方案所对应的数据库表。=用户名、权限、角色在建立用户时,ORACLE会把用户的信息存放到数据字典中,当给用户授予权限或是角色时,ORAC

58、LE会将权限和角色的信息存放到数据字典。通过查询DBA-USERS可以显示所有数据库用户的所有信息;通过查询数据字典视图DBA_SYS_PRIVS,可以显示用户所具有的系统权限;通过查询数据字典视图DBA_TAB_PRIVS可以显示用户具有的对象权限;通过查询数据字典DBA_COL_PRIVS可以显示用户具有的列权限;通过查询数据库字典视图DBA_ROLE_PRIVS可以显示用户所具有的角色例如:要查看SCOTT具有的角色,可查询DBA_ROLE_PRIVSSELECT*FROMDBA_ROLE_PRIVSWHEREGRANTEE=SCOTT/查询ORACLE中所有的系统权限,一般是DBASELECT*FROMSYSTEM_PRIVILEGE_MAPORDERBYNAME;/查询ORACLE中所有的角色,一般是DBASELECT*FROMDBA_ROLES;/查询ORACLE中所有对象权限,一般是DBASELEC

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!