数据库对象简介

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

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

其他数据库对象包括:

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

  简化SQL语句

  隐藏对象的名称和所有者

  提供对对象的公共访问

同义词共有两种类型:

  1. CREATE USER test IDENTIFIED BY test;
  2. GRANT CONNECT , CREATE SYNONYM TO test;
  3. GRANT SELECT ON SCOTT.EMP TO test;
  4. GRANT DELETE ON SCOTT.EMP TO test;
  5. GRANT UPDATE ON SCOTT.EMP TO test;

  1. CREATE SYNONYM staff FOR SCOTT.emp;

  1. CREATE PUBLIC SYNONYM pub_emp FOR SCOTT.emp;

  1. CREATE OR REPLACE PUBLIC SYNONYM pub_emp FOR SCOTT.emp;

  1. DROP SYNONYM staff;
  2. DROP PUBLIC SYNONYM pub_emp;

序列

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

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

使用CREATE SEQUENCE语句创建序列

依次为:

序列案例

  1. create table t_testseq
  2. (
  3. id number primary key,
  4. name varchar2(10) NOT NULL
  5. );

  1. create sequence seq_value
  2. Start with 1
  3. Increment by 1;

访问序列

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

NEXTVAL 返回序列的下一个值

CURRVAL 返回序列的当前值

  1. INSERT INTO t_testseq
  2. VALUES (seq_value.NEXTVAL, 'tom')
  3. INSERT INTO t_testseq
  4. VALUES (seq_value.NEXTVAL, 'jime');

  1. SELECT seq_value.CURRVAL FROM dual;

更改和删除序列

  1. ALTER SEQUENCE SEQ_VALUE MAXVALUE 5000 CYCLE;

  1. DROP SEQUENCE SEQ_VALUE;

 视图

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

  1. --查看当前用户的系统权限
  2. select * from user_sys_privs;
  3. --查看当前用户角色权限
  4. select * from user_role_privs;
  5. --查看某个角色权限
  6. select * from role_sys_privs where role =‘RESOURCE’;
  7.  
  8. --创建视图
  9. create view dept_emp
  10. as
  11. select dept.deptno,dname,loc,empno,ename,job,mgr,hiredate
  12. from emp,dept
  13. where emp.deptno = dept.deptno;

  1. select * from dept_emp where dname= SALES ‘;

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

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

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

视图的优点有:

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

  隐藏的数据的复杂性

  简化的用户的SQL命令

  隔离基表结构的改变

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

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

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

视图上的DML语句

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

INSERT、UPDATE和DELETE

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

只能修改一个底层的基表

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

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

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

  1. update dept_emp
  2. set ename = 'TOM'
  3. WHERE empno = 7521;

  1. Select ename from dept_emp where empno = 7521

  1. Select ename from emp where empno = 7521

  1. CREATE OR REPLACE [FORCE] VIEW
  2. view_name [(alias[, alias]...)]
  3. AS
  4. select_statement
  5. [WITH CHECK OPTION]
  6. [WITH READ ONLY];

  1. DROP VIEW view_name;

索引概念

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

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

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

Oracle 自动维护索引

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

  唯一索引

  组合索引

  反向键索引

  位图索引

 管理索引

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

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

  1. DROP INDEX 索引名;
  1. DROP INDEX idx_ename;

测试索引

  1. create table t_testseq
  2. (
  3. id number,
  4. name varchar2(10)
  5. );

  1. create sequence seq_value
  2. start with 1
  3. increment by 1;

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

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

