oracle序列的改变解析.docx

上传人:b****8 文档编号:23628908 上传时间:2023-05-19 格式:DOCX 页数:14 大小:194.92KB
下载 相关 举报
oracle序列的改变解析.docx_第1页
第1页 / 共14页
oracle序列的改变解析.docx_第2页
第2页 / 共14页
oracle序列的改变解析.docx_第3页
第3页 / 共14页
oracle序列的改变解析.docx_第4页
第4页 / 共14页
oracle序列的改变解析.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

oracle序列的改变解析.docx

《oracle序列的改变解析.docx》由会员分享,可在线阅读,更多相关《oracle序列的改变解析.docx(14页珍藏版)》请在冰豆网上搜索。

oracle序列的改变解析.docx

oracle序列的改变解析

分区方法

范围分区

散列分区

列表分区

复合分区

❑范围分区

❑以表中的一个列或一组列的值的范围分区

❑范围分区的语法:

PARTITIONBYRANGE(column_name)

PARTITIONpart1VALUELESSTHAN(range1),

PARTITIONpart2VALUELESSTHAN(range2),

...

[PARTITIONpartNVALUELESSTHAN(MAXVALUE)]

);

❑散列分区

❑允许用户对不具有逻辑范围的数据进行分区

❑通过在分区键上执行HASH函数决定存储的分区

❑将数据平均地分布到不同的分区

❑散列分区语法

PARTITIONBYHASH(column_name)

PARTITIONSnumber_of_partitions;

PARTITIONBYHASH(column_name)

(PARTITIONpart1[TABLESPACEtbs1],

PARTITIONpart2[TABLESPACEtbs2],

...

PARTITIONpartN[TABLESPACEtbsN]);

❑列表分区

❑允许用户将不相关的数据组织在一起

❑列表分区的语法:

PARTITIONBYLIST(column_name)

PARTITIONpart1VALUES(values_list1),

PARTITIONpart2VALUES(values_list2),

...

PARTITIONpartNVALUES(DEFAULT)

);

❑复合分区

❑范围分区与散列分区或列表分区的组合

❑复合分区的语法:

PARTITIONBYRANGE(column_name1)

SUBPARTITIONBYHASH(column_name2)

SUBPARTITIONSnumber_of_partitions

PARTITIONpart1VALUELESSTHAN(range1),

PARTITIONpart2VALUELESSTHAN(range2),

...

PARTITIONpartNVALUELESSTHAN(MAXVALUE)

);

引用分区:

基于由外键引用的父表的分区的方

法,它依赖已有的父表子表的关系,子表通过外键

关联到父表,进而继承了父表的分区方式而不需自

己创建,子表还继承了父表的维护操作。

1,主表是范围分区,子表是引用分区

2,主表是列表分区,子表是引用分区

3,主表是散列分区,子表是引用分区

间隔分区:

可以完全自动地根据间隔阈值创建范

围分区,它是范围分区的扩展。

在数据仓库中有广泛的应用。

基于虚拟列的分区:

把分区建立在某个虚拟列

上,即建立在函数或表达式的计算结果上,来完成

某种任务。

系统分区:

不指定分区列,由ORACLE来完成分

区的控制和管理,它没有了范围分区或列表分区的

界限

❑在已分区的表中插入数据与操作普通表完全相同,Oracle会自动将数据保存到对应的分区

❑查询、修改和删除分区表时可以显式指定要操作的分区

