Oracle-DDL 2- 视图&索引
DDL-数据定义语句:
二、视图
--视图(view),本身不保存数据,保存的是一个查询语句
--对视图的操作等同于对查询语句中源数据的操作
--视图占用存储空间较小,可以快速的对特定数据进行访问和操作
--视图主要用于针对相同的数据,创建不同的视图来区分访问和操作的权限
--创建适当的视图可以简化查询语句
--创建视图需要相应的权限
/*
create 【or replace】 view 视图名称
【(列名1,列名2,……)】
as
select ……
【with read only】;
or replace 如果不写,创建的视图名称已经存在会报错
如果写上 or replace 则同名的视图会被替换
with read only 表示该视图只能查看,不能修改数据
*/
--使用管理员给scott用户赋予创建视图的权限
GRANT CREATE VIEW TO scott;
1.区分权限
--emp表针对不同的员工和职位,能够访问和操作的数据不一样
--boss和hr 可以查看和修改所有员工的信息,直接使用emp
--部门经理可以查看和修改本部门的员工信息
--普通员工只能查看自己的信息,不能修改
--针对部门经理和普通员工创建不同的视图进行区别
--部门经理的视图
CREATE VIEW v_dept20
AS
SELECT * FROM emp
WHERE deptno = 20;
--对视图的操作与对表的操作一致
SELECT * FROM v_dept20;
--对视图中数据的修改等同于对源表中数据的修改
UPDATE v_dept20
SET sal = 1500
WHERE ename = 'SMITH';
SELECT * FROM emp;
--普通员工的视图
CREATE VIEW v_7369
AS
SELECT empno,ename,job,sal,deptno FROM emp
WHERE empno = 7369
WITH READ ONLY;
SELECT * FROM v_7369;
UPDATE v_7369
SET sal = 2000;
2.简化查询语句
--查询research部门的员工人数
1)子查询
SELECT COUNT(*) FROM emp
WHERE deptno =
(SELECT deptno FROM dept WHERE dname = 'RESEARCH');
2)多表查询
SELECT COUNT(e.empno)
FROM emp e,dept d
WHERE e.deptno = d.deptno
AND d.dname = 'RESEARCH';
3)视图
--如果有些表之间的数据关系很密切,经常互相作为条件进行查询
--可以提前准备好相应的视图,从视图中查询数据
CREATE VIEW emp_dept
AS
SELECT e.*,d.deptno dno,d.dname,d.loc
FROM emp e,dept d
WHERE e.deptno(+) = d.deptno;
SELECT * FROM emp_dept;
--查询research部门的员工人数
SELECT COUNT(*) FROM emp_dept
WHERE dname = 'RESEARCH';
三、索引
--索引(index)给表中的某列数据创建索引,可以提高查询效率
--表中的每行数据所存储的位置都有一个rowid
SELECT ename,ROWID FROM emp;
--索引将数据和rowid的关系对应起来,直接通过rowid访问数据的存储位置
--经常作为查询条件的列创建索引提高查询效率
1.B树索引
--create index 索引名称 on 表名(列名);
CREATE INDEX index1 ON emp(ename);
--确认索引的创建
SELECT * FROM user_indexes;
--索引不需要使用,当查询语句中的条件用到相关的列时,索引会自动提高查询效率
--当表中数据发生变化时,索引也会自动更新,将相关数据关联起来
--b树索引适用于某列数据有大量的不相同的数据时
--当某一列有大量重复的数据时,不适合使用b树索引,应该使用位图索引
2.位图索引
--位图索引使用二进制数来存储具体某一行的键值
--create bitmap index 索引名称 on 表名(列名);
CREATE BITMAP INDEX index2 ON emp(deptno);
Oracle-DDL 2- 视图&索引的更多相关文章
- Oracle学习2 视图 索引 sql编程 游标 存储过程 存储函数 触发器
---视图 ---视图的概念:视图就是提供一个查询的窗口,来操作数据库中的数据,不存储数据,数据在表中. ---一个由查询语句定义的虚拟表. ---查询语句创建表 create table emp a ...
- Oracle数据库之视图与索引
Oracle数据库之视图与索引 1. 视图简介 视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改. 视图基于的表称为基表,视图是存储在数据字典里的一条SE ...
- Oracle-序列-存储过程-视图-索引-触发器
课程介绍 1. 约束(掌握) 2. 序列(掌握) 3. 索引(掌握) 4. 视图(掌握) 5. 存储过程(掌握) 6. 自定义函数(掌握) 7. 触发器(掌握) 数据库对象的命名规则 1.对象名称必须 ...
- Oracle之物化视图
来源于:http://www.cnblogs.com/Ronger/archive/2012/03/28/2420962.html 近期根据项目业务需要对oracle的物化视图有所接触,在网上搜寻关于 ...
- 《oracle每天一练》Oracle之物化视图
相关帖子思考和跟踪 本文转自Ronger 物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的.普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实 ...
- 深入学习Oracle分区表及分区索引
关于分区表和分区索引(About Partitioned Tables and Indexes)对于10gR2而言,基本上可以分成几类: • Range(范围)分区 • Has ...
- oracle 分区表和分区索引
很复杂的样子,自己都没有看完,以备后用 http://hi.baidu.com/jsshm/item/cbfed8491d3863ee1e19bc3e ORACLE分区表.分区索引ORACLE对于分区 ...
- ORACLE分区表、分区索引详解
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt160 ORACLE分区表.分区索引ORACLE对于分区表方式其实就是将表分段 ...
- 【三思笔记】 全面学习Oracle分区表及分区索引
[三思笔记]全面学习Oracle分区表及分区索引 2008-04-15 关于分区表和分区索引(About PartitionedTables and Indexes) 对于 10gR2 而言,基本上可 ...
- 类型:Oracle;问题:oracle 查询表详细信息;结果:oracle查询表信息(索引,外键,列等)
oracle查询表信息(索引,外键,列等) oracle中查询表的信息,包括表名,字段名,字段类型,主键,外键唯一性约束信息,索引信息查询SQL如下,希望对大家有所帮助: 1.查询出所有的用户表sel ...
随机推荐
- javaScript高级3笔记2
DOM0级事件 <img src = "../..." onclick = "function()" /> // 处理事件 elment.onc ...
- 利用栈实现字符串中三种括号的匹配问题c++语言实现
编写一个算法,检查一个程序中的花括号,方括号和圆括号是否配对,若能够全部配对则返回1,否则返回0. Head.h: #ifndef HEAD_H_INCLUDED #define HEAD_H_INC ...
- K8S中Service
Service 的概念Kubernetes Service 定义了这样一种抽象:一个 Pod 的逻辑分组,一种可以访问它们的策略 —— 通常称为微服务. 这一组 Pod 能够被 Serv ...
- Codeforces 385C Bear and Prime Numbers(素数预处理)
Codeforces 385C Bear and Prime Numbers 其实不是多值得记录的一道题,通过快速打素数表,再做前缀和的预处理,使查询的复杂度变为O(1). 但是,我在统计数组中元素出 ...
- Vue_(组件通讯)单项数据流
Vue单项数据流 传送门 单向数据流:父组件值的更新,会影响到子组件,反之则不行 修改子组件的值: 局部数据:在子组件中定义新的数据,将父组件传过来的值赋值给新定义的数据,之后操作这个新数据 如果对数 ...
- docker的数据管理
容器中管理数据主要有两种方式: 1.数据卷:容器内数据直接映射到本地宿主机. 2.数据卷容器:使用特定容器维护数据卷 数据卷: 数据卷是一个可供容器使用的特殊目录,他将主机操作系统目录直接映射进容器. ...
- Linux-配置共享目录
找到相关rpm包 运行以及错误解决** rpm -ivh tcp_wrappers-7.6-34.i386.rpm rpm -ivh portmap-4.0-54.i386.rpm rpm -ivh ...
- HashMap在什么场景下会由哪些内部方法导致线程不安全,至少给出一种场景
一直以来只是知道HashMap是线程不安全的,但是到底HashMap为什么线程不安全,多线程并发的时候在什么情况下可能出现问题? HashMap底层是一个Entry数组,当发生hash冲突的时候,ha ...
- SRS之RTMP连接处理线程conn:接收客户端推流
由 SRS之RTMP的TCP线程 分析可知,SRS 接受客户端的连接后创建了一个线程:conn,用于处理与客户端的 RTMP 连接. 本文的分析是基于该配置文件的: listen 1935; max_ ...
- 关于colab的一些技巧
1.指定工作文件夹(运行可以相对路径!) # 指定当前的工作文件夹 import os # 此处为google drive中的文件路径,drive为之前指定的工作根目录,要加上 os.chdir(&q ...