oracle学习笔记3(三)

2014-11-24 17:04:37 · 作者: · 浏览: 3


从物理上讲,数据库是存放在数据文件中,从逻辑上讲,数据库是存放在表空间中,表空间由一个或多个数据文件组成
逻辑结构包括数据库、表空间、段、区、块,数据库由表空间组成,表空间由段组成,段由区组成,区由块组成
通过表空间可以实现:
控制数据库占用的磁盘空间
dba将不同的数据类型部署到不同位置,提高I/O性能,利于恢复和备份

//建立表空间
create tablespace //dba用户或者具有create tablespace 权限
create tablespace data01 datafile d:/data01.dbf size 20m uniform size 128K; //创建20兆大小的表空间(最大500m),区的大小为128K
create table mypart(deptno number(4),deptname varchar2(10),loc varchar2(14)) tablespace data01;//创建表mypart,放在data01的表空间中,如果没有指定表空间,默认是在system表空间中

//改变表空间状态
alter tablespace data01 offline; //使表空间data01脱机
alter tablespace data01 online; // 使表空间data01联机
alter tablespace data01 read only; // 使表空间data01只读
alter tablespace data01 read write; // 使表空间data01可读可写

select * from all_tables where tablespace="data01"; //查询data01表空间中的所有的表
select tablespace_name, table_name from user_tables where table_name='EMP';//查询emp属于哪个表空间

drop tablespace data01 including contents and datafiles; //删除表空间

//扩展表空间三种方法:1增加数据文件 2、增加数据文件的大小 3、设置自动增长
alter tablespace data01 datafile 'd:/data02.dbf' 300M; //为表空间data01增加另外一个数据文件data02.dbf,300M大小
alter tablespace data01 'd:/data01.dbf' resize 100M; //把原来的数据文件改变为100M大小
alter tablespace data01 'd:/data01.dbf' autoextend on next 10M maxsize 500M; //设置表空间data01文件的自动增长,

//移动数据文件
1、确定属于哪个表空间
2、将表空间转为offline
alter tablespace data01 offline;
3、使用命令移动到指定位置
host move d:/data01.dbf c:/data01.dbf
4、执行alter tablespace命令
alter tablespace data01 rename datafile 'd:/data01.dbf' to 'c:/data01.dbf'
5、使表空间联机
alter tablespace data01 online;
//表空间状态,online、offline、read only、read write
//索引表空间、undo表空间、临时表空间、非标准块的表空间

日期函数:
sysdate //系统时间
select sysdate from dual; //获取系统日期
select ename form emp where sysdate>add_months(hiredate,300); //300个月之前入职的
select floor(sysdate-hiredate) "入职天数" from emp; //计算入职天数
select hiredate last_day(hireday) from emp;
select hiredate ename from emp where last_day(hireday)-2=hireday; //倒数第三天入职的员工

转换函数:
oracle是隐形转换
select ename to_char(hiredate,'yyyy-mm-dd h24:mi:ss') from emp; //指定日期格式的显示
select ename to_char(sal,'L99999.99') from emp; //显示货币币种,L代表本地币种,9代表数字,点和逗号是原意,$表示美元,0表示数字不足补0
select ename hiredate from emp where to_char(hiredate,'yyyy')=1980;//1980年入职的员工

系统函数:
select sys_context('userenv','db_name') from dual; //获取当前的数据库
select sys_context('USERENV','language') form dual;//获取当前的语言
select sys_context('userenv','session_user') from dual;//获取当前的用户
select sys_context('userenv','current_schema') from dual;//获取当前的方案
oracle是以方案的形式来管理数据对象的,包括表,存储过程、触发器等等