Oracle笔记(1)---SQL*PLUS 基础
Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行脚本、sql*plus命令与sql*plus语句,也可以产生简单的报表。
1、SQL*PLUS的登录
- cmd >sqlplus "sys/jty1988 as sysdba" (其中sys为登录账户,jty1988为密码,connection as SYS should be as SYSDBA or SYSOPER),普通账户登录: cmd > sqlplus scott/trigger
- cmd > sqlplus/nolog
cmd > connect sys/jty1988 as sysdba
cmd > startup (startup 有两个选项,A、startup mount:表示启动数据库实例的时候同时启动控制文件,但不启动数 据文件,不加任何选项的startup分三个阶段:启动实例--》打开控制文件[database mount]-->打开数据文件 [database open]当我们进行热备份的时候不允许是非归档模式[archive log list可以看到],若是非归档模式,需要关闭数 据库然后重新启动实例,并且不能启动数据文件[这时使用startup mount],然后使用alter database arichivelog=>alter - database open,这样就可以将非归档方式修改为归档方式 B、startup nomount:只启动实例,连控制文件都不打开, - 适用于当一个或多个控制文件丢失或损坏时,便于启动实例后重新创建控制文件)
2、SQL*PLUS的关闭
- shutdown immediate(常用,迫使每个用户执行完当前SQL语句后断开连接)
- shutdown [normal](当所有用户都断开后才真正的关闭实例,若有某个用户未断开则实例无法关闭)
- shutdown transcational
- shutdown abort (强行关闭,可能造成文件损坏)
浏览器登录:
此时不能以sys账户登录(要求必须是sysdba身份),可以使用普通账户登录,连接标识符填写数据库实例名。登录后在工作区可以编写并运行脚本,也可以加载已经编写好的脚本或保存当前脚本。
3、SQL*PLUS下查询可用命令:help index
4、查看某个命令的详细用法:?命令 例如在sqlplus下可能不支持空行,可先用?SET查看set命令的用法,然后用SET SQLBLANKLINES ON修改(sqlplus 不区分大小写,SQL语句以分号结尾)
5、执行计划(绑定变量):select * from dept where id=&v,此时可以通过给v传递不同的值来实现相应条件下的查询,若直接在查询语句中给出变量值(如id=1,id=2),则每次执行不同的sql语句都需要重新编译sql语句,使用绑定变量时sql语句只编译一次,然后把查询计划存入共享池中,便于以后获取或重用,效率较高
6、list(l)命令:查看缓冲区中的命令,例如我们刚执行过select * from dept,然后用list命令可以看到这个sql语句,若想查看多行中的某几行,可指定查看范围,例如 l2 4,表示查看2、3、4行,只查看第3行 l3
7、change(c)命令:修改缓冲区中的命令,例如缓冲区中有一个错误的命令select * fron dept,可用change/fron/from修改
8、/:执行缓冲区中的命令
9、DEL命令:删除缓冲区中的某些行,DEL 2 4,DEL 3(不是DELETE)
10、A命令:向缓冲区中追加字符串,例如A where id = 4;
11、SAVE命令:将缓冲区中的脚本保存到某个文件中,例如: SAVE D:\test.txt
12、@命令:执行脚本文件, 例如:@ D:\test.txt
13、GET命令:把脚本内容加载到缓冲区,但不执行。 例如 : get D:\test.txt
14、EDIT命令:使用外部的编辑器来修改缓冲区内容,windows平台下默认为记事本打开
15、COLUMN(COL)命令:显示数据时给列一个别名,例如:dept表中有列deptno,以下命 令可以修改显示时的列名 称 COL deptno heading "编号"
16、FORMAT命令:格式化输出, 例如: COL deptname format A10 COL id format 999,999
17、TTITLE、BTITLE:设置报表输出时的页眉页脚。 例如:
SET LINESIZE 100 //设置行宽
TTITLE CENTER "员工报表" SKIP 1- //skip 1 表示空一行,短横线表示语句未 完,下一行续写
LEFT "报表头"-
RIGHT SQL.PNO FORMAT 99 ||"页"- // SQL.PNO:页数
SKIP 2
关闭页眉页脚:TTITLE(BTITLE) OFF
18、BREAK CUMP:
BREAK去除重复的行:BREAK ON PUB
COMPUTE(COMP): 在结果的最后显示一行统计行。假如有多个COMPUTE,那么只 有最后一个COMPUTE才起作用。COMP COUNT LABEL "计数" OF books_name ON pub
COMPUTE和BREAK一起使用的。没有BREAK语句的COMPUTE没有任何效果。
清除comp: clear comp
19、spool :保存结果集, 例如:将select * from emp的结果保存到d:\result.txt文件中
Spool d:\result.txt
Select * from emp
Spool off