总结

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

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

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

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

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

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

  1. Oracle数据库对象(表空间/同义词/序列/视图/索引)

    数据库对象 Oracle数据库对象: 数据库对象是数据库的组成部分,常常用 CREATE 命令进行创建,可以使用 ALTER 命令修改,用 DROP 执行删除操作. 种类: (1)表空间:所有的数据对 ...

  2. Oracle 数据库对象

    数据库对象是数据库的组成部分,常常用CREATE命令进行创建,可以使用ALTER命令修改,用DROP执行删除操作.前面已经接触过的数据库对象有表.用户等. 今天将学习更多的Oracle数据库对象: 同 ...

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

    count组函数:(过滤掉空的字段) select count(address),count(*) from b_user max() avg() min(),sum() select sum(age ...

  4. oracle 序列 视图 索引 同义词

    序列 Oracle 12C 之后,Oracle 之中提供的是一种手工的自动增长列控制,而这样的控制在 Oracle 之中使用序列(对象)完成. 序列的创建: CREATE SEQUENCE 序列名称 ...

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

    --创建同义词create public synonym employees for hr.employees;  --公共同义词需要 create public synonym 权限 表的所有用户授 ...

  6. Oracle 学习笔记 12 -- 序列、索引、同义词

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/Topyuluo/article/details/24232449 数据库的对象包含:表.视图.序列. ...

  7. Oracle系列十四 序列、索引和同义词

    序列 : 提供有规律的数值.索引  : 提高查询的效率同义词  :给对象起别名 序列: 可供多个用户用来产生唯一数值的数据库对象 自动提供唯一的数值 共享对象 主要用于提供主键值 将序列值装入内存可以 ...

  8. Oracle数据库对象_同义词

    同义词是一种数据库对象,它是为一个数据库对象定义的别名,使用同义词的主要目的是为了简化SQL语句的书写. 同义词的概念和类型 利用同义词可以为用户的一个对象,或者其他用户的一个对象定义别名,从而简化命 ...

  9. 【整理】SQLServer查询各种数据库对象(表,索引,视图,图表,存储过程等)

    首先明确数据库对象的定义:数据库对象定义数据库内容的结构.它们包含在数据库项目中,数据库项目还可以包含数据生成计划和脚本. 常见的数据库对象包括:表,索引,视图,图表,缺省值,规则,触发器,存储过程, ...

随机推荐

  1. JavaScript中有var和没var的区别

    Js中的变量声明的作用域是以函数为单位,所以我们经常见到避免全局变量污染的方法是 (function(){ // ... })(); 在函数内部,有var和没var声明的变量是不一样的.有var声明的 ...

  2. The Java serialization algorithm revealed---reference

    Serialization is the process of saving an object's state to a sequence of bytes; deserialization is ...

  3. VRRP协议介绍--转

    http://www.cnblogs.com/jony413/articles/2697404.html VRRP协议介绍 参考资料: RFC 3768 1. 前言 VRRP(Virtual Rout ...

  4. IE6,IE7,IE8 css bug搜集及浏览器兼容性问题解决方法汇总

    断断续续的在开发过程中收集了好多的bug以及其解决的办法,都在这个文章里面记录下来了!希望以后解决类似问题的时候能够快速解决,也希望大家能在留言里面跟进自己发现的ie6 7 8bug和解决办法! 1: ...

  5. 不使用XMLHttpRequest实现异步加载:Iframe和script

    运用Iframe和script可以实现简单的异步加载: 调用页面如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitiona ...

  6. jQuery autocomplete 应用

    1. 引入css和js <link rel="stylesheet" href="{{ url_for('static', filename='jquery.aut ...

  7. Redis的Publish/Subscribe

    Publish/Subscribe 从字面上理解就是发布(Publish)与订阅(Subscribe),在Redis中,你可以设定对某一个key值进行消息发布及消息订阅,当一个key值上进行了消息发布 ...

  8. .NET开源工作流RoadFlow-表单设计-复选按钮组

    复选按钮组的设置与单选按钮组的设置相同,只是表现形式为:<input type="checkbox"/>

  9. Java开发高性能网站需要关注的事

    转自:http://www.javabloger.com/java-development-concern-those-things/ 近期各家IT媒体举办的业内技术大会让很多网站都在披露自己的技术内 ...

  10. FlexPaper实现文档在线浏览(附源码)

    园子里也有关于FlexPaper的文章,但都不怎么详细. 没有较全的参数说明.就连官方网站都没有.没法,最后只得将swf文件反编译后查看了源码才将里面的参数全部弄出来. 好了,废话不多说,开始正题. ...