1、数据库索引
索引是数据库对象之一,用于加快数据的检索,类似于书籍的索引。在数据库中索引可以减少数据库程序查询结果时需要读取的数据量,类似于在书籍中我们利用索引可以不用翻阅整本书即可找到想要的信息。
如果数据表有 PK/Unique 两种约束 , 索引自劢创建 , 除此以外 , 索引必须手劢创建
Create [UNIQUE] index 索引名
on 表名 (列名)
tablespace 表空间
例:
create index INDEX_T_APPLOG_SEQNUM on t_user (userCode) tablespace CRM_INDEX
2、序列
是oacle提供的用于产生一系列唯一数字的数据库对象。
一般用来创建自增长主键。
语法:
CREATE SEQUENCE sequence //创建序列名称
[INCREMENT BY n] //递增的序列值是n 如果n是正数就递增,如果是负数就递减 默认是1
[START WITH n] //开始的值,递增默认是minvalue 递减是maxvalue
[{MAXVALUE n | NOMAXVALUE}] //最大值
[{MINVALUE n | NOMINVALUE}] //最小值
[{CYCLE | NOCYCLE}] //循环/不循环
[{CACHE n | NOCACHE}];//分配并存入到内存中
示例:
Create sequence seq_cdpt
Increment by 1
Start with 1
Maxvalue 999999
Minvalue 1
Nocycle
nocache
3、视图
用以存储一条sql语句(单表或多表)查询结果的虚表。 视图只有逻辑定义。每次使用的时候,只是重新执行SQL。
创建语法:
create [ or replace ] [ force ] view [schema.]view_name
[ (column1,column2,...) ]
as
select ...
[ with check option ] [ constraint constraint_name ]
[ with read only ];
tips:
1 or replace: 如果存在同名的视图, 则使用新视图"替代"已有的视图
2 force: "强制"创建视图,不考虑基表是否存在,也不考虑是否具有使用基表的权限
3 column1,column2,...:视图的列名, 列名的个数必须与select查询中列的个数相同;
如果select查询包含函数或表达式, 则必须为其定义列名.
此时, 既可以用column1, column2指定列名, 也可以在select查询中指定列名.
4 with check option: 指定对视图执行的dml操作必须满足“视图子查询”的条件即,
对通过视图进行的增删改操作进行"检查",要求增删改操作的数据,
必须是select查询所能查询到的数据,否则不允许操作并返回错误提示.
默认情况下, 在增删改之前"并不会检查"这些行是否能被select查询检索到.
5 with read only:创建的视图只能用于查询数据, 而不能用于更改数据.
创建时报没有权限解决方式
--赋予创建任意视图的权限
grant create any view to xp;
1)优点:
- 可以限制用户只能通过视图检索数据。这样就可以对最终用户屏蔽建表时底层的基表。
- 可以将复杂的查询保存为视图。可以对最终用户屏蔽一定的复杂性。
- 限制某个视图只能访问基表中的部分列或者部分行的特定数据。这样可以实现一定的安全性。
- 从多张基表中按一定的业务逻辑抽出用户关心的部分,形成一张虚拟表。
2)视图占用空间吗?
普通视图不占用空间,固化视图占用空间。
3)视图可以加快查询吗
不能。
网友评论