- 浏览: 160273 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
Jdking:
终于找到了。。。如果是一直递增那就好办多了~~谢谢。
Oracle10g 数据同步增量添加数据 -
yuewuying:
yjnso 写道mql8023 写道如果打成jar是不好用的哦 ...
Java Properties 类读取和修改配置文件信息 -
speed_guo:
第二章 Oracle查询、数据类型、函数 -
yjnso:
mql8023 写道如果打成jar是不好用的哦哦,好像是有这个 ...
Java Properties 类读取和修改配置文件信息 -
mql8023:
如果打成jar是不好用的
Java Properties 类读取和修改配置文件信息
Oracle 第4章 同义词、序列、视图、索引 使用CREATE SEQUENCE语句创建序列,语法为: 语法如下: 这时,Oracle只检查create view语句中的语法错误,语法正确将
1、技术目标
2、什么是Oracle数据库对象?
Oracle 数据库对象又称模式对象,
数据库对象是逻辑结构的集合,最基本的数据库对象是表,
其他数据库对象包括:
3、同义词
同义词是表、视图、序列、过程、程序包或者其他同义词的别名,使用
同义词访问对象无需指定模式前缀 ,例如,user1访问user2的表Test,
必须使用user2.Test,创建一个名为Test的同义词代表user2.Test,user1
就可使用Test来访问user2.Test
同义词的作用:
注意:在使用同义词之前要确保用户已得到访问对象的权限
同义词有两种类型:
4、私有同义词
私有同义词只能被当前模式用户访问,其名称不能与当前模式的对象名相同,
其语法如下:
create [or replace] synonym [schema.] synonym_name
for [shema.]object_name;
语法说明:
例如:
注意:要创建私有同义词必须拥有CREATE ANY SYNONYM系统权限
5、公有同义词
公有同义词可被所有数据库用户访问,公有同义词可隐藏基表的身份,
降低SQL语句的复杂性,系统在安装时会创建一些字典公有同义词,
比如,同义词"TAB"可用来查询用户所拥有的表和视图对象。
语法:
create [or replace] public synonym synonym_name
for [schema.]object_name;
例如:
注意:要创建公有同义词,必须拥有CREATE PUBLIC SYNONYM系统权限
6、同义词的使用
使用1: 显示当前用户所拥有的表和视图,使用公有同义词"TAB"
select * from TAB;
注意:如果该用户已经创建了名为TAB的表(本地对象),本地对象优先
使用2:
可查询字典视图USER_SYNONYMS来查看用户创建的同义词详细信息
使用3: 删除同义词EMP
drop synonym EMP;
注意:删除同义词的语法为,
drop [public] synonym [shema.]synonym_name;
7、序列
create sequence sequence_name
[start with integer]
[increment by integer]
[MAXVALUE integer|NOMAXVALUE]
[MINVALUE integer|NOMINVALUE]
[cycle|nocycle]
[cache integer|nocache];
语法说明:
start with,指定第一个序列号,对于升序序列,默认值为序列的
最小值,对于降序序列,默认值为序列最大值
increment by,指定序号之间的间隔,默认值为1,如给负数值则
序列按降序排列
MAXVALUE,指定序列可生成的最大值
NOMAXVALUE(默认选项),如果指定了NOMAXVALUE,升序序列的
最大值将为10的27次方
MINVALUE,指定序列的最小值,MINVALUE必须小于或等于start with
指定的值以及MAXVALUE
NOMINVALUE(默认选项),如果指定了NOMINVALUE,升序序列的
最小值将为1,降序序列的最小值将为-10的26次方
cycle,指定序列在达到最大值或最小值后,继续从头开始生成值
nocycle(默认选项),指定序列在达到最大值或最小值后,不会再
继续生成值
cache,该选项可预先分配一组序号,并将其保留在内存中,可
更快的访问序列号,当用完缓存中的所有序号时,将生成
另一组数值,并将其保留在缓存中
nocache,使用该选项,将不会预先分配序列号,如果忽略cache
和nocache,Oracle将默认缓存20个序列号
8、序列的使用
通过序列的伪列可访问序列的值,伪列有:
使用1: 给学员表信息表创建序列,在添加学员信息是使用序列生成学号,
--创建studentId序列(类似标识列,其值可自动增长)
create sequence studentId
start with 1
increment by 1;
--添加学员信息,使用序列的值作为学号
insert into tbl_stuInfo
(stuId, stuName, stuBirthday)
values (studentId.NEXTVAL, '张4', '15-9月-2010');
使用2: 查看序列的当前值
select studentId.CURRVAL from dual;
9、更改序列
修改序列的定义使用alter sequence语句,可执行如下操作:
alter sequence sequence_name
[increment by integer]
[MAXVALUE integer | NOMAXVALUE]
[MINVALUE integer | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE integer | NOCACHE];
注意:不能修改序列的 start with 参数,升序序列的最小值应小于最大值
使用: 为序列设置一个新的MAXVALUE,并打开CYCLE,
alter sequence 序列名
MAXVALUE 5000
CYCLE;
提示:可通过查询USER_SEQUENCES视图获取用户所建序列的详细信息
10、删除序列
使用drop sequence语句可删除序列,还可使用此语句重新开始一个序列,
就是先删除序列,再重新创建该序列,语法 为:
drop sequence [schema.]sequence_name;
11、视图
视图相当于将一个查询(select)语句存储下来,将该查询的结果
当成一张表("虚拟表"),可以针对这张表进行各种查询等操作,
所以视图可以视为"虚拟表"或"存储的查询",创建视图所依据的
表称为"基表"(查询语句中出现的表)
视图的优点有:
创建视图的语法如下:
create [or replace] [force | noforce] view view_name
[(alias[, alias]...)]
as
select_statement(查询语句)
[with check option [CONSTRAINT constraint]]
[with read only];
语法说明:
or replace,如果视图存在就重新创建该视图
force,无论基表是否存在都将创建视图
noforce(默认值),基表存在才会创建视图
view_name,视图名
alias,查询中的表达式或列的别名,其数量必须与
查询中出现的表达式数目匹配
select_statement,select语句
with check option,指定只能添加或更新视图可访问的行,
constraint表示check option约束指定的名称
with read only,确保不能在此视图上执行任何修改操作
使用1: 创建一个名为view_ven的试图,该视图与vendorMaster
表具有相应结构,可以通过该视图访问基表所有行,
create view view_ven
as
select * from vendorMaster;
使用2: 创建一个视图,只包含订单表中的"暂挂"订单记录
create view view_pause
as
select * from orderMaster
where ostatus = 'P'
说明: 该视图只显示ostatus列值为P的行
注意:如果使用该视图更新(update)orderMaster
表中的其他行(ostatus列值不为P的行)的值,也会成功,
所以,尽量不通过视图修改基表数据
使用3: 防止修改视图中可显示的行
--创建一个试图可显示ostatus为p的行
create or replace view view_pause
as
select * from orderMaster
where ostatus = 'p'
with check option CONSTRAINT chk_pv;
--通过视图修改ostatus的值
update view_pause set ostatus = 'd'
where ostatus = 'p'
执行update语句后会显示如下内容:
ERROR 位于第...行
ORA-01402:视图WITH CHECK OPTION违反WHERE子句
使用4: 创建视图,只显示基表中指定的列
create or replace view_pause
as
select orderNo, oDate from orderMaster;
注意:通过该视图只能更新(update)orderNo, oDate两列
使用5: 创建只读视图,该视图只能查询(select)
create or replace view view_pause
as
select * from orderMaster
with read only;
12、强制创建视图
在创建视图过程中使用force项,即使出现以下情况也会创建视图:
创建该视图,但是该视图却不能使用,这种视图称为"带错误创建"
的试图
13、基于视图进行添加(insert)、修改(update)、删除(delete)的限制
14、键保留表
在联接视图中,如果视图包含了一个表的主键,且该键也是视图的主键,
则这个键被保留,键所在的表称为"键保留表",Oracle可通过该视图向
表中添加行,含外联接的视图一般不含键保留表
15、删除视图
语法:drop view 视图名;
16、索引
创建索引的语法:
create index index_name
on table_name (column_list)
[tablespace tablespace_name];
语法说明:
index_name,索引名称
table_name,表名
column_list,需要创建索引的列名,可基于多列创建索引
tablespace_name,为索引指定表空间
使用: 在ItemFile表的itemCode列上创建索引,
create index item_index on ItemFile (itemCode);
Oracle在创建索引的步骤:
如对ItemFile表的itemCode列创建索引,Oracle基于itemCode列对表进
行排序,然后按排序顺序用itemCode及其ROWID值加载索引,
使用索引时,Oracle先通过已排序的itemCode值执行快速搜索,然后使用
相关联的ROWID值来定位所要查找的itemCode值的行
索引在逻辑上和物理上都独立于表中的数据,创建或删除索引不会影响表
或其他的索引
一旦创建好索引,Oracle会自动维护,如添加新行、更新现有行或删除行,
Oracle会自动更新索引
注意:为表创建过的的索引会降低更新、删除、添加的性能
删除索引,语法:
drop index 索引名;
重建现有索引,语法:
alter index 索引名 rebuild;
该语句的性能要优于使用drop index和create index重建
17、索引的类型
索引类型图:
17.1)唯一索引:
使用: 为ItemFile表的itemCode列创建唯一索引
create unique index item_index on ItemFile (itemCode);
17.2)组合索引:
使用: 为ItemFile表创建组合索引,当查询该表的where子句同时包含
pCategory, itemRate两列或pCategory一列时,该索引将用于检索数据,
如只含itemRate列,该索引不会用于检索
create index comp_index on ItemFile(pCategory, itemRate);
17.3)反向键索引
使用1: 为ItemFile表创建反向索引rev_index
create index rev_index on ItemFile (itemCode) reverse;
提示:使用关键字NOREVERSE可将反向键索引重建为标准索引
如,alter index rev_index rebuild NOREVERSE;
注意:标准索引不能重建为反向索引
17.4)位图索引
该索引用于不同值的数目比表的行数少的列,如某列的值重复
了超过100次,可考虑位图索引,如果表有100万行,而某列
有小于1000个不同的值,可考虑位图索引
位图索引使用每个列值的位图,而不使用ROWID, 位图中的
每个位对应一个可能的ROWID,如果设置了这个位,表示拥有
此ROWID的行包含该列值
create bitmap index语句创建位图索引
使用: 为订单明细表的订单号(itemCode)一列创建位图索引
create bitmap index bit_index on orderDetail(itemCode);
位图索引的优势:
注意:位图索引不应用在频繁发生insert、update、delete操作
的表上,这些操作在性能方面代价很高,他们会引起位图级的加
锁发生,而且要求动态重建所有可能值的位图
17.5)基于函数的索引
有时需要在where子句的条件中使用表达式,如果在where子
句的表达式或函数中已经包含了某个列,则不会使用该列上的
索引,为了此类操作,可以基于一个或多个列上的函数或表达
式创建索引
用于创建索引的函数可以使算术表达式、PL/SQL函数、程序包
函数或SQL函数的表达式,该表达式有如下限制:
问题: venName是vendorMaster表的一列,用于存储供应商
姓名,已为该列创建了唯一索引以加快查询速度,假设所有
供应商的姓名都以混合大小写的形式存储(如:John Smith、
Dave Jones、Tony Greig等),同时假设需要经常根据供应
商的姓名来查询表数据,由于采用了混合大小写的形式存储,
可能很难给出姓名的正确大小写形式,如果在where子句中
使用upper()函数,则查询要花费很长时间,因为索引值是混
合大小写形式,由于索引中没有适合于大写姓名的条目,因此
Oracle无法使用该列的标准索引
解决: 基于upper函数创建索引,
create index vn_index on vendorMaster (upper(venName));
使用: 将列值转换为全大写,然后与输入值进行比较
select * from venderMaster
where upper(venName) = 'DAVE JONES';
注意:列值进行比较时会区分大小写
另一种用法: 基于表达式创建索引,
create index exp_index on ItemFile (qtyHand * itemRate);
注意:要创建基于函数或表达式的索引,必须具有QUERY REWRITE系统权限
18、索引组织表
索引组织表与普通表的不同之处在于,该表的数据存储在于其关联的索引
中,对表数据进行的修改,如添加、更新、删除,只会对索引进行更新
索引组织表与在一个或多个列上建立索引的普通表相似,但它无需为表
和索引维护两个独立的存储空间,数据库只需维护一个索引,该索引包
含相应行的已编码键值和与其关联的列值
行的实际数据存储在索引中,而不是将行的ROWID作为索引条目的第二
个元素
可使用带有organization index子句的create table命令来创建索引
组织表
使用: 创建索引组织表 indOrgTab
create table indOrgTab
(
venCode number(4) primary key,
venName varchar2(20)
)
organization index;
注意:primary key是创建索引组织表所必须的
索引组织表适合于通过主键来访问数据,与唯一索引一样,索引组织表
没有重复的键值,因为只有非键列的值与该键存储在一起
操作索引组织表与操作普通表一样,但是数据库会通过操作相应的索引
来执行所有操作
常规表与索引组织表的区别 ,如下:
普通表 索引组织表
=============================
ROWID 唯一地标识行 主键唯一地标识行
隐式的 ROWID 列 没有隐式的 ROWID 列
基于 ROWID 的访问 基于主键的访问
顺序扫描返回所有行 完全索引扫描返回所有行,并按主键顺序排列
支持分区 不支持分区
19、索引中的分区
与表分区类似,可以对索引进行分区,索引分区可存储在不同的表空间
中,与分区有关的索引有3种类型:
注意:对索引分区,取决于是否需要在索引结构上执行分区来保障分区后与分
区前有同样的查询响应时间
19.1)局部分区索引
局部分区索引是在分区表上创建的一种索引,该索引中,Oracle
为表的每个分区建立一个独立的索引,所以这些索引对于分区来
说是"局部"的,通过在create index语句中指定local属性,可在
分区上创建局部索引
Oracle在于基础表相同的列上对索引进行分区,创建相同数量
的分区并指定相同的分区边界
添加、删除或拆分基础表的分区,Oracle会自动维护索引分区
使用: 创建分区表,然后在分区表上创建局部索引
--创建分区表
create table orderMaster
(
orderNo number(4),
venName varchar2(20)
)
partition by range(orderNo)
(
partition oe1 values less than (1000),
partition oe2 values less than (2000),
partition oe3 values less than (MAXVALUE)
);
--在分区表上创建局部索引
create index my_index on orderMaster (orderNo) LOCAL;
提示:可查询"USER_SEGMENTS"字典视图获取索引信息
select * from USER_SEGMENTS
where segment_name = "my_index";
观察查询结果可发现,该索引是作为单独的段为所有分区创建的
19.2)全局分区索引
全局分区索引是指在分区表或非分区表上创建的索引,全局索引
的键可以引用存储在多个分区中的行,
使用: 在之前创建的分区表orderMaster上创建全局索引,
在有3个分区的表上创建两个分区索引,
create index glb_index on orderMaster (orderNo) GLOBAL
partition by range (orderNo)
(
partition ip1 values less than (1500),
partition ip2 values less than (MAXVALUE)
);
注意:不能在散列分区或子分区建立全局索引
19.3)全局非分区索引
在分区表上创建的全局普通索引,索引没有被分区,索引结
构不会被分割
20、获取索引的信息
与索引有关的数据字典视图有:
使用:
select index_name, table_name, column_name
from USER_IND_COLUMNS
order by index_name, column_position;
21、总结
发表评论
-
Oracle10g 数据同步增量添加数据
2011-07-02 21:00 1716两个表做数据同步时增量添加数据的方法: Oracle10g中 ... -
第六章 游标
2011-05-24 15:26 11841、技术目标 游标的使用 2、什么是游标?游标是查 ... -
第五章 使用PL/SQL
2011-05-24 15:24 1347Oracle 第5章 使用PL/SQL 1、技术目标 ... -
第三章 锁、表分区
2011-05-24 15:20 1533Oracle 第3章 锁、表分区 1、技术目标 ... -
第二章 Oracle查询、数据类型、函数
2011-05-24 15:19 2547Oracle 第2章 Oracle查询、数据类型、函数 ... -
如何为Oracle配置多个监听器
2011-05-24 14:44 2298在安装Oracle时,系统已经自动创建了一个名为LI ... -
第一章 Oracle入门
2011-05-24 14:03 11851、技术目标 了解 Oracle 体系结构的各种组件 ... -
WIN7下安装Oracle 10g 的详细过程
2011-05-21 13:58 1483(1)在Oracle 官网上下载Oracle 10g的软件 ...
相关推荐
Oracle 实验报告 - 索引、视图、序列和同义词的创建 本实验报告旨在介绍 Oracle 中的索引、视图、序列和同义词的概念和应用。通过实验,掌握创建索引、视图、序列和同义词的命令,并理解它们在数据库中的作用。 一...
总结起来,视图提供了定制化的数据视图,同义词提供了对象的别名,序列生成唯一标识符,而索引则优化了查询性能。在Oracle数据库管理中,这些概念和操作都是不可或缺的组成部分。正确理解和使用它们,能极大地提升...
在第13讲中,我们重点关注了四个核心概念:视图、索引、序列和同义词,这些都是数据库管理和优化的重要工具。 1. 视图(View) 视图是数据库中的一个虚拟表,它是由SQL SELECT语句定义的,基于一个或多个实际表(或...
在Oracle数据库管理中,实验3涉及到了几个关键的数据库对象:视图、序列、同义词和索引。这些元素是构建和管理高效数据库系统的重要组成部分。以下是它们的详细解释和示例: 1. **视图(View)**: 视图是从一个或...
Oraclei视图序列索引和同义词PPT教案.pptx
### Oracle索引、视图、序列与同义词实验知识点详解 #### 一、Oracle索引的创建与管理 **1.1 创建普通索引** - **实验目标**:掌握如何在Oracle数据库中为特定列创建索引。 - **实验步骤**:在SCOTT模式下,为`...
本文将详细探讨四个关键概念:索引、视图、同义词和序列。 首先,索引是提升查询性能的关键工具。它们为表的特定列提供额外的数据结构,允许数据库更快地定位和检索数据。创建索引分为两种主要方式:企业管理器和...
本实验主要涉及四个关键概念:视图、序列、同义词和索引。 **视图**是SQL中的一个重要特性,它允许用户创建一个虚拟的表,这个表的数据来源于一个或多个已存在的表,通过查询语句来定义。视图并不存储实际数据,...
在SQL中,视图、序列、同义词和索引是数据库管理中常见的概念,它们分别用于不同的目的,以提高数据管理和使用的效率。 视图(View)是虚拟表,它根据用户的需求,通过查询实际存在的表来构建。视图中的数据并非...
总结来说,本章的学习旨在帮助开发者理解并熟练运用Oracle数据库中的序列、索引和同义词,从而提升数据库管理的效率和应用的性能。通过学习和实践,可以更好地掌握这些概念,以便在实际的SQL开发中灵活运用。
### Oracle 数据对象的分析2(索引_序列_同义词) #### 一、索引(INDEX) **索引**是提高数据访问效率的关键技术之一,在Oracle数据库中扮演着极其重要的角色。它允许用户更快地查找和检索数据,从而极大地提高了...
【索引序列同义词数据字典】是一个与数据库管理和优化相关的学习课件,主要讲解了Oracle数据库中的一些关键概念和技术,包括临时表、视图、以及索引的使用。 首先,临时表在Oracle数据库中分为两种类型:事务临时表...
小白必看!
第4章 数据操作及完整性 第5章 SQL查询技术 第6章 索引和视图 第7章 PL/SQL编程 第8章 存储过程和触发器 第9章 序列、同义词、程序包 第10章 Oracle数据库安全管理 第11章 数据库的备份与恢复 第12章 数据库应用系统...
本文将详细讲解Oracle中的几个关键概念:视图、索引、同义词和序列,以及它们在查询优化和数据管理中的作用。 首先,我们来谈谈索引。索引是一种特殊的数据库结构,它能够显著提升查询速度。Oracle支持多种类型的...
第十七章 序列、同义词 第十八章 PL SQL 第十九章 游标、函数 第二十章 存储过程 第二十一章 触发器 第二十二章 事务(数据库系统概论) 第二十三章 用户管理 第二十四章 备份 恢复 SQLLoader 第二十五章 数据库设计...
第十七章 序列、同义词 第十八章 PL SQL 第十九章 游标、函数 第二十章 存储过程 第二十一章 触发器 第二十二章 事务(数据库系统概论) 第二十三章 用户管理 第二十四章 备份 恢复 SQLLoader 第二十五章 ...
第十七章 序列、同义词 第十八章 PL SQL 第十九章 游标、函数 第二十章 存储过程 第二十一章 触发器 第二十二章 事务(数据库系统概论) 第二十三章 用户管理 第二十四章 备份 恢复 SQLLoader 第二...
第十七章 序列、同义词 第十八章 PL SQL. 第十九章 游标、函数 第二十章 存储过程 第二十一章 触发器 第二十二章 事务(数据库系统概论) 第二十三章 用户管理 第二十四章 备份 恢复 SQLLoader 第二十五章 数据库...
第十七章 序列、同义词 第十八章 PL SQL 第十九章 游标、函数 第二十章 存储过程 第二十一章 触发器 第二十二章 事务(数据库系统概论) 第二十三章 用户管理 第二十四章 备份 恢复 SQLLoader 第二十五章 ...