0


Oracle常见的sql命令

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命令就总结到这里了,谢谢阅读,有问题请指出!


本文转载自: https://blog.csdn.net/m0_51613816/article/details/127494149
版权归原作者 皓慕 所有, 如有侵权,请联系我们删除。

“Oracle常见的sql命令”的评论:

还没有评论