1.在命令提示符提示下进入SQL环境
1.sqlplus/nolog
进入SQL环境,然后再使用connect命令以sysdba角色连接sys用户
connect sys as sysdba
断开当前用户的连接:
disconnect
然后创建自己的用户
2.sqlplus
回车后会逐步提示用户名和密码,这里的密码不显示
3.sqlplus 用户名
回车后提示输入密码,如果输入的密码错误将重新输入用户名和密码,这里的密码也不显示
例如登录超级用户:
sqlplus / as sysdba
4.sqlplus 用户名/密码
输入正确的用户名和对应密码直接进入到SQL环境下
2.创建用户
createuser 用户名 identified by 密码 [ ACCOUNT LOCK|UNLOCK]
例如:createuser zhangsan identified by zhangsan
3.用户授权
grant 权限名称/角色名称 to 用户名
例如:grantconnect,resource,dba to zhangsan
dba:用户具有数据库所有的权限,.dmp 是由具有dba角色的用户导出的,要有相同或更高权限的用户才能导入该文件
connect:用户具有连接数据库的权限
resource:用户可以创建实体
4.删除权限
revoke 权限名称或者角色名称 from 用户名
例如:revokeconnect,resource from zhangsan
5.修改用户的锁定/非锁定状态
alteruser 所改用户名 account locl/unlock
6.修改用户密码
alteruser 所要修改的用户名 identified by 新密码
7.导入脚本
可以用start或者@来执行指定脚本,但是必须在自己的用户下
start/@ 指定脚本的目录+指定脚本的名称
例如:start/@ D:\database-beginner\scripts\oracle\first_zh_cn.sql
8.查看用户、表结构和表
显示当前用户:
show user
查看表结构:
desc user_objects;
查看当前用户下的所有表:
select * from user_tab_comments;
查看所有用户下的所有表:
select * from all_tab_comments
9.设置行宽、列格式和页大小
行宽:
set linesize 所要设置的行宽大小
例如:set linesize 120;
列格式设置:
column 列名 format 格式
例如:column object_name format a20;
例如:修改金钱的显示格式为:0000.00
页大小:
set pagesize 所要设置的大小
例如: set pagesize 120;
10.备份与导入
备份:Oracle备份成.dmp文件
exp 账号/密码@IP地址:端口号/数据库实例 file=导出数据文件存放位置
例如:exp zhangsan/[email protected]:1521/TEST file=E:/test_db.dmp
导入:
imp 账号/密码@IP地址:端口号/数据库实例名 file=导入数据文件存放位置
例如:imp zhangsan/[email protected]:1521/TEST file=E:/test_db.dmp
要是导入有问题,在Oracle的安装目录下\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora 中的SID_LIST添加以下片段并重启服务
(SID_DESC =
(GLOBAL_DBNAME = 全局数据库名)
(ORACLE_HOME = Oracle安装目录\product\11.2.0\dbhome_1)
(SID_NAME = SID名)
)
并给用户授予dba的权限
11.设置Oracle数据库的密码永久有效
查看用户的proifle是哪个,一般是default
SELECT username,PROFILE FROM dba_users;
查看指定概要文件(如default)的密码有效期设置
SELECT*FROM dba_profiles s WHERE s.profile='DEFAULT'AND resource_name='PASSWORD_LIFE_TIME';
将密码有效期由默认的180天修改成“无限制”
ALTER PROFILE DEFAULTLIMIT PASSWORD_LIFE_TIME UNLIMITED;
如果提示密码已过期的用户在设置完成以后还需要重新设置密码
alteruser smsc identified by<原来的密码>
12.删除用户
dropuser 用户名 [cascade]
例如:dropuser itlaobing [cascade]
加上 [cascade]是级联删除
13.查询语句
基本结构:select 被选择的列 from 被选择的列对应的表或视图
基本语法:select 列名…… from 表名 [where 条件][grounp by 条件][having 条件][orderby 条件]
查询当前用户所拥有的表:select tname from tab;/select table_name from user_tables;
查询当前用户拥有的数据库对象:select object_name,object_type from user_objects;
查询所有的列:select*from 表名或者视图/select 列名……列名 from 表名
查询 tab 中的所有列:select*from tab;
在数据库中默认都是
select all…… from ……
带有重复
若想去除重复可使用
select distinct …… from……
但只影响显示结果,不影响表内数据
可以使用lower或者upper将所要查询的内容全转为小写或者大写
14.修改当前会话的日期格式
altersessionset nls_date_format =所要设置的日期格式 ;altersessionset nls_date_format ='yyyy-mm-dd hh24:mi:ss';
15.创建表
创建标准表
createtable 表名(
列名 类型( 宽度 )[ 约束 ]
[, 列名 类型(宽度)[ 约束 ],......]);
通过查询语句创建表
CREATETABLE 表名 AS 查询语句 ;
例如:CREATETABLE t_emp ASSELECT empno , ename , job , sal , hiredate FROM emp ;
16.变动表结构
增加列
altertable 表名 add(列名 类型 (宽度)[约束],……)
例如:ALTERTABLE t_students ADD( married CHAR(1), birthdate DATE, hometown VARCHAR2(200));
改列名
altertable 表名 renamecolumn 原列名 to 新列名
例如: ALTERTABLE t_students RENAMECOLUMN hometown TO address
修改列
可修改列的类型或者宽度
altertable 表名 modify(列名 类型 (宽度));
例如:ALTERTABLE t_students MODIFY( gender VARCHAR2(10));
删除列
altertable 表名 drop(列名,……)[cascade constraints]cascade constraints:表示删除列的相关约束
例如: ALTERTABLE t_students DROP( gender , married );
17.重命名表
altertable 原表名 renameto 新表名
例如:ALTERTABLE t_students RENAMETO t_customers ;rename 原表名 to 新表名
例如:RENAME t_customers TO t_students ;
18.删除表
删除到回收站
droptable 表名 [cascade consreaints]cascade consreaints:表示删除相关的约束
查看回收站
show recyclebin
使用 show recyclebin 时不要以分号结束,否则可能导致sql*plus退出
清空回收站
purge recyclebin
彻底删除表
droptable 表名 [cascade consreaints]purge
恢复
flashback table 原表名 to before drop
19.截断表
truncatetable 表名
作用:将整张表中的所有数据删除,仅保留表的结构,使用rollback也不能将已删除的数据找回
例如:TRUNCATE TABLE t_emp ;
20.插入数据
insertinto 表名[(列名,……)]values (值……)
例如:insert into t_students(id,name) values (1,‘值’); / insert into t_students values (1,‘值’);
插入空值
INSERTINTO t_users VALUES(3,'皓慕',NULL,NULL);
注:在数据库中存储的数据是空值
插入引号
INSERTINTO t_users VALUES(4,'皓慕**''**hh','男',' 12"33" ');
插入查询出来的内容
insertinto 表名[(列名,……)] 查询语句
注意不要在查询语句前使用valuesINSERTinto x_users SELECT*from t_users ;
批量插入
insertall
into 表名 (列名,……)values(值……)
into 表名 (列名,……)values(值……)select*from dual
例如:
insertallinto t_topics values(1,'哪个不是Java关键字',1,null,null)into t_topics values(2,'哪个不是位运算符',1,null,null)into t_topics values(null,'哪个不是位运算符',1,null,null)select1from dual
21.更新数据
UPDATE 表名 SET 列名 = 新值 [, 列名 = 新值 ,...][WHERE 条件 ];
例如:update t_users set name = “你xx” where id = 3 ;
22.删除数据
DELETEFROM 表名 [WHERE 条件 ];
例如:delete from t_users where id = 3 ;
delete from t_users ;
可使用rollback回滚被删除的数据,
23.创建约束
23.1非空约束(not null)
建表时:
CREATETABLE 表名 (...
列名 类型(宽度)[CONSTRAINT 约束名称 ]NOTNULL,...);
建表后:ALTERTABLE 表名 MODIFY( 列名 [CONSTRAINT 约束名 ]NOTNULL);
例如:altertable t_topics modify(id constraint t_topics_id_nn notnull);
23.2惟一约束
建表时:
CREATETABLE 表名 (...
列名 类型(宽度)[CONSTRAINT 约束名称 ]UNIQUE,...);
建表后:ALTERTABLE 表名 MODIFY( 列名 [CONSTRAINT 约束名 ]UNIQUE);
或者:ALTERTABLE 表名 ADDCONSTRAINT 约束名 UNIQUE( 列名 );
例如: altertable t_topics addconstraint t_topics unique(title);
23.3缺省约束(default)
建表时:
CREATETABLE 表名 (...
列名 类型(宽度)DEFAULT 默认值 ,...);
建表后:ALTERTABLE 表名 MODIFY( 列名 DEFAULT 默认值 );
综上结合例如:
createtable t_monkey(
id number(8)constraint t_monkey_id_nn notnull,
name varchar2(30)constraint t_monkey_name_uk unique,
birthdate datedefaultcurrent_date);
23.4主键约束
建表时:
CREATETABLE 表名 (...
列名 类型(宽度)[CONSTRAINT 约束名称 ]PRIMARYKEY,...);
或者:
CREATETABLE 表名 (...
列名 类型(宽度) ,
...[CONSTRAINT 约束名称 ]PRIMARYKEY( 列名 [, 列名 ,...]),...);
建表后:ALTERTABLE 表名 MODIFY( 列名 [CONSTRAINT 约束名 ]PRIMARYKEY);
或者:ALTERTABLE 表名 ADD[CONSTRAINT 约束名 ]PRIMARYKEY( 列名 [, 列名 ,...]);
例如:
createtable t_options(
id number(10),
content varchar2(100),
code varchar2(500),
is_key char(1),
constraints t_options_id_pk primarykey(id));
联合主键:
createtable t_score(
student_id number(5),
course_id number(5),
exam_time date,
score number(4,1),constraint t_score_sid_cid_time_pk primarykey(student_id,course_id,exam_time));
23.5检查约束(check)
注:Oracle数据库支持检查约束,MySQL数据库不支持检查约束
CREATETABLE 表名 (...[CONSTRAINT 约束名称 ]CHECK( 表达式 ),...);
例如:
createtable t_users(
id number(10),
username varchar2(20)constraint t_users_username_nn notnullconstraint t_users_username_uk unique,
password varchar2(40)constraint t_users_password_nn notnull,constraint t_users_id_pk primarykey(id),constraint t_users_id_username_ck check(id>1000and length(username)>5))
23.6外键约束(foreign key)
首先要先有被参照表,其次再创建参照表
建表时:
CREATETABLE 参照表表名 (...[CONSTRAINT 约束名称 ]FOREIGNKEY( 列名 )REFERENCES 被参照表表名( 被参照表主键列名 ),...);
建表后:ALTERTABLE 参照表表名
ADD[CONSTRAINT 约束名 ]FOREIGNKEY( 列名 )REFERENCES 被参照表表名( 被参照表主键列名 );
例如:
createtable t_students(
id number(10)
name varchar2(20)
major_id number(5)constraint t_students_id_pk primarykey(id)foreignkey(major_id)references t_major(id));
24.管理约束
24.1查看约束
通过user_constraints可以确定约束名称和类型;
通过user_cons_columns可以确定哪张表哪个列对应哪个约束
例如:
select table_name,constraint_name,constraint_type from user_constraints;
able_name 表示表名、constraint_name 表示约束名、constraint_type 表示约束类型
通过user_cons_columns数据字典查看那些表的那些列上有约束
例如:
desc user_cons_columns
;
24.2修改约束
在约束名称中应该尽量使用指定的前缀或后缀来明确约束类型
pk : primarykey ,表示主键约束
uk : uniquekey ,表示惟一约束
fk : foreignkey ,表示外键约束
nn : notnull, 表示非空约束
ck : check ,表示检查约束
格式:
ALTER TABLE 表名 RENAME CONSTRAINT 原约束名 TO 新约束名 ;
例如:alter table t_topics rename constraint t_topics to t_topics_title_uk;
24.3删除约束
①通用的格式(除了default不适用):
ALTER TABLE 表名 DROP CONSTRAINT 约束名 ;
例如: alter table t_topics drop constraint t_topics_id_nn;
②不适用格式名
缺省约束:
使用指定默认值:ALTER TABLE 表名 MODIFY ( 列名 DEFAULT 默认值 ) ;
让默认值为null:
ALTER TABLE 表名 MODIFY ( 列名 DEFAULT NULL ) ;
非空约束:
ALTER TABLE 表名 MODIFY ( 列名 NULL ) ;
惟一约束:
ALTER TABLE 表名 DROP UNIQUE ( 列名 ) ;
主键约束:
ALTER TABLE 表名 DROP PRIMARY KEY [ CASCADE ] ;
24.4禁用约束/启用约束
禁用约束
ALTERTABLE 表名 DISABLECONSTRAINT 约束名 ;
启用约束
ALTERTABLE 表名 ENABLECONSTRAINT 约束名 ;
25.索引
25.1查看索引
与索引有关的数字字典:user_indexes、user_ind_columns、user_objects
例如: select table_name,index_name,index_type from user_indexes;select object_name,object_type from user_objects;select table_name,column_name,index_name from user_ind_columns;
25.2创建索引
格式:CREATEINDEX 索引名称 ON 表名 ( 列名 [ASC|DESC][, 列名 [ASC|DESC],...]);
例如:createindex ind_temps_id on t_emps(id asc);
25.3更改索引
ALTERINDEX 原索引名 RENAMETO 新索引名 ;
25.4删除索引
DROPINDEX 索引名称 ;
26.执行计划
概念:是关于 查询语句 在 Oracle DBMS 中的 执行过程 或 访问路径 的描述
作用:分析某个SQL的性能、查看某个SQL执行是否存在问题
格式:SET AUTOTRACE { OFF|ON| TRACEONLY } [EXPLAIN][STATISTICS]EXPLAIN 表示 执行计划;STATISTICS 表示 统计信息
SET AUTOTRACE OFF 表示仅显示 查询结果 ,不显示 执行计划 和 统计信息
SET AUTOTRACE ON 表示既显示 查询结果 ,又显示 执行计划 ,也显示 统计信息
SET AUTOTRACE TRACEONLY 表示不显示 查询结果 ,仅显示 执行计划 和 统计信息
SET AUTOTRACE ONEXPLAIN 表示显示 查询结果 和 执行计划 ,不显示 统计信息
SET AUTOTRACE ONSTATISTICS 表示显示 查询结果 和 统计信息 ,不显示 执行计划
Oracle查询数据的方式
> 全表扫描 (TABLE ACCESS FULL)> 通过ROWID访问 (TABLE ACCESS ROWID )> 索引扫描(INDEX SCAN /INDEX LOOKUP )>>>索引惟一扫描(INDEXUNIQUE SCAN)>>>索引范围扫描 (INDEX RANGE SCAN )>>>索引全扫描 (INDEXFULL SCAN )>>>索引快速扫描 (INDEX FAST FULL SCAN )
27.高级查询之多表查询
27.1无连接条件(笛卡尔乘积)
格式:selcet * from 表名1,表名2……
例如:select * from t_topics,t_options;
27.2内连接
概念:当查询结果中的所有数据都 满足连接条件 时,就称该查询为 内连接 ( INNERJOIN )
语法:SELECT 列名 ,...FROM 表名
[INNER]JOIN 表名
ON 连接条件
[WHERE 筛选条件][GROUPBY 分组条件 [HAVING 筛选条件]][ORDERBY 排序条件];
27.2.1等值连接
使用的是等号运算符比较
SELECT e.empno , e.ename , e.deptno , d.deptno , d.dname , d.loc
FROM emp e INNERJOIN dept d
ON e.deptno = d.deptno ;
27.2.2非等值连接
使用 、<、between……and……运算符比较,就说该内连接查询是非等值连接,比较某个值是否属于某个区间
SELECT e.empno , e.ename , e.sal , g.grade , g.losal , g.hisal
FROM emp e INNERJOIN sal grade g
ON e.sal BETWEEN g.losal AND g.hisal ;
27.3外连接
概念:当查询结果中除了 满足连接条件 数据外,也包含不满足连接条件的数据时,就称该查询为 外连接 ( OUTERJOIN )
格式:SELECT 列名 ,...FROM 表名
{ LEFT|RIGHT|FULL } [OUTER]JOIN 表名
ON 连接条件
[WHERE 筛选条件][GROUPBY 分组条件 [HAVING 筛选条件]][ORDERBY 排序条件];
27.3.1左外连接
概念:查询结果中既包含满足连接条件的数据,也包含了 【JOIN之前】的表中不满足条件的数据
格式:
SELECT ... FROM表名LEFT [ OUTER ] JOIN 表名 ON 连接条件 ;
例如:select e.empno,e.ename,d.deptno,d.dname
from emp e
leftouterjoin dept d
on d.deptno=e.deptno;
27.3.2右外连接:
概念:查询结果中既包含满足连接条件的数据,也包含了 【JOIN之后】的表中不满足条件的数据
格式:
SELECT ... FROM表名RIGHT [ OUTER ] JOIN 表名 ON 连接条件 ;
例如:select e.empno,e.ename,d.deptno,d.dname
from dept d
rightouterjoin emp e
on e.deptno=d.deptno;
27.3.3全外连接
MySQL不支持FULL OUTER JOIN
概念:查询结果中既包含满足连接条件的数据,也包含了 【JOIN之前】的表中不满足条件的数据,也包含了 【JOIN之后】的表中不满足条件的数据
格式:
SELECT ... FROM表名FULL [ OUTER ] JOIN 表名 ON 连接条件 ;
例如:select e.empno,e.ename,d.deptno,d.dname
from emp e
fullouterjoin dept d
on e.deptno=d.deptno
27.3.4自连接
概念:就是将一张表当多张表来使用( 通过为表取不同别名来区分 ),自连接可以是内连接也可以是外连接
内连接自连接:
select this.empno,this.ename,manager.empno,manager.ename
from emp this
join emp manager
on this.mgr=manager.empno;
外连接自连接:
select e.empno,e.ename,m.empno,m.ename
from emp e
leftjoin emp m
on e.mgr=m.empno
28.高级查询之子查询
概念:被嵌套在SELECT/UPDATE/DELETE/INSERT语句中的SELECT语句就是子查询
1.所有的子查询都是被 小括号 括起来的
2.子查询中通常不使用 ORDER BY 子句
3.子查询可以嵌套多层使用,但最多不超过 255 层
分类
单行子查询:返回 单行、单列 ( 最多返回一行数据 )
多行子查询:返回 多行、单列
多列子查询:返回 单行、多列
关联子查询:子查询引用了外部语句中的某些表或某些列,子查询与外部语句是相互关联的
注意:外部语句不可以引用子查询中的表或列,关联子查询 也被称作 相关子查询
嵌套子查询:即在子查询中继续嵌套子查询,但最多不超过 255 层
select*from emp
where deptno =(select deptno from emp where lower(ename)='smith')and job=(select job from emp where lower(ename)='smith');
或者:select*from emp
where(deptno,job)=(select deptno,job from emp where>ename='SMITH');select id,first_name,last_name,salary,dept_id
from s_emp e
where salary=(selectmax(salary)from s_emp x
where x.dept_id=e.dept_id)orderby dept_id asc,salary desc;
关联子查询:
查询哪些在NEW YORK工作的员工
select*from emp e whereexists(select*from dept x
where x.deptno=e.deptno
and x.loc='NEW YORK')
29.视图
概念:视图(View)是由 SELECT 查询语句定义的一个"逻辑表",视图( View ) 只有定义而无数据,是一个"虚表";是一个或多个表(或视图)经过 SELECT 查询后选择的逻辑表示,创建视图时所使用的表(或视图)被称作 基础表 ( Base Table )
目的:提供各种数据表现形式;提高某些安全性保证;隐藏数据的逻辑复杂性并简化查询语句;执行某些必须使用视图的查询,简化用户权限的管理
创建视图(在当前用户中创建视图需要具有 CREATE VIEW 权限)
格式:CREATE[ORREPLACE]VIEW 视图名称
[( 列名 ,...)]AS 查询语句 ;
例如:createview v_emp_2 asselect empno,ename,deptno from emp;
查看视图
通过 user_objects 数据字典查看
通过 user_views 数据字典查看
删除视图(在当前用户中删除视图需要具有 DROP VIEW 权限)
DROPVIEW 视图名称 ;
例如 desc v_emp_2;
30.时间格式
30.1日期模式:
YYYY:用 四位 数字表示年份;YY:用 两位 数字表示年份,不涉及世纪转换问题;RR:用 两位 数字表示年份,涉及世纪转换问题
MM:用 两位 数字表示月份,取值范围是 1 ~ 12;MON;用 三个 字符表示月份;MONTH:用 英文单词 或 数字加中文 表示月份
DAY:表示一周中的第几天;DY:表示一周中的第几天;
D:用 一位 数字表示一周中的第几天;DD:用 两位 数字表示月份中的天数;DDD:用 三位 数字表示年份中的天数
HH 或 HH12:表示以12小时计时所表示小时,取值范围是 1 ~ 12;HH24:表示以24小时计时所表示小时,取值范围是 0 ~ 23
MI:用 两位 数字表示分钟
SS:用 两位 数字表示秒数
BC 或 B.C.:表示公元前 ( Before Christ )
AD 或 A.D.:表示公元后 ( Anno Domini )
30.2设置格式:
默认格式:
dd-mon-yy
英文环境下,mon 表示用 月份名称的 缩写 ( 3个字符 );中文环境下,mon 表示 ‘X月’ ,比如 ’9月‘ 、‘12 月’
设置当前会话的日期格式:ALTER SESSION SET nls_date_format = ‘日期模式’ ;
altersessionset nls_date_format='yyyy_mm_dd';altersessionset nls_date_format ='ad yyyy-mm-dd day ddd';
为某个日期时间值设置格式:to_char( 日期时间值 , ‘日期模式’ )
select to_char(sysdate,'yyyy-mm-dd day ddd')from dual;select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')from dual;
31.日期函数
31.1日期计算
**last_day ( d )**:用于返回 指定日期 所在月份的最后一天
例如:
select last_day(sysdate) from dual;
**next_day ( d , c )**:用于获取 d 之后第一个 c 对应的日期
第一个参数 d 表示一个 DATE 值,第二个参数 c 是用 字符 表示的 星期中的某一天 ,比如 ‘星期一’ 、‘MON’
例如: select next_day(sysdate,‘星期六’) from dual;
在这里插入代码片
add_months( d , m )
例如:
select add_months(sysdate,5) from dual;
**months_between( d1 , d2 )**:用于返回 两个日期 之间间隔的月数
31.2四舍五入
使用
round( d [ , fmt ] )
函数可以 DATE 值进行四舍五入
若 fmt 为 year ,则表示四舍五入到年,以 7月1日 为分界线
若 fmt 为 month ,则表示四舍五入到月,以 16日为分界线
若 fmt 为 dd ,则表示四舍五入到日,以 中午12点 为分界线
若 fmt 为 day,则表示四舍五入到周,以 周三中午12点 为分界线
例如:select round(to_date(‘2020-06-30 23:59:59’,‘yyyy-mm-dd hh24:mi:ss’),‘year’) from dual;
31.3截断日期
使用
trunc( d [ , fmt ] )
可以将 DATE 值裁剪
若 fmt 为 year ,则表示截取到本年年初( 即 1月1日 ),超出部分全部舍弃
若 fmt 为 month ,则截取到本月初( 即 1日 ),超出部分全部舍弃
若 fmt 为 dd ,则截取到当日起点,超出部分全部舍弃
若 fmt 为 day ,则截取到本周起点,超出部分全部舍弃
例如: select trunc(to_date(‘2020-12-31 23:59:59’,‘yyyy-mm-dd hh24:mi:ss’),‘year’) from dual;
31.4获取日期
sysdate:获取数据库系统的当前日期时间
current_date:获取当前会话时区所对应的日期时间值
systimestamp:获得数据库系统中一个 timestamp with time zone 类型的日期时间值
例如:select sysdate,current_date,systimestamp from dual;
结果依次为:18-9月 -2018-9月 -2018-9月 -2005.11.42.253000 下午 +08:00
31.5查询时区
dbtimezone:数据库时区
sessiontimezone:会话时区
例如:select dbtimezone,sessiontimezone from dual;
DBTIME SESSIONTIMEZONE
------ --------------------------------------------------------------------------- +00:00+08:00
32.添加注释
为表中的列添加注释:
comment on column 表名.字段名 is '注释信息';
为表添加注释:
comment on table is '注释信息';
33.Spool命令
将在命令行中一段时间内oracle所有的操作结果写入到指定的文件中
例如:
开始写入:
spool test.log
结束写入:
spool off
34.whenever命令
当一个脚本中存在大量的sql/plsql语句时,执行该脚本时,如果其中有一条sql语句执行失败,用sqlplus可能很难发现;如果能让碰到错误时,让sqlplus退出,再结合spool命令查看日志,就很容易知道脚本的执行情况,这可以通过whenever命令来实现
whenever sqlerror exitrollback
一旦脚本中该语句之后的某sql语句执行出错,就会停止出错,sqlplus就会自动退出;加了rollback选项,则出错后sqlplus在退出前会自动执行rollback一下,把所有还没提交的变化回滚处理;如果加了none选项或什么都不加,则退出不会做任何事
35.set feedback命令
set feedback on
:打开反馈,默认的当一条sql发出的时候,oracle会给一个反馈;
例如当表创建成时会输出命令行会返回:Table created
set feedback off
:关闭反馈,用于关闭输出提示信息,当有大量执行语句时候,如果将每一条信息都反馈出来,则显得太乱,往往会关闭"输出提示信息功能"
set feedback n
:设置反馈限制;当一条 sql 语句返回 n 或者大于 n 行记录的时候,就会有feedback,比如:set feedback 10,当返回记录等于或多于 10 行的时候,会有类似 ‘10 rows selected’ 的反馈,如果返回行少于 10 则没有此反馈
36.set define 命令
作用就是关闭和开启替代变量
在SQLPlus中默认的"&"表示替代变量,只要在命令中出现该符号,SQLPlus就会要你输入替代值;
因此如果我们输入的命令中如果包含该字符,就要进行设置
set define on:开启
set define off:关闭
37.prompt命令
相当于一般的操作系统命令echo,输出后面的信息
例如sql>prompt helloworld
>helloworld
常见的sql命令就总结到这里了,谢谢阅读,有问题请指出!
版权归原作者 皓慕 所有, 如有侵权,请联系我们删除。