Oracle数据库对象,同义词、序列、视图、索引

数据库对象简介

Oracle 数据库对象又称模式对象

数据库对象是逻辑结构的集合,最基本的数据库对象是表

其他数据库对象包括:

同义词是现有对象的一个别名。

  简化SQL语句

  隐藏对象的名称和所有者

  提供对对象的公共访问

同义词共有两种类型:

CREATE  USER  test  IDENTIFIED  BY  test;
GRANT  CONNECT , CREATE  SYNONYM TO test;
GRANT  SELECT   ON   SCOTT.EMP  TO test;
GRANT  DELETE  ON   SCOTT.EMP TO test;
GRANT  UPDATE  ON  SCOTT.EMP TO test;

CREATE  SYNONYM   staff   FOR  SCOTT.emp;

CREATE   PUBLIC   SYNONYM  pub_emp FOR  SCOTT.emp;

CREATE OR REPLACE PUBLIC SYNONYM  pub_emp FOR SCOTT.emp;

DROP SYNONYM   staff;
DROP PUBLIC SYNONYM   pub_emp; 

序列

序列是用于生成唯一、连续序号的对象

序列可以是升序的,也可以是降序的

使用CREATE SEQUENCE语句创建序列

依次为:

序列案例

create table  t_testseq
(
    id  number  primary key,
    name varchar2(10)  NOT NULL
);

create  sequence  seq_value
Start with   1
Increment  by  1;

访问序列

通过序列的伪列来访问序列的值

NEXTVAL 返回序列的下一个值

CURRVAL 返回序列的当前值

INSERT INTO  t_testseq
     VALUES (seq_value.NEXTVAL, ‘tom‘)
INSERT INTO  t_testseq
     VALUES (seq_value.NEXTVAL, ‘jime‘);

SELECT  seq_value.CURRVAL FROM dual;

更改和删除序列

ALTER SEQUENCE  SEQ_VALUE  MAXVALUE   5000   CYCLE;

DROP   SEQUENCE   SEQ_VALUE;

 视图

select dept.deptno,dname,loc,empno,ename,job,mgr,hiredate
from emp,dept
where emp.deptno = dept.deptno  and  dname= ‘ SALES ‘;

--查看当前用户的系统权限
select * from user_sys_privs;
--查看当前用户角色权限
select * from user_role_privs;
--查看某个角色权限
select * from role_sys_privs where role =‘RESOURCE’;

--创建视图
create view dept_emp
as
select dept.deptno,dname,loc,empno,ename,job,mgr,hiredate
from emp,dept
where emp.deptno = dept.deptno;

select * from dept_emp  where dname= ‘ SALES ‘;

视图以经过定制的方式显示来自一个或多个表的数据

视图可以视为“虚拟表”或“存储的查询”

创建视图所依据的表称为“基表”

视图的优点有:

  提供了另外一种级别的表安全性

  隐藏的数据的复杂性

  简化的用户的SQL命令

  隔离基表结构的改变

  通过重命名列,从另一个角度提供数据

create view dept_emp_order
as
select dept.deptno,dname,loc,empno,ename,job,mgr,hiredate
from emp,dept
where emp.deptno = dept.deptno  order by dept.deptno;

create view dept_sal_avg
as
select dname,avg(sal) avg_sal
from dept,emp
where dept.deptno = emp.deptno  group by dname;

视图上的DML语句

在视图上也可以使用修改数据的DML语句,如

INSERT、UPDATE和DELETE

视图上的DML语句有如下限制:

只能修改一个底层的基表

如果修改违反了基表的约束条件,则无法更新视图

如果视图包含连接操作符、DISTINCT 关键字、集合操作符、聚合函数或 GROUP BY 子句,则将无法更新视图

如果视图包含伪列或表达式,则将无法更新视图

update dept_emp
set ename = ‘TOM‘
WHERE empno = 7521;

Select  ename from  dept_emp where empno = 7521

Select  ename from emp where empno = 7521

CREATE  OR REPLACE   [FORCE] VIEW
  view_name [(alias[, alias]...)]
  AS
  select_statement
  [WITH CHECK OPTION]
  [WITH READ ONLY];

DROP VIEW   view_name; 

索引概念

索引是与表相关的一个可选结构

用以提高 SQL 语句执行的性能减少磁盘I/O

在逻辑上和物理上都独立于表的数据

Oracle 自动维护索引

索引有各种类型,除了标准索引外,还有一些特殊类型的索引:

  唯一索引

  组合索引

  反向键索引

  位图索引

 管理索引

CREATE  INDEX    索引名    ON   表名 (索引字段)
CREATE  INDEX    idx_ename  ON   emp (ename)

ALTER  INDEX   索引名  REBUILD [REVERSE][NOREVERSE] ; 
ALTER  INDEX  idx_ename  REBUILD;

DROP INDEX   索引名; 
DROP INDEX   idx_ename; 

测试索引

create table t_testseq
(
  id number,
  name varchar2(10)
);

create sequence seq_value
start with 1
increment by 1;

BEGIN
    FOR  v_temp  in  1..1000000  LOOP
    INSERT  INTO  t_testseq
     values(seq_value.nextval,’abcde’);
    END LOOP;
END;

Set  timing  on;      --sqlplus环境下设置
--常规查询
Select * from t_testseq  where  id = 28900;
--创建索引,再查询
Create  index  idx_testseq_id  on t_testseq(id);
Select  *  from  t_testseq  where  id = 28900;

