您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > Oracle的sqlplus是与oracle进行交互的客户端
SQL命令2006-3-18Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行sql*plus命令与sql*plus语句。我们通常所说的DML、DDL、DCL语句都是sql*plus语句,它们执行完后,都可以保存在一个被称为sqlbuffer的内存区域中,并且只能保存一条最近执行的sql语句,我们可以对保存在sqlbuffer中的sql语句进行修改,然后再次执行,sql*plus一般都与数据库打交道。除了sql*plus语句,在sql*plus中执行的其它语句我们称之为sql*plus命令。它们执行完后,不保存在sqlbuffer的内存区域中,它们一般用来对输出的结果进行格式化显示,以便于制作报表。1.执行一个SQL脚本文件SQLstartfile_nameSQL@file_name我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。@与@@的区别是什么?@等于start命令,用来运行一个sql脚本文件。@@用在sql脚本文件中,用来说明用@@执行的sql脚本文件与@@所在的文件在同一目录下,而不用指定要执行sql脚本文件的全路径,也不是从SQLPATH环境变量指定的路径中寻找sql脚本文件,该命令一般用在脚本文件中。如:在c:\temp目录下有文件start.sql和nest_start.sql,start.sql脚本文件的内容为:@@nest_start.sql--相当于@c:\temp\nest_start.sql2.对当前的输入进行编辑SQLedit3.重新运行上一次运行的sql语句SQL/SQLRSQLOR4.将显示的内容输出到指定文件SQLSPOOLfile_name在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。5.关闭spool输出SQLSPOOLOFF只有关闭spool输出,才会在输出文件中看到输出的内容。6.显示一个表的结构SQLdesctable_name7.COL命令:COL[UMN][{column|expr}[option...]]主要格式化列的显示形式。该命令有许多选项1).改变缺省的列标题COLUMNcolumn_nameHEADINGcolumn_headingForexample:Sqlselect*fromdept;DEPTNODNAMELOC-----------------------------------------------10ACCOUNTINGNEWYORKsqlcolLOCheadinglocationsqlselect*fromdept;DEPTNODNAMElocation------------------------------------------------10ACCOUNTINGNEWYORK2).改变列的显示长度:FOR[MAT]formatSqlselectempno,ename,jobfromemp;EMPNOENAMEJOB-----------------------------7369SMITHCLERK7499ALLENSALESMAN7521WARDSALESMANSqlcole#formata403).设置列标题的对齐方式JUS[TIFY]{L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]}4).不让一个列显示在屏幕上NOPRI[NT]|PRI[NT]SQLcole#noprint5).格式化NUMBER类型列的显示:SQLCOLUMNSALFORMAT$99,990EmployeeDepartmentNameSalaryCommission---------------------------------------30ALLEN$1,600300SQLCOLUMNageFORMAT$99,9906).显示列的当前的显示属性值SQLCOLUMNcolumn_namecolcolecityheadingcitycole#formata40cole#jus[tify]{l[eft]|c[enter]|c[entre]|r[ight]}cole#noprintcolageformat$99,990cole#breakonbreak_columnclearbreaks(col)8.屏蔽掉一个列中显示的相同的值BREAKONbreak_columnSQLBREAKONDEPTNOSQLSELECTDEPTNO,ENAME,SALFROMEMPWHERESAL2500ORDERBYDEPTNO;DEPTNOENAMESAL------------------------------10CLARK2450MILLER130020SMITH800ADAMS110010.显示对BREAK的设置SQLBREAK11.删除BREAK的设置SQLCLEARBREAKS12.Set命令:该命令包含许多子命令:1).在用start命令执行一个sql脚本时,是否显示脚本中正在执行的SQL语句SQLSETECHO{ON|OFF}2).是否显示当前sql语句查询或修改的行数SQLSETFEED[BACK]{6|n|ON|OFF}默认只有结果大于6行时才显示结果的行数。如果setfeedback1,则不管查询到多少行都返回。当为off时,一律不显示查询的行数3).是否显示列标题SQLSETHEA[DING]{ON|OFF}当setheadingoff时,在每页的上面不显示列标题,而是以空白行代替5).设置一行可以容纳的字符数SQLSETLIN[ESIZE]{80|n}如果一行的输出内容大于设置的一行可容纳的字符数,则折行显示。6).设置页与页之间的分隔SQLSETNEWP[AGE]{1|n|NONE}当setnewpage0时,会在每页的开头有一个小的黑方框。当setnewpagen时,会在页和页之间隔着n个空行。当setnewpagenone时,会在页和页之间没有任何间隔。8).设置一页有多少行数SQLSETPAGES[IZE]{24|n}如果设为0,则所有的输出内容为一页并且不显示列标题11).是否在屏幕上显示输出的内容,主要用与SPOOL结合使用。SQLSETTERM[OUT]{ON|OFF}在用spool命令将一个大表中的内容输出到一个文件中时,将内容输出在屏幕上会耗费大量的时间,设置settermspooloff后,则输出的内容只会保存在输出文件中,不会显示在屏幕上,极大的提高了spool的速度。12).将SPOOL输出中每行后面多余的空格去掉SQLSETTRIMS[OUT]{ON|OFF}13)显示每个sql语句花费的执行时间SETTIMING{ON|OFF}setSETECHO{ON|OFF}SETFEED[BACK]{6|n|ON|OFF}SETHEA[DING]{ON|OFF}SETLIN[ESIZE]{80|n}SETNEWP[AGE]{1|n|NONE}SETPAGES[IZE]{24|n}SETTERM[OUT]{ON|OFF}SETTRIMS[OUT]{ON|OFF}SETTIMING{ON|OFF}将一个表中的数据导出生成一个文本文件SPOOLE:\c5\dm\txt.sqlselectempid||','||empname||’,’||empaddFROMempa;SPOOLOFFsetechooffsetfeedbackoffsetnewpagenonesetpagesize0settermoffsettrimsonsetlinesize600setheadingoffsettimingoff通过上面的两个例子,我们可以将:setechooffsetfeedbackoffsetnewpagenonesetpagesize0settermoffsettrimsonsetlinesize600setheadingoffsettimingoffSPOOLc:\具体的文件名你要运行的sql语句SPOOLOFF作为一个模版18.将指定的文本加到sqlbuffer的当前行后面A[PPEND]SQLselectdeptno,2dname3fromdept;DEPTNODNAME------------------------10ACCOUNTING20RESEARCH30SALES40OPERATIONSSQLL22*dnameSQLa,loc2*dname,locSQLL1selectdeptno,2dname,loc3*fromdeptSQL/DEPTNODNAMELOC-------------------------------------10ACCOUNTINGNEWYORK20RESEARCHDALLAS30SALESCHICAGO40OPERATIONSBOSTONINPUT增加一行内容举例:sqliORDERBYtnamesqll1select*fromtabWHEREtabtype='VIEW'2*ORDERBYtnameCHANGE把当前行的第一个艘索到的内容替换新的内容,语法:C[HANGE]sepcharold[sepchar[new[sepchar]]]举例:sqll1*select*fromemployeewheresalary1000andsalary2000sqlc/salary/sal1*select*fromemployeewheresal1000andsalary2000注意,当缓冲区有两行的时候,用C替换的是最后一行里的内容。19.将sqlbuffer中的sql语句保存到一个文件中SAVEfile_name20.将一个文件中的sql语句导入到sqlbuffer中GETfile_name23.在sql*plus中连接到指定的数据库CONNECTuser_name/passwd@db_alias显示当前环境变量的值:Showall显示数据库的版本:showREL[EASE]显示SGA的大小showSGA显示当前的用户名showuser40.在输入sql语句的过程中临时先运行一个sql*plus命令只要在下一行以#开头,就可以执行一条sql*plus命令,执行完后,刚才的语句可以继续输入41.SQLPlus中的快速复制和粘贴技巧1]鼠标移至想要复制内容的开始2]用右手食指按下鼠标左键3]向想要复制内容的另一角拖动鼠标,与Word中选取内容的方法一样4]内容选取完毕后(所选内容全部反显),鼠标左键按住不动,用右手中指按鼠标右键5]这时,所选内容会自动复制到SQL*Plus环境的最后一行
本文标题:Oracle的sqlplus是与oracle进行交互的客户端
链接地址:https://www.777doc.com/doc-12770 .html