Oracle(五)

如果一个用户a不想看到其他用户b某个点以后更新的数据,如何办到呢?

a可以在这个点设置set transation read only;

此时b执行一个增加,或者修改,或者删除的时候 commit; 这样a就不会看到a点以后所更新的数据啦。

这对于并发量比较大,针对某个时间点的统计就行通啦;

 

SQL函数的使用

处理字符的函数,数学函数(不讲),日期函数,系统函数

lower(char)

upper(char)

length(char)

substr(char,m,n) 截取字符串从m开始,截取n个字符

以首字母大写显示所有员工的名字

select upper(substr(ename,1,1))||lower(substr(ename,2,length(ename)-1)) from emp;

 

 replace(ename,'A','替换成的内容')

round(sal)默认四舍五入到整数  round(sal,1) 四舍五入变成0 到小数点第一位

trunc(sal) 截取数字 trunc(sal,1) 截取到小数点第一位 -1 个位数为0 等 

 

floor(sal) 比sal小1的整数 ,地板向下取整

mod(m,n)

ceil(sal) 比sal大1的整数 , 向上取整

dual做测试的表

 

select mod(2,3) from dual; mod(m,n) 取余数

 

 

日期函数:

sysdate 

select sysdate from dual;

add_mouths(d,n) n为几个月 

八月以前入职的

select * from emp where sysdate > add_mouths(hiredate,8)

 

注意中文别名要双引号

 

入职天数 trunc(sysdate-hiredate)

 

last_day(hiredate) 这个时间当月的最后一天

倒数第三天入职的 last_day(hiredate) - 2 = hiredate

 

转换函数:

create table t1(id int)  insert into t1 values('1')

create table t2(name varchar2(20)) insert into values(234)

 

select ename,to_char(hiredate,'yyyy-mm-dd hh24:mi:ss') from emp;

注意添加数据的时候不要忘了把时分秒也指定,否则时分秒默认为:00:00:00

 

薪水数字显示成 RMBXXXX.XX

to_char(sal,'L99999.99') 例 'L99,999.99' 不能显示为空格格式 '$99,999.99' 美金

Oracle 会根据安装的Oracle自动判断前缀,中国为RMB

 

1980 年入职的  to_char(hiredate,'yyyy') = 1980

12 月份入职的  to_char(hiredate,'mm') = 12

 

系统函数

 

正在使用哪个数据库

select sys_context('usernv','db_name') from dual;

什么语言

select sys_context('usernv','language') from dual;

等等

session_user  当前操作用户是谁?

current_schema  方案名  方案名和用户名是一样的

 

用户和方案的关系,用户被创建以后,Oracle自动给你创建方案。

名字和用户名一摸一样

 

方案里很多数据对象:表,视图,触发器,存储过程。

用方案的方式存储数据对象

 

 

 

DBA

 

备份和恢复

 

数据字典和动态性能视图

 

管理表空间和数据文件

 

sys和system区别

sys具有最高的权限,sys用户对应一个sys方案,存放了Oracle的基表和视图(对Oarcle运行的很重要)

由数据库维护,其他用户无权修改。sys不能以normal形式登陆。

系统角色dba,sysdba,sysoper

sys用户具有dba,sysdba,sysoper的所有权限

system 具有dba,sysdba的所有权限

system 用于存放次一级的内部数据,如Oracle的一些特性或工具的管理。

system 登陆后其实就是一个普通的dba,但如果以sysdba登陆的话,登陆以sys登陆。

sys 必须 conn sys/change_on_install as sysdba;

system conn system/manager 以sysdba登陆.conn system/manager as sysdba;

sysdba,sysoper 角色可以启动startup;关闭数据库shutdown;,dba不可以

sysdba 可以创建数据库 sysoper不可以等

 

Oracle参数

show  parameter ;

 

数据库表的逻辑备份和恢复

 

逻辑备份:使用export工具将数据库对象的结构和数据导出到文件的过程

逻辑恢复:指当数据库对象被误操作而损坏后使用工具import利用备份文件把数据对象导入到

数据库的过程。

 

逻辑备份只能在数据库运行的状态下导出,而物理备份可以在数据库关闭的情况下导出数据

 

 

 

导出分为: 导出表 ,导出数据库(导出多个方案),导出方案(导出所有的数据对象)

 

exp  命令

 

导出表:

导出自己的表

 

exp userid=scott/tiger@myorcl table=(emp[,dept...]) file = D:\dat.dmp

 

首先要进入到Oracle BIN目录下 因为exp命令在BIN下

 

如果用户要导出其他方案的表,需要dba权限或有exp_full_database权限

如system 就可以导出scott表 exp userid=system/manager@myorcl table=(scottemp)

 file = D:\importScottEmp.dmp;

 

导出表结构

exp userid=......  rows=n  行数为NO

 

直接导出,速度快

exp userid=......  direct=y   对于大表 用direct=y 很快

 

 

导出方案:

导出自己的方案

exp userid=scott/tiger@myorcl owner=scott file=D:\xx.dmp;

导出别人的方案要有exp_full_database权限或者有dba权限

如system导出多个方案exp ...  owner=(sysyem,scott) ....

 

导出数据库

 

( full=y 全部都导出 inctype=complete 增量备份)

 

exp userid=system/manager@myorcl full=y inctype=complete file = D:\aa.dmp

 

 

导入也有三种 导入表,导入方案,导入库

imp userid=system/manager@myorcl tables=(scottemp)

 file = D:\importScottEmp.dmp;

 

导入表到其他用户

imp userid=system/manager@myorcl tables=(emp) file = D:\a.bmp

touser=scott

 

导出表结构

imp userid=system/manager@myorcl tables=(emp) file = D:\a.bmp

 rows = n

导入数据(表结构有了,只有数据导入)

imp userid=system/manager@myorcl tables=(emp) file = D:\a.bmp

 ignore=y

 

导入方案

导入自身方案

imp userid=scott/tiger file=D:xx.dmp

导入其他方案要有DBA权限

imp userid=scott/tiger file=D:xx.dmp  fromuser=system touser=scott

 

导入数据库

imp userid=system/manager full=y  file=D:xx.dmp

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(oracle)