索引
–索引是数据库调优的一个重要部分,提高查询效率,增删改将耗费大量资源
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 视图名;