数据库对象(同义词、序列、视图、索引)
2018-01-14 10:53
211 查看
数据库对象 DBObject
一、数据库对象
数据库对象(又称模式对象),是逻辑结构的集合,最基本的数据库对象就是-----表。数据逻辑结构:指的是存在一种或多种特定关系的数据元素集合。
通俗点:就是数据有规则的排列。表不就是有规则的排列吗。
其他数据库对象包括:同义词、序列、视图、索引、表、函数、包、过程、触发器等。
二、同义词
同义词(synonym)——现有对象的一个别名。场景:
Oracle只有一个数据库,用户的访问是通过表空间分隔开的,一般来说两个用户之间不能相互访问,但现在A用户要B用户分享某个表中的数据,那B的表空间就要给A分配个权限。
----将某个表共享,但这也向其他用户曝露了表,存在安全问题。因此,我们给要共享的表设置个同义词(别名),将同义词共享给其他用户。
举例:
同义词就好比我们要给这个对象取别名,也就是我们所称的“外号”,比如张新宇你们叫他“锤子”,“锤子”就是他的外号;如果某天来个IS来找“锤子”,他找得到么?找不到,“锤子”是不是很安全?IS找门卫问这里有个叫“锤子”的没有?门卫当他傻啊,如果说要找张新宇,找不找得到?找得到。
作用:
(1) 提高安全性
(2) 主要用于资源共享。
1. 同义词分类
l 私有同义词:只有自己使用;只能在其模式内访问,且不能与当前模式的对象同名。
l 公有同义词:设置别名给大家使用;
公有同义词可被所有的数据库用户访问。
2. 私有同义词
基本语法:CREATE [OR REPLACE] SYNONYM 同义词名 FOR 对象.表名;
示例:
为scott账户的emp表创建一个私有的同义词(别名)
CREATE OR REPLACE SYNONYM syn_emp FOR scott.emp;
4000
提示:如果当前是用scott账户,则可以省略scott。
注意控权:
用户在创建同义词时,需要管理员授权。
--为scott账户授权同义词
GRANT CREATE SYNONYM TO scott;
权限授出后,一定要收回(取消授权),否则会乱套。
--取消scott账户的同义词授权
REVOKE CREATE SYNONYM FROM scott;
3. 公有同义词
基本语法:CREATE PUBLIC SYNONYM 同义词名 FOR 对象.表名;
示例:
为scott账户的emp表创建一个公开的同义词(别名)
CREATE PUBLIC SYNONYM syn_emp FOR scott.emp;
注意:公有的同义词不能授权,也就是普通账户不能创建公有同义词,除非是管理员账户。
4. 调用同义词
调用同义词需要管理员给普通用户授权例如:grant select on sb
to lpf;
给lpf授予查看sb同义词的权限
SELECT * FROM syn_emp; --syn_emp 为emp表的同义词名(别名)
5. 删除同义词
DROP SYNONYM syn_emp; --删除私有同义词DROP PUBLIC SYNONYM syn_emp; --删除公有同义词
三、序列
序列是用于生成唯一的、连续的序号的对象。序列有升序和降序。一般都是升序。
作用:
能生成一组连续的、永远不重复的一组数字。
主要用于提供主键值(标识列),做分页。
标识种子——从什么数字开始,常用1
标识增量——每次增加的数
ORACLE中没有标识列,想让某列成为标识列,需要序列+触发器的配合才能实现标识列。
1. 创建序列
基本语法:CREATE SEQUENCE 序列名称 --序列名称建议:seq_表名
[start with n] --标识种子,从n开始,默认为1
[increment by n] --标识增量,每次递增n,负数为递减,默认为1
[maxvalue n | nomaxvalue] --最大值
[minvalue n | nominvalue] --最小值,(没太多含义)
[cycle | nocycle] --循环/不循环
[cache n | nocache]; --分配并存入到内存中
示例1:
CREATE SEQUENCE seq_emp;
示例2:
CREATE SEQUENCE seq_emp
start with 1 --从1开始
increment by 1 --每次递增1
maxvalue 99999 --最大值99999
minvalue 1; --最小值1
注意事项:一张表一个序列,且序列不要轻易的删掉,会造成数据的混乱。
2. 应用序列
通过序列的伪列来访问序列的值。NEXTVAL——返回序列的下一个值(一直往下,永远不回头,取下一个,指针在下一个值上面)
CURRVAL——返回序列的当前值(取当前的,指针永远在当前值上面)
示例1:
--查看序列的下一个值
SELECT seq_emp.NEXTVAL FROM dual;
(显示的值1 2 3 4 5 ……,永远不会回头,不会显示相同的数字)
--查看序列的当前值
SELECT seq_emp.CURRVAL FROM dual;
示例2:
--将序列的值插入到某表的某列中(标识列=序列+触发器)
INSERT INTO tb_name( tid,tname,tprice ) VALUES(
seq_emp.NEXTVAL, '张三', 100 );
INSERT INTO tb_name( tid,tname,tprice ) VALUES(
seq_emp.NEXTVAL, '李图', 90 );
3. 修改序列
ALTER SEQUENCE seq_empmaxvalue 5000 cycle;
注意:
l 不能更改序列的start with参数
l 尽量不要修改,一旦修改会出问题,如果实在要改,先删了再创建序列。
4. 删除序列
DROP SEQUENCE seq_emp;四、视图
通过定制的方式显示来自一个或多个表的数据。视图就是一个虚拟表,就是一段查询的SQL语句。
创建视图所依据的表称为“基表”。
优点:安全性,降低了程序的复杂程度
1. 创建视图
基本语法:CREATE [OR REPLACE] [FORCE] VIEW view_name [(alias[, alias]...)]
AS
select_statement
[WITH CHECK OPTION]
[WITH READ ONLY];
--FORCE表示强制创建视图,如果基表不存在会创建失败。使用FORCE则会在无基本的情况下创建一个失效的视图。
示例:
--查询emp表中每个员工的名字、薪水、奖金、收入、部门名称
CREATE OR REPLACE VIEW v_emps
AS
SELECT 姓名=a.ename,薪水=a.sal ,奖金=a.comm ,收入=(a.sal+nvl(a.comm,0)),部门=b.dname FROM emp a
INNER JOIN dept b
ON a.deptno=b.deptno;
注意:如果这时运行报错:没有权限,则要通过sys或system账户给scott赋view的权限。
GRANT CREATE VIEW TO scott;
2. 调用视图
SELECT * FROM v_emps;3. 删除视图
DROP VIEW v_emps;思考 :
(1) 视图是否可以调用视图?
create or replace view v_empb as
select 姓名,薪水,奖金
from v_emps;
(2) 视图是否可以无限次嵌套?
SQL Server最多是32层,Oracle中应该也差不多
(3) 视图的数据是否可以直接修改?
视图的数据保存在表里,视图只是一张虚拟的表。
理论上来说是可以修改的,这个修改是在修改基表上的数据
五、索引
索引是数据库内部编排数据的一种方法。优点:提高查询速度
1. 创建索引
CREATE INDEX 索引名 ON 表名(列名,列名,……)TABLESPACE 表空间名;
创建唯一索引:
CREATE UNIQUE INDEX index_name ON TABLENAME(column_name);
创建组合索引:
CREATE INDEX index_name ON TABLENAME(column_name1,column_name2,……);
2. 重建索引(删除再创建)
ALTER INDEX 索引名 REBUILD;3. 修改索引
索引不能修改,要么重建索引,要么删除索引后再创建索引。4. 删除索引
DROP INDEX 索引名;相关文章推荐
- Oracle组函数、多表查询、集合运算、数据库对象(序列、视图、约束、索引、同义词)等
- Oracle组函数、多表查询、集合运算、数据库对象(序列、视图、约束、索引、同义词)等
- 数据库对象(视图,序列,索引,同义词)【weber出品必属精品】
- 数据库对象(同义词,序列,视图,索引)
- Oracle基本操作七:序列,同义词,索引,视图
- Oracle笔记 五、创建表、约束、视图、索引、序列、同义词、表空间
- Oracle Class4. 数据库对象(同义词,序列,视图,索引,簇)
- 数据库对象:表,视图,索引,序列(基础1)
- oracle 中的视图,索引,序列及同义词数据字典
- 数据库中的事务、视图、序列 、同义词、索引、数据字典、PL/SQL块 、异常处理、存储过程
- Oracle的视图、索引、同义词和序列
- Oracle笔记 五、创建表、约束、视图、索引、序列、同义词、表空间
- Oracle笔记 五、创建表、约束、视图、索引、序列、同义词、表空间
- ORACLE SQL总结四:视图、序列、索引和同义词
- Oracle笔记 五、创建表、约束、视图、索引、序列、同义词、表空间
- oracle 中的视图,索引,序列及同义词数据字典
- Oracle创建表、约束、视图、索引、序列、同义词、表空间
- Oracle笔记 五、创建表、约束、视图、索引、序列、同义词、表空间
- oracle 10g 学习之视图、序列、索引、同义词(9)
- 7、视图、序列、同义词、索引