黑马程序员c语言教程:视图 序列 索引概念_黑马程序员c语言教程
黑马程序员c语言教程:视图 序列 索引概念由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“黑马程序员c语言教程”。
视图 序列 索引 视图的概念
--创建视图 是一个逻辑概念,本身没有数据,还是来源于表
--视图的优点 简化查询 创建视图
create view empincomeview as select e.empno, e.ename, e.sal, e.sal*12 annalsal, sal*12+nvl(comm, 0)income, d.dname from emp e, dept d where e.deptno = d.deptno;
--查询员工编号 名称 工资 年薪 年收入 部门名称信息
* 第 1 行出现错误: ORA-01031: 权限不足--需要有create view权限
用户管理中 权限管理 需要管理员登录进行授权
C:>sqlplus /as sysdba
SQL> grant create view to scott;创建视图的权限给scott用户 操作视图
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
-----------------------------------------------
DEPT TABLE
TEST2 TABLE
STUDENT TABLE
EMPINCOME TABLE
EMPINCOMEVIEW VIEW select * from empincomeview;
--视图的优点
简化复杂查询(封装 复杂sql语言)限制数据访问 银行系统视图呈现,而且只读视图, 通过存储过程和存储函数来做
通过视图修改表中的数据,不建议,有很多限制
提供数据的相互独立
同样的数据,可以有不同的显示方式
但视图不能提高性能视图的几个注意点
--视图 with check option
create view view1
as
select * from emp where deptno=10
with check option;
insert into view1 values(***,***,...., 10);
insert into view1 values(***,***,...., 20);
--通过视图只能看到10号部门的员工信息,不能插入20号部门员工
--视图with read only;
create or replace view empincomeview2
as
select e.empno, e.ename, e.sal, e.sal*12 annalsal, sal*12+nvl(comm, 0)income, d.dname
from emp e, dept d
where e.deptno = d.deptno
with read only;
--修改视图 视图只能替换,不能修改
--区分复杂视图和简单视图 没有太多实际意义,关键是求解问题--视图操作的限制
结论:一般不通过视图做insert/update/delete操作
视图的目的:就是简化查询的....====================--创建序列
create sequence myseq;序列基本概念 放在内存中速度快
auto_increment
[ 1 , 2, 3, 4......20 ]
▲
tableA 序列的应用
--创建表
create table tableA
(tid number,tname varchar2(40));
--从序列中取nextval,产生tableA的主键值
insert into tableA values(myseq1.nextval, 'aa');
序列的两个属性 NEXTVAL CURRVAL nextval应在currval之前被指定
select myseq.currval from dual;
SQL> select myseq.currval from dual;
select myseq.currval from dual
*
第 1 行出现错误:
ORA-08002: 序列 MYSEQ.CURRVAL 尚未在此会话中定义
select myseq.nextval from dual
select myseq.currval from dual 删除序列
--drop sequence myseq;序列需要注意的问题
多个表共用一个序列,造成序列不连续
回滚会造成,造成序列不连续
系统异常,内存序列丢失,造成序列不连续
================== 有关索引小专题 0 索引原始知识
索引和表 是 单独存放
索引对dba和开发人员,使用起来是透明的,只要创建索引 索引基本原理 图示 10号 20号部门
表记录
索引表
算法
--------▲
▲
b+树--------★
▲
--------▲
▲
--------`(*∩_∩*)′
▲
--------▲
★
--------★
★
--------▲
`(*∩_∩*)′
--------`(*∩_∩*)′
`(*∩_∩*)′建立索引
create index myindex on emp(deptno);create index myindex2 on emp(deptno, job);索引说明
主键本身就是索引
唯一约束也是自动索引
=========
同义词
create synonym em for emp;
管理给scott用户查询权限
ALTER USER “HR” ACCOUNT UNLOCK GRANT SELECT ON “HR”.“EMPLOYEES” TO “SCOTT”
select * from hr.employees;SQL> select count(*)from hr.employees;
为hr.employees创建一个别名
create synonym hremp for hr.employees;* 第 1 行出现错误: ORA-01031: 权限不足
---dba管理员分配权限
grant create synonym to scott;GRANT CREATE ANY SYNONYM TO “SCOTT” select count(*)from hremp;
图像界面熟悉 PK 命令行工具