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.创建用户
create user 用户名 identified by 密码 [ ACCOUNT LOCK | UNLOCK ]
例如:create user zhangsan identified by zhangsan
3.用户授权
grant 权限名称/角色名称 to 用户名
例如:grant connect,resource,dba to zhangsan
dba:用户具有数据库所有的权限,.dmp 是由具有dba角色的用户导出的,要有相同或更高权限的用户才能导入该文件
connect:用户具有连接数据库的权限
resource:用户可以创建实体
4.删除权限
revoke 权限名称或者角色名称 from 用户名
例如:revoke connect,resource from zhangsan
5.修改用户的锁定/非锁定状态
alter user 所改用户名 account locl/unlock
6.修改用户密码
alter user 所要修改的用户名 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/zhangsan@127.0.0.1:1521/TEST file=E:/test_db.dmp
导入:
imp 账号/密码@IP地址:端口号/数据库实例名 file=导入数据文件存放位置
例如:imp zhangsan/zhangsan@127.0.0.1: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 DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
如果提示密码已过期的用户在设置完成以后还需要重新设置密码
alter user smsc identified by <原来的密码>
12.删除用户
drop user 用户名 [cascade]
例如:drop user itlaobing [cascade]
加上 [cascade]是级联删除
13.查询语句
基本结构:select 被选择的列 from 被选择的列对应的表或视图
基本语法:select 列名…… from 表名 [where 条件] [grounp by 条件] [having 条件] [order by 条件]
查询当前用户所拥有的表: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.修改当前会话的日期格式
alter session set nls_date_format =所要设置的日期格式 ;
alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss' ;
15.创建表
创建标准表
create table 表名(
列名 类型( 宽度 ) [ 约束 ]
[ , 列名 类型(宽度) [ 约束 ] , ...... ]
);
通过查询语句创建表
CREATE TABLE 表名 AS 查询语句 ;
例如:CREATE TABLE t_emp AS SELECT empno , ename , job , sal , hiredate FROM emp ;
16.变动表结构
增加列
alter table 表名 add (列名 类型 (宽度) [约束],……)
例如:ALTER TABLE t_students ADD ( married CHAR(1) , birthdate DATE , hometown VARCHAR2(200) ) ;
改列名
alter table 表名 rename column 原列名 to 新列名
例如: ALTER TABLE t_students RENAME COLUMN hometown TO address
修改列
可修改列的类型或者宽度
alter table 表名 modify (列名 类型 (宽度));
例如:ALTER TABLE t_students MODIFY ( gender VARCHAR2(10) ) ;
删除列
alter table 表名 drop (列名,……) [cascade constraints]
cascade constraints:表示删除列的相关约束
例如: ALTER TABLE t_students DROP ( gender , married ) ;
17.重命名表
alter table 原表名 rename to 新表名
例如:ALTER TABLE t_students RENAME TO t_customers ;
rename 原表名 to 新表名
例如:RENAME t_customers TO t_students ;
18.删除表
删除到回收站
drop table 表名 [cascade consreaints]
cascade consreaints:表示删除相关的约束
查看回收站
show recyclebin
使用 show recyclebin 时不要以分号结束,否则可能导致sql*plus退出
清空回收站
purge recyclebin
彻底删除表
drop table 表名 [cascade consreaints] purge
恢复
flashback table 原表名 to before drop
19.截断表
truncate table 表名
作用:将整张表中的所有数据删除,仅保留表的结构,使用rollback也不能将已删除的数据找回
例如:TRUNCATE TABLE t_emp ;
20.插入数据
insert into 表名[(列名,……)] values (值……)
例如:insert into t_students(id,name) values (1,‘值’); / insert into t_students values (1,‘值’);
插入空值
INSERT INTO t_users VALUES ( 3 , '皓慕' , NULL , NULL );
注:在数据库中存储的数据是空值
插入引号
INSERT INTO t_users VALUES ( 4 , '皓慕**''**hh' , '男' , ' 12"33" ' );
插入查询出来的内容
insert into 表名[(列名,……)] 查询语句
注意不要在查询语句前使用values
INSERT into x_users SELECT * from t_users ;
批量插入
insert all
into 表名 (列名,……) values (值……)
into 表名 (列名,……) values (值……)
select * from dual
例如:
insert all
into t_topics values(1,'哪个不是Java关键字',1,null,null)
into t_topics values(2,'哪个不是位运算符',1,null,null)
into t_topics values(null,'哪个不是位运算符',1,null,null)
select 1 from dual
21.更新数据
UPDATE 表名 SET 列名 = 新值 [ , 列名 = 新值 , ... ] [ WHERE 条件 ] ;
例如:update t_users set name = “你xx” where id = 3 ;
22.删除数据
DELETE FROM 表名 [ WHERE 条件 ] ;
例如:delete from t_users where id = 3 ;
delete from t_users ;
可使用rollback回滚被删除的数据,
23.创建约束
23.1非空约束(not null)
建表时:
CREATE TABLE 表名 (
...
列名 类型(宽度) [ CONSTRAINT 约束名称 ] NOT NULL ,
...
);
建表后:ALTER TABLE 表名 MODIFY ( 列名 [ CONSTRAINT 约束名 ] NOT NULL ) ;
例如:alter table t_topics modify(id constraint t_topics_id_nn not null);
23.2惟一约束
建表时:
CREATE TABLE 表名 (
...
列名 类型(宽度) [ CONSTRAINT 约束名称 ] UNIQUE ,
...
);
建表后:ALTER TABLE 表名 MODIFY ( 列名 [ CONSTRAINT 约束名 ] UNIQUE ) ;
或者:ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE( 列名 );
例如: alter table t_topics add constraint t_topics unique(title);
23.3缺省约束(default)
建表时:
CREATE TABLE 表名 (
...
列名 类型(宽度) DEFAULT 默认值 ,
...
);
建表后:ALTER TABLE 表名 MODIFY ( 列名 DEFAULT 默认值 ) ;
综上结合例如:
create table t_monkey(
id number(8) constraint t_monkey_id_nn not null,
name varchar2(30) constraint t_monkey_name_uk unique,
birthdate date default current_date
);
23.4主键约束
建表时:
CREATE TABLE 表名 (
...
列名 类型(宽度) [ CONSTRAINT 约束名称 ] PRIMARY KEY ,
...
);
或者:
CREATE TABLE 表名 (
...
列名 类型(宽度) ,
...
[ CONSTRAINT 约束名称 ] PRIMARY KEY( 列名 [ , 列名 , ... ] ) ,
...
);
建表后:ALTER TABLE 表名 MODIFY ( 列名 [ CONSTRAINT 约束名 ] PRIMARY KEY ) ;
或者:ALTER TABLE 表名 ADD [ CONSTRAINT 约束名 ] PRIMARY KEY( 列名 [ , 列名 , ... ] );
例如:
create table t_options(
id number(10),
content varchar2(100),
code varchar2(500),
is_key char(1),
constraints t_options_id_pk primary key(id)
);
联合主键:
create table t_score(
student_id number(5),
course_id number(5),
exam_time date,
score number(4,1),
constraint t_score_sid_cid_time_pk primary key(student_id,course_id,exam_time)
);
23.5检查约束(check)
注:Oracle数据库支持检查约束,MySQL数据库不支持检查约束
CREATE TABLE 表名 (
...
[ CONSTRAINT 约束名称 ] CHECK( 表达式 ) ,
...
);
例如:
create table t_users(
id number(10),
username varchar2(20) constraint t_users_username_nn not null constraint t_users_username_uk unique,
password varchar2(40) constraint t_users_password_nn not null,
constraint t_users_id_pk primary key(id),
constraint t_users_id_username_ck check(id>1000 and length(username)>5)
)
23.6外键约束(foreign key)
首先要先有被参照表,其次再创建参照表
建表时:
CREATE TABLE 参照表表名 (
...
[ CONSTRAINT 约束名称 ] FOREIGN KEY( 列名 ) REFERENCES 被参照表表名( 被参照表主键列名 ) ,
...
);
建表后:ALTER TABLE 参照表表名
ADD [ CONSTRAINT 约束名 ] FOREIGN KEY( 列名 ) REFERENCES 被参照表表名( 被参照表主键列名 ) ;
例如:
create table t_students(
id number(10)
name varchar2(20)
major_id number(5)
constraint t_students_id_pk primary key(id)
foreign key(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 : primary key ,表示主键约束
uk : unique key ,表示惟一约束
fk : foreign key ,表示外键约束
nn : not null , 表示非空约束
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禁用约束/启用约束
禁用约束
ALTER TABLE 表名 DISABLE CONSTRAINT 约束名 ;
启用约束
ALTER TABLE 表名 ENABLE CONSTRAINT 约束名 ;
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创建索引
格式:CREATE INDEX 索引名称 ON 表名 ( 列名 [ ASC | DESC ] [ , 列名 [ ASC | DESC ] , ... ] ) ;
例如:create index ind_temps_id on t_emps(id asc);
25.3更改索引
ALTER INDEX 原索引名 RENAME TO 新索引名 ;
25.4删除索引
DROP INDEX 索引名称 ;
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 ON EXPLAIN 表示显示 查询结果 和 执行计划 ,不显示 统计信息
SET AUTOTRACE ON STATISTICS 表示显示 查询结果 和 统计信息 ,不显示 执行计划
Oracle查询数据的方式
> 全表扫描 ( TABLE ACCESS FULL )
> 通过ROWID访问 ( TABLE ACCESS ROWID )
> 索引扫描(INDEX SCAN / INDEX LOOKUP )
> > >索引惟一扫描( INDEX UNIQUE SCAN)
> > >索引范围扫描 ( INDEX RANGE SCAN )
> > >索引全扫描 ( INDEX FULL 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 筛选条件]
[GROUP BY 分组条件 [ HAVING 筛选条件] ]
[ORDER BY 排序条件];
27.2.1等值连接
使用的是等号运算符比较
SELECT e.empno , e.ename , e.deptno , d.deptno , d.dname , d.loc
FROM emp e INNER JOIN 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 INNER JOIN sal grade g
ON e.sal BETWEEN g.losal AND g.hisal ;
27.3外连接
概念:当查询结果中除了 满足连接条件 数据外,也包含不满足连接条件的数据时,就称该查询为 外连接 ( OUTERJOIN )
格式:SELECT 列名 , ...
FROM 表名
{ LEFT | RIGHT | FULL } [OUTER] JOIN 表名
ON 连接条件
[WHERE 筛选条件]
[GROUP BY 分组条件 [ HAVING 筛选条件] ]
[ORDER BY 排序条件];
27.3.1左外连接
概念:查询结果中既包含满足连接条件的数据,也包含了 【JOIN之前】的表中不满足条件的数据
格式:SELECT ... FROM表名LEFT [ OUTER ] JOIN 表名 ON 连接条件 ;
例如:select e.empno,e.ename,d.deptno,d.dname
from emp e
left outer join 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
right outer join 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
full outer join 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
left join 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=(select max(salary) from s_emp x
where x.dept_id=e.dept_id)
order by dept_id asc,salary desc;
关联子查询:
查询哪些在NEW YORK工作的员工
select * from emp e where exists(select * from dept x
where x.deptno=e.deptno
and x.loc='NEW YORK' )
29.视图
概念:视图(View)是由 SELECT 查询语句定义的一个"逻辑表",视图( View ) 只有定义而无数据,是一个"虚表";是一个或多个表(或视图)经过 SELECT 查询后选择的逻辑表示,创建视图时所使用的表(或视图)被称作 基础表 ( Base Table )
目的:提供各种数据表现形式;提高某些安全性保证;隐藏数据的逻辑复杂性并简化查询语句;执行某些必须使用视图的查询,简化用户权限的管理
创建视图(在当前用户中创建视图需要具有 CREATE VIEW 权限)
格式:CREATE [ OR REPLACE ] VIEW 视图名称
[ ( 列名 , ... ) ]
AS 查询语句 ;
例如:create view v_emp_2 as select empno,ename,deptno from emp;
查看视图
通过 user_objects 数据字典查看
通过 user_views 数据字典查看
删除视图(在当前用户中删除视图需要具有 DROP VIEW 权限)
DROP VIEW 视图名称 ;
例如 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 = ‘日期模式’ ;
alter session set nls_date_format='yyyy_mm_dd';
alter session set 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月 -20 18-9月 -20 18-9月 -20 05.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 exit rollback
一旦脚本中该语句之后的某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,输出后面的信息文章来源:https://www.toymoban.com/news/detail-482715.html
例如sql>prompt helloworld
>helloworld
常见的sql命令就总结到这里了,谢谢阅读,有问题请指出!文章来源地址https://www.toymoban.com/news/detail-482715.html
到了这里,关于Oracle常见的sql命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!