(七).索引視圖

索引

–索引是数据库调优的一个重要部分,提高查询效率,增删改将耗费大量资源

CREATE TABLE T_INDEX(
   T_ID NUMBER,
   S_NAME VARCHAR2(30),
   S_SUB VARCHAR2(30)
)

唯一索引

–何时创建:当某列的值都是唯一的时候
–注意:当建立主键或者唯一约束的时候,自动建立

CREATE UNIQUE INDEX UN_INDEXS ON T_INDEX(T_ID);

组合索引

–何时创建:当两个或者以上的字段经常作为条件时
–顺序任意 无需相邻

CREATE UNIQUE INDEX NAME_SUB_INDEX ON T_INDEX(S_NAME,S_SUB);

反向键索引

–何时创建:大批量新增带有自增长列,主键自增长
–作用:降低叶子块的争用,提高系统性能

CREATE INDEX T_ID_REV ON T_INDEX(T_ID) REVERSE;

位图索引

–何时创建:列中有许多重复且固定的数据(例:性别,婚姻状况,学历)
–优点:以压缩形式存放,占空间少

CREATE BITMAP INDEX 索引名 ON 表名(字段);

函数索引

–何时创建:在WHERE子句中包含函数或者表达式时
–包括:算术表达式,自定义函数,系统函数

CREATE INDEX 索引名 ON 表名(表达式);

删除索引

DROP INDEX 索引名;

视图

–视图是一种数据库对象,是从一张或者多张表或者视图中导出的虚表
–它所对应的数据并没有真正存在视图,而是存在所引用的表
–优点:安全,简化数据操作,着重于特定数据

授权视图权限

GRANT CREATE VIEW TO SCOTT;

创建简单视图

CREATE OR REPLACE VIEW V_EMP
   AS
   SELECT EMPNO 工号,ENAME 姓名,JOB 岗位,SAL 薪资 FROM EMP;

查询视图

SELECT * FROM V_EMP;

指定视图的别名 注意:别名个数必须匹配SELECT中的字段个数

CREATE OR REPLACE VIEW V_EMP_ALIAS(工号,姓名)
   AS
   SELECT EMPNO,ENAME FROM EMP;       
SELECT * FROM V_EMP_ALIAS WHERE 工号=7369;

查看视图可修改的列

SELECT TABLE_NAME,COLUMN_NAME,UPDATABLE,INSERTABLE,DELETABLE 
FROM USER_UPDATABLE_COLUMNS WHERE TABLE_NAME='V_EMP_ALIAS';
SELECT * FROM EMP;

视图新增 可以增删改

INSERT INTO V_EMP_ALIAS VALUES(3409,'玖玖');

创建只读视图 WITH READ ONLY

CREATE OR REPLACE VIEW V_EMP_READONLY
   AS
   SELECT EMPNO,ENAME,SAL FROM EMP
   WITH READ ONLY;
    
INSERT INTO V_EMP_READONLY VALUES(3466,'魔笛',8000);

创建约束视图 WITH CHECK OPTION

约束视图里面的约束就是WHERE 后面的条件

CREATE OR REPLACE VIEW V_EMP_CHECK
   AS
   SELECT EMPNO,ENAME,SAL,DEPTNO FROM EMP WHERE DEPTNO=10
   WITH CHECK OPTION CONSTRAINT V_EMP_CK;
   
INSERT INTO V_EMP_CHECK VALUES(1810,'蓝色风',8000,10);
DELETE FROM V_EMP_CHECK WHERE EMPNO=7782;

创建复杂视图(一般不能进行DML操作)

CREATE OR REPLACE VIEW V_EMPDEPT_SUM
AS
 SELECT D.DNAME 部门名,COUNT(1) 人数,
 MAX(SAL) 最高工资,MIN(SAL) 最低工资,SUM(SAL) 总工资 FROM EMP 		E,DEPT D
WHERE E.DEPTNO=D.DEPTNO GROUP BY D.DNAME;    

SELECT * FROM V_EMPDEPT_SUM;

删除视图

DROP VIEW 视图名;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值