日期:2014-05-16 浏览次数:20549 次
如果一个用户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
?
?
导入也有三种 导入表,导入方案,导入库