INSERTINTOSALES3VALUES(‘P001’,’02-3月-2001',2000);

INSERTINTOSALES3VALUES(‘P002’,’10-5月-2001',2508);

INSERTINTOSALES3VALUES(‘P003’,’05-7月-2001',780);

INSERTINTOSALES3VALUES(‘P004’,’12-9月-2001',1080);

SELECT*FROMSALES3PARTITION(P3);

DELETEFROMSALES3PARTITION(P2);

❑分区维护操作修改已分区表的分区。

❑分区维护的类型:

❑计划事件-定期删除最旧的分区

❑非计划事件-解决应用程序或系统问题

❑分区维护操作有:

❑添加分区

❑删除分区

❑截断分区

❑合并分区

❑拆分分区

❑添加分区–在最后一个分区之后添加新分区

SQL>ALTERTABLESALES

ADDPARTITIONP4VALUESLESSTHAN(4000);

❑删除分区–删除一个指定的分区,分区的数据也随之删除

SQL>ALTERTABLESALESDROPPARTITIONP4;

❑截断分区–删除指定分区中的所有记录

SQL>ALTERTABLESALESTRUNCATEPARTITIONP3;

❑合并分区-将范围分区或复合分区的两个相邻分区连接起来

SQL>ALTERTABLESALES

MERGEPARTITIONSS1,S2INTOPARTITIONS2;

❑拆分分区-将一个大分区中的记录拆分到两个分区中

SQL>ALTERTABLESALESSPLITPARTITIONP2AT(1500)

INTO(PARTITIONP21,PARTITIONP22);

❑同义词是现有对象的一个别名。

❑简化SQL语句

❑隐藏对象的名称和所有者

❑提供对对象的公共访问

❑同义词共有两种类型:

私有同义词只能在其模式内访问,且不能与当前模式的对象同名。

同义词

私有同义词

公有同义词

CREATESYNONYMempFORSCOTT.emp;

SCOTT.emp 的别名

模式名

表名

私有同义词

公有同义词

CREATEPUBLICSYNONYMemp_synFORSCOTT.emp;

同义词名称

创建或替换现有的同义词

CREATEORREPLACESYNONYMemp_synFORSCOTT.emp;

替换现有的同义词

SQL>DROPSYNONYMemp;

SQL>DROPPUBLICSYNONYMemp_syn;

删除同义词

❑序列是用于生成唯一、连续序号的对象

❑序列可以是升序的,也可以是降序的

❑使用CREATESEQUENCE语句创建序列

指定内存中预先分配的序号数

SQL>CREATESEQUENCEstu_seq

STARTWITH1

INCREMENTBY1

MAXVALUE2000

MINVALUE1

NOCYCLE

CACHE10;

通过序列的伪列来访问序列的值

NEXTVAL返回序列的下一个值

CURRVAL返回序列的当前值

第一次使用序列中的值的时候,要使用NEXTVAL

使用ALTERSEQUENCE语句修改序列,

不能更改序列的STARTWITH参数

SQL>ALTERSEQUENCEstu_seqMAXVALUE5000CYCLE;

使用DROPSEQUENCE语句删除序列

SQL>DROPSEQUENCEstu_seq;

❑视图以经过定制的方式显示来自一个或多个表的数据

❑视图可以视为“虚拟表”或“存储的查询”

❑创建视图所依据的表称为“基表”

❑视图的优点有:

❑提供了另外一种级别的表安全性

❑隐藏的数据的复杂性

❑简化的用户的SQL命令

❑隔离基表结构的改变

❑通过重命名列,从另一个角度提供数据

创建视图的语法:

CREATE[ORREPLACE][FORCE]VIEW

view_name[(alias[,alias]...)]

ASselect_statement

[WITHCHECKOPTION]

[WITHREADONLY];

使用WITHCHECKOPTION选项创建视图

createorreplaceviewview2asselect*fromstudentwheresno=3withcheckoption;

使用ORDERBY子句创建视图

createorreplaceviewview3asselect*fromstudentorderbysnodesc;

创建带有错误的视图

CREATEFORCEVIEWvenAS

SELECT*FROMaddress;

联接视图

相等连接(第一种写法):

selecttable1.column,table2.column

fromtable1,table2

wheretable1.column1=table2.column2

可以使用表的别名,为了书写的简化。

相等连接(第二种写法):

selecttable1.column,table2.column

fromtable1innerjointable2

ontable1.column1=table2.column2

可以使用表的别名,为了书写的简化。

左外连接(第一种写法):

selecttable1.column,table2.column

fromtable1leftouterjointable2

ontable1.column1=table2.column2

可以使用表的别名,为了书写的简化。

左外连接(第二种写法):

selecttable1.column,table2.column

fromtable1,table2

wheretable1.column1=table2.column2(+)

可以使用表的别名,为了书写的简化。

❑在视图上也可以使用修改数据的DML语句,如INSERT、UPDATE和DELETE

❑视图上的DML语句有如下限制:

❑只能修改一个底层的基表

❑如果修改违反了基表的约束条件,则无法更新视图

❑如果视图包含连接操作符、DISTINCT关键字、集合操作符、聚合函数或GROUPBY子句,则将无法更新视图

❑如果视图包含伪列或表达式,则将无法更新视图

键保留表

department

student

英语系

003

数学系

002

中文系

001

deptname

deptno

001

李四

2

002

王五

3

001

张三

1

deptno

Sname

Sno

CREATEVIEWview_stu_deptAS

selects.sno,s.sname,s.deptno,d.deptname

fromstudents,departmentdwheres.deptno=d.deptno;

updateview_stu_deptsetdeptno='d'wheresno=1;

--可以更新键保留表的列

updateview_stu_deptsetdepartment='历史系'wheresno=1;

--不可以更新非键保留表的列

❑视图中可以使用单行函数、分组函数和表达式

❑必须为使用函数或者表达式的字段指定名字

CREATEVIEWitem_viewAS

SELECTitemcode,LOWER(itemdesc)item_desc

FROMitemfile;

❑使用DROPVIEW语句删除视图

SQL>DROPVIEWtoys_view;

❑索引是与表相关的一个可选结构

❑用以提高SQL语句执行的性能

❑减少磁盘I/O

❑使用CREATEINDEX语句创建索引

❑在逻辑上和物理上都独立于表的数据

❑Oracle自动维护索引

❑索引分为:

B树索引(平衡树索引)、位图索引。

❑B树索引分为:

唯一索引、组合索引、反向键索引、基于函数的索引

索引的类型

基于函数的索引

反向键索引

位图索引

唯一索引

组合索引

创建标准索引

SQL>CREATEINDEXitem_indexONitemfile(itemcode)

TABLESPACEindex_tbs;

分析索引

❑analyzeindexvalidatestructure;

查看index_stats表中的pct_used列的值,如果pct_used的

值过低,说明在索引中存在碎片,可以重建索引,来提高

pct_used的值,减少索引中的碎片。

❑唯一索引确保在定义索引的列中没有重复值

❑Oracle自动在表的主键列上创建唯一索引

❑使用CREATEUNIQUEINDEX语句创建唯一索引

SQL>CREATEUNIQUEINDEXitem_index

ONitemfile(itemcode);

❑组合索引是在表的多个列上创建的索引

❑索引中列的顺序是任意的

❑如果SQL语句的WHERE子句中引用了组合索引的所有列或大多数列,则可以提高检索速度

SQL>CREATEINDEXcomp_index

ONitemfile(p_category,itemrate);

❑反向键索引反转索引列键值的每个字节

❑通常建立在值是连续增长的列上,使数据均匀地分布在整个索引上

❑创建索引时使用REVERSE关键字

SQL>CREATEINDEXrev_index

ONitemfile(itemcode)REVERSE;

SQL>ALTERINDEXrev_indexREBUIDNOREVERSE;

❑位图索引适合创建在低基数列上

❑位图索引不直接存储ROWID,而是存储字节位到ROWID的映射

❑节省空间占用

❑如果索引列被经常更新的话,不适合建立位图索引

❑总体来说,位图索引适合于数据仓库中,不适合OLTP中

SQL>CREATEBITMAPINDEXbit_index

ONorder_master(orderno);

❑基于一个或多个列上的函数或表达式创建的索引

❑表达式中不能出现聚合函数

❑不能在LOB类型的列上创建

❑创建时必须具有QUERYREWRITE权限

SQL>CREATEINDEXlowercase_idx

ONtoys(LOWER(toyname));

SQL>SELECTtoyidFROMtoys

WHERELOWER(toyname)='doll';

重建索引

❑ALTERINDEXindex_nameREBUILD[ONLINE][NOLOGGING][COMPUTESTATISTICS];

其中:

ONLINE使得在重建索引过程中,用户可用对原来

的索引进行修改;

NOLOGGING表示在重建过程中产生最少的重做条目redo

Entry;

COMPUTESTATISTICS表示在重建过程中就生成了oracle

优化器所需的统计信息,避免了索引重建之后再进行analyze

或dbms_stats来收集统计信息。

删除索引

SQL>DROPINDEXitem_index;

❑可以将索引存储在不同的分区中

❑与分区有关的索引有三种类型:

❑局部分区索引-在分区表上创建的索引,在每个表分区上创建独立的索引,索引的分区范围与表一致

❑全局分区索引-在分区表或非分区表上创建的索引,索引单独指定分区的范围,与表的分区范围或是否分区无关

❑全局非分区索引-在分区表上创建的全局普通索引,索引没有被分区

❑与索引有关的数据字典视图有:

❑USER_INDEXES-用户创建的索引的信息

❑USER_IND_PARTITIONS-用户创建的分区索引的信息

❑USER_IND_COLUMNS-与索引相关的表列的信息

SQL>SELECTINDEX_NAME,TABLE_NAME,COLUMN_NAME

FROMUSER_IND_COLUMNS

ORDERBYINDEX_NAME,COLUMN_POSITION

Stud_details

Science

5

Maths

4

English

2

Subname

Subno

4

33

James

2

4

40

Jesica

3

2

45

Rob

1

Subno

Submrks

Studname

Studno

Sub_dets

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 销售营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1