其它数据库对象.docx
《其它数据库对象.docx》由会员分享,可在线阅读,更多相关《其它数据库对象.docx(11页珍藏版)》请在冰豆网上搜索。
![其它数据库对象.docx](https://file1.bdocx.com/fileroot1/2022-11/26/3de823b3-94ee-427e-8b60-b548852aceab/3de823b3-94ee-427e-8b60-b548852aceab1.gif)
其它数据库对象
同义词(Synonyms)
是oracle的对象,它是指向其它数据库表的指针。
当创建一个同义词时就指定了一个同义词名字(表的别名),当引用同义词名字时,oracle服务器就会自动地用同义词定义的对象来代替同义词的名字。
有两种类型的同义词:
Private和Public
私有同义词是在制定的模式中
创建的,并且只允许拥有他的模式访问。
公共同义词由public模式所拥有,所有的数据库模式都可以引用它。
使用同义词可以保护数据库对象的隐私。
创建同义词:
Create[public|private]synonym<同义词名字>for<表名>
例如:
创建同义词mytest作为表mens1的别名
cretaesynonymmytestforsystem.mens1
删除同义词:
dropsynonym<同义词名字>
查看同义词:
使用下列视图之一:
Dba_Synonyms
All_Synonyms
User_Synonyms
练习:
为从Access数据库导入的”HealthCheck”表创建全局同义词health,
使所有用户可以访问。
序列
可以保证多个用户对同一张表进行操作时生成唯一的整数,通常用来做表的主键。
创建序列:
createsequence<序列名字>
startwith<起始值>
incrementby<增长值>
[MaxValue<最大值>]
[NoMaxValue]//没有上限
例如:
createsequencemySeq
startwith1
increment1
删除序列:
dropsequence<序列名字>
修改序列:
altersequence<序列名字>
[startwith<起始值>]
[incrementby<增长值>]
[MaxValue<最大值>]
查看序列:
使用下列视图之一:
Dba_Sequences
All_Sequences
User_Sequences
访问序列:
CurVal返回序列的当前值
NextVal返回序列的下一个值
例如:
selectmySeq.NextVal,cityfrompost
视图
一.概述
视图是数据库中的一个对象,本身不存储数据,但它使用一个或多个表中的数据,相当于数据库表的一个窗口,它是一种逻辑表。
可以用于下列用途:
1.限制表中行和列的使用。
因此,视图可用来控制一个或多个表中特别部分的访问.
2.隐藏复杂查询的细节。
如果数据库应用需要用到包含涉及到复杂连接操作的查询,那么建立相应的视图可以在很大程度上简化这样的查询。
3.将插入或更新值限制在一定范围内。
说明:
只有少部分的用户有权创建视图。
创建数据库以后,只有系统管理员和数据库所有者拥有此权限。
他们可以使用GrantCreateView语句将这一权限赋予其它用户。
另外,
视图的创建者必须拥有对包含于视图的所有列的读取权限。
4.可以合并表的列
二.创建视图
CreateView([columnList])
AS
select语句
说明:
1.参数说明
ViewName视图名称
ColumnList视图列名表列,如果省略,则使用select语句的列名,但是,下列
情况是必需的:
A。
select语句包含计算列或者函数操作的列;B.依赖的
基表中有相同名称的列。
例:
createviewv_Men
ASselect姓名,性别,月收入Frommens
Wherecsrq>’1980-11’
Createviewv_Count(所在部门,人数)
ASselect所在部门,count(*)frommens
Groupby所在部门
三.删除视图
DropView
事务
事务指一个或多个Sql语句所组成的序列,是对数据库操作的逻辑单位。
连续的执行提交(Commit)或回滚(Rollback)之间的操作成为一个事务,RDBMS要保证数据库的一致性是基于事务而不是基于单条的Sql语句。
事务处理就是面向逻辑单元的一种处理形式,它能够在事务处理期间发生了系统故障或用户进程故障时,是数据库自动的恢复到该事务起始前的状态。
即整个事物自动回滚
数据库的数据提交之后,这些更新操作就不能拆消。
事务提交方式:
1.显式提交
Commit语句
2.隐式提交
下列命名执行之后,系统自动提交
AlterCommentConnectCreateDisConnectdropexitgrant
RevokeRename以及退出SQL*PLUS
3.自动提交
使用SetAutoCommiton
此命令将系统变量AutoCommit的值设置为ON(默认为off)
命令来设置自动提交环境。
经过设置,SQL*PLUS会自动提交用户的更新操作。
即,设置自动提交环境之后,用户每次执行Insert
updatedelete等命令,系统将立即自动提交
4.屏蔽自动提交
SetAutoCommitoff
事务回滚:
尚未提交的Insertupdatedelete等命令,可以是用Rollback进行撤销。
5.只读事务处理:
只包含查询,也就是说,不能对数据库进行修改操作。
用SetTransactionReadOnly;可以实现只读事务。
添加表空间
数据库建好之后,就可以在其上进行相应的操作了。
如:
添加表空间,管理表空间,
等操作了。
表空间是oracle用于物理存储的结构。
表空间存储段的集合---表和索引。
同时,表空间是oracle数据库中数据的逻辑结构。
一个表空间在操作系统级映射到一个或多个数据文件上。
典型的表空间有系统表空间(Systemtablespace),临时表空间(temporarytablespace),
工具表空间(Tooltablespace),用户表空间(userstablespace),数据及其索引表空间,回滚表空间等。
Oracle建议表空间大小
表空间名称
建议大小
系统表空间
400MB
临时表空间
100MB
索引表空间
70MB
工具表空间
120MB
回滚表空间
250MB
DRSYS表空间
250MB
创建表空间
createTablespace<表空间.名称>
dataFile‘<文件名>’[Size数目[k|M][REUSE]
[Autoextend{OFF|ON[NEXT数目[k|M]]}]
[MaxSize{Unlimited|数目数目[k|M]}]
[,其他数据文件。
。
。
。
。
。
]
[ONLINE|OFFLINE]
[PERMANENT|TEMPORARY]
[MANAGEMENTLOCAL|DICTIONARY]
例如:
创建一个Yq_Table表空间,它带有两个数据文件
createtablespaceYq_Table
DataFile
‘D:
\myData\newYq1.dbf’Size100KREUSE//REUSE告诉oracle可以重用
autoextendonnext100KMaxSize2M
‘D:
\myData\newYq2.dbf’Size100KREUSE
ONLINE
Permanent;
设置默认存储值:
创建表空间时,oracle允许指定默认存储参数:
Initial设置创建时分配给每一个新对象的初始区间大小。
Next设置用户使用的随后区间的大小。
Initial和next的设置常常相同。
Minextents定义分配给一个新建对象的最小区间,多数情况下为1。
Maxextents定义了oracle允许对象拥有的最大区间,可以指定一个数目,或用
关键字Unlimited
PCTINCREASE此参数可在每次为对象添加新区间时,通过增加next值建立一个
百分数,它的值通常为0。
例如:
创建一个表空间,名为New_Tablespace,分配50M的初始空间,为对象设置区间数不受限制,则Sql语句如下:
createtablespaceNew_Tablespace
DataFile‘D:
\myData\newTable1.dbf’Size1000M
Defaultstorage(Initial50M
Next50M
MINEXTENTS1
MAXEXTENTSUnlimited
PCTINCREASE0)
说明:
在表空间指定的存储参数代表默认值,仅当在表空间中创建新对象而没有
指定特定的参数时才使用默认值。
例如,用下面的命令创建的表将继承前面例子中
的默认存储参数:
createtabletable1(
ITEM_NONumber(10,0)NOTNULL,
….)
TablespaceNew_Tablespace;
由于在createtable中没有指定storage子句,因此table1表将继承在表空间中设置的
默认存储参数。
50M的初始空间会被立即分配,以后会根据需要分配随后区间50M.
数据字典
一.概述:
Oracle数据库一个最重要的部分就是数据字典,它是只读类型的表的集合,提供数据库的信息。
可以将数据字典视为表的表。
数据字典的结构是表何视图。
数据字典对于所有的用户(从应用涉及人员到数据库管理员)来说,都是非常重要的工具。
可以是用Sql语句访问数据字典,由于数据字典是只读的,所以只能使用Select语句访问它。
一个数据字典包括基表和用户可访问的视图:
1.数据库对象所有的框架对象的定义(表、视图、索引、同义词、序列、过程、函数、包、触发器等)
2.为框架对象如何分配和使用空间
3.列的默认值
4.完整性约束信息
5.Oracle用户的名称
6.每个用户所授予的权限和角色
7.审计信息
8.数据库的其他信息
二.数据字典表
数据字典表(Datadictionarytable)可以存储表,索引、约束以及所有其它数据库结构的信息。
它们属于SYS用户。
三.数据字典视图
数据字典视图是在数据字典基表上创建的视图,分为三类:
数据字典视图前缀
前缀
范围
User
用户视图
All
扩展用户视图
DBA
数据库管理员视图
四.最常用的视图
前缀_Tables所有的视图
前缀_Tab_Columns所有表的所有列视图
前缀_Indexes所有索引视图
前缀_IND_Columns所有索引所关联的列视图
前缀_Views创建的视图的视图
前缀_Sequences所有序列的视图
前缀_Trigger创建的触发器视图
前缀_Synonym创建同义词的视图
前缀_DB_Links创建的数据库链视图
聚族(Clusters)
它是一种可选的数据库对象。
提供了一种存储表数据的方法。
可分为
表族(TableCluster)和哈希族(HashCluster)。
表族:
由若干个共享着相同数据块的表组成。
对于经常查询的表来说,使用表族比较方便,可以给查询带来下列好处:
减轻了磁盘I/O,访问同一表族里的表之间的教诲信息的时间大为缩短.
无论有多少个表,族键值只在族里存储一次,所以,使用表族存储表和索引数据将会比不使用族需要相对少的空间..
一般而言:
满足下列条件的一组表使用于采用表族:
主要用于执行查询操作,而不是以插入或更新为主的操作.
这些表经常一起被查询或连接.
创建表族:
createcluster[模式.]表族名称(列名1数据类型[,列名1数据类型]…)
[物理属性组句]
[Size数目[K|M]
[Tablespace表空间名称]
[存储属性组句]
创建分区表和分区索引
一.创建分区表
为了提高性能,oracle允许将一个巨大的数据表按某种方式划分为
几个较小的部分,并分别将其存放到不同的表空间中。
分区表就是指将一个巨型表或索引分割成相对较小的,可以独立管理的部分,这些分割的表就称为分区表或分区索引
每一个分区都具有相同的逻辑属性,如各个分区都具有相同的字段名、数据类型和约束等,但是每个小分区可以有不同的物理属性,比如不同的存储参数和不同的表空间。
如果表中包含Long或LongRaw类型的字段,则不能对表进行分区。
下列情形适合于创建分区表:
1.一个表的大小超过2GB
2.要对一个表进行并行的DML操作(如:
Update)
3.平衡硬盘I/O操作,需要将一个表分散存储在不同的表空间中
4.如果要将一个表的一部分设为相对固定,另一部分设为可更新,则必须进行分区。
例如:
表中的一部分用来存放历史数据。
1.创建分区表
Oracle9I提供四种类型的分区表:
范围分区
列表分区
散列分区
复合分区
1.1.范围分区
指按照表中的分区字段值的范围来进行分区,比如:
按照日期字段进行划分。
按照月份分成12个分区。
CreateTablesales(
Bike_noNumber,
Sale_yearintnotnull,
Sale_monthintnotnull,
Sale_dayintnotnull
)
Storage(Initial100kNext50K)Logging
PartitionbyRange(sale_year,sale_month,sale_day)
(
Partitionsales_q1ValuesLessThan(2004,04,01)
Tablespacefirst_tabsStorage(Initial20KNext10K),
Partitionsales_q2ValuesLessThan(2004,07,01)
Tablespacesecond_tabs,
Partitionsales_q3ValuesLessThan(2004,10,01)
Tablespacethird_tabs,
Partitionsales_q4ValuesLessThan(2005,01,01)
Tablespacefouth_tabs
)
ENABLEROWMovement;
说明:
A.范围分区主要部分。
PartitionbyRange(字段1,字段2,。
。
。
)表示分区范围
ValuesLessThan(字段值1,字段值2,。
。
。
)子句指定分区的上限
1.2.列表分区
分区条件是用枚举方式,如按照部门分区
主要子句:
PartitionByList(字段)
例如:
CreateTable人员(
Xmvarchar2(20),
部门char
(2)
)
Storage(Initial20KNext30K)
Tablespacetbs1
PartitionList(部门)
(
Partitiondept1Values(‘院务部’)
Storage(Initial20KNext40KPCTIncrease50)
Tablespacetbs2,
Partitiondept2Values(‘后勤部’,’人力资源部’)
……
);
1.3.散列和复合分区
二.创建分区索引