7 索引,视图,同义词,序列,表空间

1.重要性

索引提供对数据标的快速访问,视图给表提供了另外一种数据组织方式,应用相当广泛。

2.具体事例及sql

(1)对索引的操作(增删查改) 以及相关知识点

--创建唯一索引(唯一索引列上的值不为空)(普通索引不加UNIQUE即可)
CREATE UNIQUE INDEX UN_SNO ON TABLE(SNO ASC);
--创建复合索引
CREATE INDEX INDEX_SNODEPT ON TABLE(SNO DESC,SDEPT);
--重命名索引
ALTER INDEX INDEX_LIZI RENAME TO INDEX_LIZI1;
--对索引进行合并
ALTER INDEX INDEX_LIZI COALESCE;
--重建INDEX_LIZI索引
ALTER INDEX INDEX_LIZI REBUILD;
--删除索引
DROP INDEX INDEX_SND;
--查看索引
SELECT INDEX_NAME,INDEX_TYPE,TABLE_NAME FROM USER_INDEXES ORDER BY TABLENAME;
--查看被索引的列(查找索引INDEX_SAGE被引用的字段以及对应的表)
SELECT INDEX_NAME,TABLE_NAME,COLUMN_NAME FROM USER_IND_COLUMNS WHERE INDEX_NAME=UPPER('INDEX_SAGE');
--查看索引的大小
SELECT SUM(BYTES)/(1024) AS "SIZE(KB)",SUM(BYTES)/(1024*1024) AS "SIZE(MB)" FROM USER_SEGMENTS WHERE SEGMENT_NAME=UPPER('INDEX_SAGE');

A:数据库表的索引,可以极大的提高查询的速度。对于一个较大的表,创建索引,通常花费几小时的来完成的查询只需要几分钟。

B:复合索引的顺序一定要和查询语句中的WHERE子句后的顺序相同才有效。

C:索引类型为FUNCTION-BASED NORMAL,为B树索引。当表在使用一段时间后,伴随着索引的改变,索引会产生大量的碎片,降低效率。合并索引操作在不改变索引的物理组织结构基础上,将B树叶子节点中的存储碎片合并在一起。重建索引和合并索引都可以消除索引碎片,区别在于合并索引代价较低,无需额外空间,而重建相反。

(2)对视图的操作以及知识点

--创建视图
CREATE VIEW V_VIEW1 AS
SELECT STU.SNO,STU.SNAME,GRADE.CNAME,GRADE.SCORE
FROM STU INNER JOIN GRADE ON STU.SNO=GRADE.SNO
WHERE STU.DEPT=''; 
--通过视图插入数据 删除修改等和对表操作语句一致
INSERT INTO(...) VALUES(...);
UPDATE ...; DELETE ...;
--删除视图
DROP VIEW V_VIEW1;

A:视图在数据库中存储的是select语句,也即数据库内并没有存储视图这个表,select语句的结果集构成视图返回的虚拟表

B:create view创建视图时,select语句不能包含order by,into等子句,且不能引用临时表或表变量

C:创建视图是若加上了参数WITH READ ONLY,那么该视图只可查询。对视图数据删除时,视图的数据必须来源于一个单表。

(3)同义词SYNONYM的使用

--创建同义词Synonym,并执行相应查询
CREATE [OR REPLACE] SYNONYM MYSTU FOR SYSTEM.TABLE;
SELECT * from MYSTU;
--删除同义词
DROP SYNONYM MYSTU;

A:同义词的优势:节省了大量数据库空间,扩展了数据库的使用范围,可创建在不同数据库服务器上通过网络实现连接

B:若不显式指定同义词参数PUBLIC,则创建的为私有同义词,只供当前用户使用。

(4)序列Sequence的操作

--创建序列(起始值为1,start with:升序为1降序为-1,自增1)
CREATE SEQUENCE STUSEQ
MINVALUE 1 START WITH 1 NOMAXVALUE
INCREMENT BY 1 CACHE 30;
--使用SEQUENCE(通过NEXTVAL CURRVAL这两个伪列来访问下一个值和当下值)
SELECT STUSEQ.NEXTVAL FROM DUAL;
SELECT STUSEQ.CURRVAL FROM DUAL;
--修改序列(不会改变当前序列的值)
--(修改也不能对已经使用的序列出现逻辑上的错误,如修改的后的最大值企图小于当前的值)
ALTER SEQUENCE STUSEQ
MINVALUE -1000 MAXVALUE 1000;
--删除序列
DROP SEQUENCE STUSEQ;

A:MINVALUE:最小值  start with:升序为1降序为-1  NOMAXVALUE升序的最大值为10的27次方,降序的默认值为-1  CACHE标表示生成一组序列号保留在内存中,默认为20;

(5)表空间的操作

--创建表空间(两个数据文件供占有空间15M,EXTENT指明表空间类型是本地管理表空间,UNIFORM指定分区大小)
CREATE TABLESPACE MYSPACE 
DATAFILE 'PATH' SIZE 10M,'PATH1' SIZE 5M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;
--查询表空间信息
SELECT tablespace_name,sum(bytes)/1024/1024 as MB FROM dba_data_files GROUP BY tablespace_name;
--扩充表空间
ALTER TABLESPACE MYSPACE ADD DATAFILE 'PATH' SIZE 1000M; 
--删除表空间(数据文件未删除)
DROP TABLESPACE MYSPACE;
--创建用户,并为用户指定表空间
CREATE USER BISADMIN IDENTIFIED BY BISADMIN DEFAULT TABLESPACE MYSPACE;
--查询用户所属表空间信息
SELECT USERNAME,DEFAULT_TABLESPACE FROM DBA_USERS WHERE USERNAME='BISADMIN';

A:表空间是oracle统一存取格式的数据对象,由若干操作系统文件组成。表空间统一管理空间中的数据文件,一个数据文件只能属于一个表空间,一个数据库(实例)由若干表空间组成。oracle的所有数据都保存在表空间中。

B:用户通过CREATE创建的表空间都称为用户表自定义空间除此外oracle还有两种表空间(系统表空间和临时表空间)。系统表空间用于存放系统数据,在数据库创建时创建,名称为SYSTEM。临时表空间也是安装库时创建,用于数据排序。

C:用户创建表可在Create语句后加上TABLESPACE ...,若不指定,存放在用户默认的表空间中。创建索引指定表空间同样。

   基本表和索引一旦创建完成,表空间无法修改

(6)数据字典

ORACLE数据字分为三类(10g版本已有1800多个数据字段)。

1.USER_(对象名),记录用户对象的信息.有USER_TABLES,USER_VIEWS,USER_CONSTRAINTS等。

2.ALL_(对象名),记录用户对象的信息及呗授权访问的对象信息。如ALL_TABLES等。

3.DBA_(对象名),记录数据库实例的所有对象信息,如DBA_USERS。一般来说DBA包含USER和ALL的信息。

以上代码用到的:DBA_USERS是oracle安装后自动创建的数据字典之一,其包含数据库实例中的所有用户的信息。

   USER_TABLES,用于存储用户分配的表。USER_INDEXES,存储索引信息。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值