Oracle——修改列,视图,索引,同义词

修改表中的列

  1. 添加新列
    alter table 表名 add 列名 类型
  2. 修改列
    alter table 表名 modify 列名 类型
  3. 重命名表
    rename 表名 to 新表名

视图

定义:视图是封装了一条复杂的sql语句,视图是一个虚表,不会占用内存空间
优点:
1.可以限制用户只能通过视图检索数据,这样可以对用户屏蔽建表时底层的基表
2.可以将复杂的查询保存为视图,可以对用户屏蔽一定的复杂性
3.限制某个视图只能访问基表中的部分列或者部分行的特定数据,实现一定的安全性
4.可以将多张基表按一定的业务逻辑抽出用户关心的部分,形成一张虚拟表

注意:一般不对视图进行增删改
代码: creat view empview
as select * from emp;
删除视图: drop view empview

序列

用来生成连续的整数数据对象,常用来作为主键中的增长列,可以升序生成,也可以降序生成
语法:
Create sequence sequencename
[INCREMENT BY n]步长 默认1
[START WITH n]数组的第一个值 默认也是1
[{MAXVALUE N}|nomaxvalue]最大
[{MINVALUE N}|nominvalue]最小
[{cycle|nocycle}]循环和不循环
[{cache n|nocache}]缓存

在这里插入图片描述
序列裂缝产生的原因
1.回滚 2.系统异常 3.多个表使用同一个序列

索引

索引是加速数据存取的对象,利用索引可以提高数据访问性能
代码:create index 索引名 on 表名(列名)
列中主键和唯一约束列会自动创建索引

什么时候应该使用索引
1.列中数据分布范围很广
2.经常在where连接中使用或者在order by 中使用
3.表经常被访问且数据很大,每次访问访问的数据大概占数据总量的2%到4%

什么时候不应该创建索引
1.表很小
2.不常用在where等连接语句这种
3.经常进行更新,增删的表

Oracle中索引的类型
重点:树的排列规则,选取一个根节点,比根节点大的数放在右子树,比根节点小的数放在左子树
比如查询sal>1500
在这里插入图片描述

B树索引

B树索引的概念:B树索引是一个典型的树结构,不仅oracle,很多实际应用都用到,在oracle里面分三个索引块
Oracle中创建主键时默认创建一个B树索引
1 - 叶子节点块(leaf block):直接指向表里的数据行。

2 - 分支节点块(branch block):指向分支节点或者是叶子节点。

3 - 根节点块(root node):也属于分支节点,只是最顶端的分支节点。

上面三个专业名词都很形象的表现了B树索引的特点,如下图

在这里插入图片描述

由树转成模型:
在这里插入图片描述

如上图这棵树共40根叶毛,我要找第27根叶毛,如果没有索引,就得直接从第一根叶毛开始找,有了B树索引,就可以很简单的找出来,以下是利用B树索引查找方法

1.先从树根判断,27在21后面,找到21对应的树枝地址是树枝2,

2.进入树枝2,再对比27还是在21后面,找到21对应的树叶地址是树枝3,

3.进入树叶3,对比27在26后面,找到26对应的叶毛地址,那么27就很快被找出来了。
B树转载自下方博主
作者:diyyong
来源:CSDN
原文:https://blog.csdn.net/diyyong/article/details/19041485

位图索引

有张表名为table的表,由三列组成,分别是姓名、性别和婚姻状况,其中性别只有男和女两项,婚姻状况由已婚、未婚、离婚这三项,该表共有100w个记录。现在有这样的查询: select * from table where Gender=‘男’ and Marital=“未婚”;
在这里插入图片描述
1)不使用索引
  不使用索引时,数据库只能一行行扫描所有记录,然后判断该记录是否满足查询条件。
2)B树索引
  对于性别,可取值的范围只有’男’,‘女’,并且男和女可能各站该表的50%的数据,这时添加B树索引还是需要取出一半的数据, 因此完全没有必要。相反,如果某个字段的取值范围很广,几乎没有重复,比如身份证号,此时使用B树索引较为合适。事实上,当取出的行数据占用表中大部分的数据时,即使添加了B树索引,数据库如oracle、mysql也不会使用B树索引,很有可能还是一行行全部扫描。
 
使用位图索引

如果用户查询的列的基数非常的小, 即只有的几个固定值,如性别、婚姻状况、行政区等等。要为这些基数值比较小的列建索引,就需要建立位图索引。
对于性别这个列,位图索引形成两个向量,男向量为10100…,向量的每一位表示该行是否是男,如果是则位1,否为0,同理,女向量位01011。
在这里插入图片描述
对于婚姻状况这一列,位图索引生成三个向量,已婚为11000…,未婚为00100…,离婚为00010…。
在这里插入图片描述
当我们使用查询语句“select * from table where Gender=‘男’ and Marital=“未婚”;”的时候 首先取出男向量10100…,然后取出未婚向量00100…,将两个向量做and操作,这时生成新向量00100…,可以发现第三位为1,表示该表的第三行数据就是我们需要查询的结果。
在这里插入图片描述
位图索引转载自:http://www.cnblogs.com/LBSer

两种索引特点分析

B树索引(B-Tree index)
适用范围:
1)OLTP系统中
2)主键、唯一性约束
3)重复度非常低的字段
不适用范围:重复度非常高的字段
特性:
1)执行效率非常高
2)查询时间基本不受数据量的影响
3)如果重复度非常高,使用B-Tree索引还没有全盘扫描效率高

位图索引(Bitmap index)
适用范围:
1)OLAP系统中
2)主要是重复数据导致的查询性能低的问题,用来弥补B-Tree性能低的问题
3)使用OR\AND这类逻辑操作
不适用范围:大量DML操作、重复率较低的字段
特性:
1)适合在索引字段间进行OR\AND这类逻辑运算
2)位图索引占用的空间比BTree索引用的少的多
3)位图索引不适用于大量的DML操作(除select外),因为每个DML操作对应的位图索引键值对应多条数据,修改时键值会被上锁,如果此时其他用户需要更改数据,就会造成阻塞

同义词

给另外的一个账户下的一张表取一个别名,这个账户就可以使用这个表
代码: create synonym 别名 for 账户.表名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值