欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    Oracle中SQLPLUS使用的一些技巧.docx

    • 资源ID:78774336       资源大小:12.14KB        全文页数:6页
    • 资源格式: DOCX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Oracle中SQLPLUS使用的一些技巧.docx

    Oracle中SQL*PLUS使用的一些技巧Sql*plus中蕴藏着好多技巧,如果掌握这些技巧,对于在oracle数据库下进行快速开发与有效维护数据库都是有益的。1使用SQL*PLUS动态生成批量脚本将spool与select命令结合起来使用,可以生成一个脚本,脚本中包含有可以批量执行某一任务的语句。例1:生成一个脚本,删除SCOTT用户下的所有的表:a. 创建gen_drop_table.sql文件,包含如下语句:SPOOLc:drop_table.sqlSELECT 'DROP TABLE '| table_name |'' FROM user_tables;SPOOL OFFb. 以SCOTT用户登录数据库SQLPLUS > .gen_dorp_table.sqlc. 在c盘根目录下会生成文件drop_table.sql文件,包含删除所有表的语句,如下所示:SQL>SELECT 'DROP TABLE '| table_name |'' FROM user_tables;'DROPTABLE'|TABLE_NAME|''-DROP TABLE DEPT;DROP TABLE EMP;DROP TABLE PARENT;DROP TABLE STAT_VENDER_TEMP;DROP TABLE TABLE_FORUM;5 rows selected.SQL>SPOOL OFFd. 对生成的drop_table.sql文件进行编辑去掉不必要的部分,只留下drop table .语句e. 在scott用户下运行dorp_table.sql文件,删除scott用户下所有的表。SQLPLUS > c:dorp_table.sql在上面的操作中,在生成的脚本文件中会有多余的字符,如运行的sql语句,标题,或返回的行数,需要我们编辑该脚本后再运行,给实际的操作带来诸多不便。懒惰是人的本性,这促使我们用更简单的办法来实现上面的任务。a. 创建gen_drop_table.sql文件,包含如下语句:set echo offset feedback offset newpage noneset pagesize 5000set linesize 500set verify offset pagesize 0set term offset trims onset linesize 600set headingoffset timing offset verify offset numwidth 38SPOOLc:drop_table.sqlSELECT 'DROP TABLE '| table_name |'' FROM user_tables;SPOOL OFFb. 以SCOTT用户登录数据库SQLPLUS > .gen_dorp_table.sqlc. 在c盘根目录下会生成文件drop_table.sql文件,包含删除所有表的语句,如下所示:DROP TABLE DEPT;DROP TABLE EMP;DROP TABLE PARENT;DROP TABLE STAT_VENDER_TEMP;DROP TABLE TABLE_FORUM;d. 在scott用户下运行dorp_table.sql文件,删除scott用户下所有的表。SQLPLUS > c:dorp_table.sql2将一个表中的数据导出生成一个文本文件,列与列之间以”,”隔开set echo offset feedback offset newpage noneset pagesize 5000set linesize 500set verify offset pagesize 0set term offset trims onset linesize 600set headingoffset timing offset verify offset numwidth 38SPOOLc:drop_table.sqlselect DEPTNO | ',' | DNAME FROM DEPT;SPOOL OFF将上面的内容保存为一个文本文件后,以scott登录,执行该文件后显示结果:10,ACCOUNTING20,RESEARCH30,SALES40,OPERATIONS通过上面的两个例子,我们可以将:set echo offset feedback offset newpage noneset pagesize 5000set linesize 500set verify offset pagesize 0set term offset trims onset linesize 600set headingoffset timing offset verify offset numwidth 38SPOOLc:具体的文件名你要运行的sql语句SPOOL OFF作为一个模版,只要将必要的语句假如这个模版就可以了。在oracle的较新版本中,还可以用set colsep命令来实现上面的功能:SQL> set colsep ,SQL> select * from dept;10,ACCOUNTING,NEW YORK20,RESEARCH,DALLAS30,SALES ,CHICAGO40,OPERATIONS,BOSTON35,aa,bb3动态生成spool命令所需的文件名在我们上面的例子中,spool命令所需要的文件名都是固定的。有时我们需要每天spool一次,并且每次spool的文件名都不相同,如文件名包含当天的日期,该如何实现呢?column dat1 new_value filename;select to_char(sysdate,'yyyymmddhh24mi') dat1 from dual;spool c:&&filename.txtselect * from dept;spool off;4如何从脚本文件中得到WINDOWS环境变量的值:在windos中:spool c:temp%ORACLE_SID%.txtselect * from dept;.spool off在上面的例子中,通过%ORACLE_SID%的方式引用环境变量ORACLE_SID的值,如果ORACLE_SID的值为orcl,则生成的spool文件名为:orcl.txt在UNIX中:spool c:temp$ORACLE_SID.txtselect * from dept;.spool off在上面的例子中,通过$ORACLE_SID的方式引用环境变量ORACLE_SID的值,如果ORACLE_SID的值为orcl,则生成的spool文件名为:orcl.txt5如何指定缺省的编辑脚本的目录在sql*plus中,可以用save命令,将上一条执行的sql语句保存到一个文件中,但是如何设置该文件的缺省目录呢?通过SQL> set editfile c:tempfile.sql 命令,可以设置其缺省目录为c:tmpe,缺省文件名为file.sql。6如何除去表中相同的行找到相同的行:SELECT * FROM dept aWHERE ROWID <> (SELECT MAX(ROWID)FROM dept bWHERE a.deptno = b.deptnoAND a.dname = b.dname- Make sure all columns are comparedAND a.loc = b.loc);注释:如果只找deptno列相同的行,上面的查询可以改为:SELECT * FROM dept aWHERE ROWID <> (SELECT MAX(ROWID)FROM dept bWHERE a.deptno = b.deptno)删除相同的行:DELETE FROM dept aWHERE ROWID <> (SELECT MAX(ROWIDFROM dept bWHERE a.deptno = b.deptnoAND a.dname = b.dname - Make sure all columns are comparedAND a.loc = b.loc);注意:上面并不删除列值为null的行。7如何向数据库中插入两个单引号()Insert inot dept values(35,aabb,ab);在插入时,用两个表示一个。8如何设置sql*plus的搜寻路径,这样在用命令时,就不用输入文件的全路径。设置SQLPATH环境变量。如:SQLPATH = C:ORANTDBS;C:APPSSCRIPTS;C:MYSCRIPTS9与的区别是什么?等于start命令,用来运行一个sql脚本文件。命令调用当前目录下的,或指定全路径,或可以通过SQLPATH环境变量搜寻到的脚本文件。用在脚本文件中,用来指定用执行的文件与所在的文件在同一目录,而不用指定全路径,也不从SQLPATH环境变量指定的路径中寻找文件,该命令一般用在嵌套脚本文件中。10&与&&的区别&用来创建一个临时变量,每当遇到这个临时变量时,都会提示你输入一个值。&&用来创建一个持久变量,就像用用define命令或带new_vlaue字句的column命令创建的持久变量一样。当用&&命令引用这个变量时,不会每次遇到该变量就提示用户键入值,而只是在第一次遇到时提示一次。如,将下面三行语句存为一个脚本文件,运行该脚本文件,会提示三次,让输入deptnoval的值:select count(*) from emp where deptno = &deptnoval;select count(*) from emp where deptno = &deptnoval;select count(*) from emp where deptno = &deptnoval;将下面三行语句存为一个脚本文件,运行该脚本文件,则只会提示一次,让输入deptnoval的值:select count(*) from emp where deptno = &deptnoval;select count(*) from emp where deptno = &deptnoval;select count(*) from emp where deptno = &deptnoval;11引入copy的目的Copy命令在两个数据库之间拷贝数据时特别有用,特别是该命令可以在两个数据库之间传递long型字段的数据。缺点:在两个数据库之间传递数据时,有可能丢失精度(lose precision)。12问什么在修改大量的行时,我的脚本会变得很慢?当通过PL/SQL块修改一个表中的许多行时,你会创建在表上创建一个cursor,但是只有在你关闭cursor时,才会释放ROLLBACK SEGMENT,这样,当cursor仍然打开时,修改过程会变慢,这是因为数据库不得不搜寻大量的rollback segment以便于维护读一致性。为了避免这样情况,试着在表上加一个标志字段来描述该行是否已经被修改,然后关闭该cursor,然后再打开该cursor。每次可以修改5000行.

    注意事项

    本文(Oracle中SQLPLUS使用的一些技巧.docx)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开