总结

  同义词是现有数据库对象的别名

  序列用于生成唯一、连续的序号

  视图是基于一个或多个表的虚拟表

  索引是与表相关的一个可选结构,用于提高 SQL 语句执行的性能

  索引类型有标准索引、唯一索引、反向键索引、位图索引

原文地址:https://www.cnblogs.com/lzw123-/p/9796547.html

时间: 2024-10-11 14:22:13

Oracle数据库对象,同义词、序列、视图、索引的相关文章

Oracle数据库对象_序列

序列是一种数据库对象,用来自动产生一组唯一的序号. 序列是一种共享式的对象,多个用户可以共同使用序列中的序号.一般将序列应用于表的主键列,这样当向表中插入数据时,主键列就使用了序列中的序号,从而保证主键列的值不会重复.用这种方式可以代替在应用程序中产生主键值的方法,可以获得更可靠的主键值.注:在序列指定最大值和可循环属性后,序列中的序号是可以循环使用的. 序列的创建.修改和删除 默认情况下,用户可以在自己的模式中创建序列.如果希望在其他用户的模式中创建序列,则必须具有CREATE ANY SEQ

Oracle组函数、多表查询、集合运算、数据库对象(序列、视图、约束、索引、同义词)等

count组函数:(过滤掉空的字段) select count(address),count(*) from b_user max() avg() min(),sum() select sum(age),max(age),min(age),avg(nvl(age,0)) from b_user 1       260     70      10      37.1428571428571 group by:如果前面定义了该字段名  则groupby必须也写上该字段 select name,pw

Oracle数据库对象

Oracle数据库对象又称模式对象,它是逻辑结构的集合,其中最基本的数据库对象是表.常见的数据库对象包括同义词.序列.视图等. 1.视图 视图可以限制表中一组行为访问.隐藏了数据的复杂性.简化了用户的sql.基表定义修改隔离.通过重命名列从另一个角度提供了数据. 2.触发器(Trigger) 如果想对视图进行增删改,就可以使用触发器. 3.数据字典 oracle中分为了静态数据字典和动态数据字典. 静态数据字典: dba_*** :查看所有的用户表 all_*** :查看该用户下能看到的所有表

Oracle数据库之同义词(SYNONYM)使用

本教程用示例来说明在Oracle数据中如何创建和删除同义词(SYNONYM). 概念 同义词是指数据库对象(表.视图.序列.存储过程等数据库对象)用另一个名字来引用.比如: 建立一个同义词可以排除一个对象名字的限制. 如果你的数据库有多个用户,USER_A要访问USER_B的TABLE1,只能使用USER_B.TABLE1 建一个同义词abc指向USER_B.TABLE1,那你就可以select * from abc了,而且public的同义词会直接出现在所有用户的面前,开发不就方便多了 创建同

Oracle数据库对象查询是否被锁定及解锁

Oracle数据库对象是否被锁定查询SQL及解锁过程SQL详见下面: --查询当前用户下被锁的对象SELECT B.OBJECT_NAME, B.OWNER, C.SID,C.SERIAL#,C.OSUSER, C.MACHINE, C.TERMINAL  FROM V$LOCKED_OBJECT A, DBA_OBJECTS B, V$SESSION C WHERE A.OBJECT_ID = B.OBJECT_ID   AND A.SESSION_ID = C.SID   AND c.STA

Oracle:其他数据对象(序列,索引,同义词)

1.序列(sequence) 序列:可供多个用户来产生唯一数值的数据库对象集合 自动提供唯一数值 共享对象 主要用于主键自增 将序列值装入内存可以提高访问效率 创建: CREATE SEQUENCE sequence increment by n start with n maxvalue n | nomaxvalue minvalue n | no maxvalue cycle | nocycle cache | nocache 查询序列: 查询数据字典视图 USER_SEQUENCES 获取

oracle 序列 视图 索引 同义词

序列 Oracle 12C 之后,Oracle 之中提供的是一种手工的自动增长列控制,而这样的控制在 Oracle 之中使用序列(对象)完成. 序列的创建: CREATE SEQUENCE 序列名称 [INCREMENT BY 步长] [START WITH 开始值] [MAXVALUE 最大值 | NOMAXVALUE] [MINVALUE 最小值 | NOMINVALUE] [CYCLE | NOCYCLE] [CACHE 缓存大小 | NOCACHE] 在此数据字典之中主要包含如下列的数据

Oracle基础 12 对象 objects 同义词/序列/试图/索引

--创建同义词create public synonym employees for hr.employees;  --公共同义词需要 create public synonym 权限 表的所有用户授予公共权限  grant select on employees to public; create synonym t1_s for t1;   --私有同义词如果想在不同的环境中通过不同的别名引用同一个表时,要创建私有同义词.  编译同义词 alter synonym t1_s compile;

Oracle数据库对象_同义词

同义词是一种数据库对象,它是为一个数据库对象定义的别名,使用同义词的主要目的是为了简化SQL语句的书写. 同义词的概念和类型 利用同义词可以为用户的一个对象,或者其他用户的一个对象定义别名,从而简化命令或程序的书写,在命令或程序中可以直接使用同义词代替原来的对象. 可以为表.视图.存储程序.序列等对象建立同义词,也可以为一个同义词再建立同义词,甚至可以为一个不存在的对象建立同义词,系统仅仅在使用同义词时才验证它所代表的对象是否存在.同义词本身并不包含原对象中的数据或代码,它的作用仅仅相当于一个指