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.创建用户

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/[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 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 allinto 表名 (列名,……) 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,输出后面的信息

例如sql>prompt helloworld   
>helloworld

常见的sql命令就总结到这里了,谢谢阅读,有问题请指出!

你可能感兴趣的:(DataBase,数据库,oracle,1024程序员节)