一、oracle数据库应用
1.表空间
表空间分为
永久性表空间:一般保存表丶视图丶过程和索引等的数据
临时性表空间:用于保存系统中短期活动的数据
撤销表空间:用于帮助回退未提交的事务数据
创建表空间语法
--tp_orders 名字
CREATE TABLESPACE tp_orders
datafile 'F:\Y2\oracle\datafile\tp_orders.DBF'
SIZE 10M AUTOEXTEND ON;
--删除表空间
drop TABLESPACE tp_orders
2.自定义用户管理
1.sys超级用户
2.system系统管理员用户
3.scott示范用户
--创建一个用户
CREATE USER A_oe
IDENTIFIED BY bdqn
DEFAULT TABLESPACE tp_orders
--授予connect和resource权限
GRANT connect,resource TO A_oe;
--允许用户查看employee中的记录
GRANT SELECT ON SCOTT.employee TO A_oe;
3.序列
--创建序列
CREATE SEQUENCE dept_seq
START WITH 60
INCREMENT BY 10
MAXVALUE 10000
--删除序列
drop SEQUENCE dept_seq
--序列自动插入
insert into dept(deptno,dname,loc)
values(dept_seq.nextval,'2','3');
4.同义词
--私有同义词,只能在当前模式下访问,且不能与当前模式的对象同名
CREATE SYNONYM p_sy_dept FOR scott.dept;
--公共同义词,可被所有的数据库用户访问
CREATE PUBLIC SYNONYM p_sy_dept FOR scott.dept;
--查询同义词
select * from p_sy_dept
--删除私有同义词
drop SYNONYM p_sy_dept
--删除公共同义词
drop PUBLIC SYNONYM p_sy_dept
5.索引
分类
1.b树索引
CREATE INDEX index_unique_CUSTOMER_ID ON customers(CUSTOMER_ID);
2.唯一索引和非唯一索引
CREATE UNIQUE INDEX index_unique_CUSTOMER_ID ON customers(CUSTOMER_ID);
3.反向键
CREATE INDEX index_reverse_CUSTOMER_ID ON customers(CUSTOMER_ID) REVERSE;
4.位图索引
CREATE BITMAP INDEX index_bit_NLS_TERRITORY ON customers(NLS_TERRITORY);
6.分区表
1.范围分区
create table rangeOrders(
rangeOrderNo date
)
partition by range (rangeOrderNo)
(
partition p1 values less than (to_date('2005/01/01','yyyy-mm-dd')),
partition p2 values less than (to_date('2006/01/01','yyyy-mm-dd')),
partition p3 values less than (to_date('2007/01/01','yyyy-mm-dd')),
partition p4 values less than (to_date('2008/01/01','yyyy-mm-dd')),
partition p5 values less than (to_date('2009/01/01','yyyy-mm-dd')),
partition p6 values less than (maxvalue)
);
select * from rangeOrders partition(p3);--查看第三个分区的数据
delete from rangeOrders partition(p3);--删除第三个分区的数据
insert into rangeOrders values(to_date('2013/01/01','yyyy/mm/dd'))--插入数据
2.间隔分区
create table intervalOrders
(
oDate date
)
partition by range(oDate)
interval(numtoyminterval(1,'YEAR'))--每1年为一个分区
(partition p1 values less than (to_date('2005/01/01','yyyy-mm-dd')));
--插入数据
insert into intervalOrders values(to_date('2003/12/01','yyyy-mm-dd'))
--查询分区情况
select table_name,partition_name
from user_tab_partitions
where table_name=upper('intervalOrders');
--查询分区数据
select * from intervalOrders partition(p1);
--删除分区
ALTER TABLE intervalOrders TRUNCATE PARTITION p1;