zoukankan      html  css  js  c++  java
  • 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 语句执行的性能

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

  • 相关阅读:
    redis 笔记04 服务器、复制
    redis 笔记03 RDB 持久化、AOF持久化、事件、客户端
    redis 笔记02 对象、数据库
    反射复习笔记02
    攻防世界 — Web进阶题(第11
    机器学习-极大似然和对数几率回归(浅入)
    redis的过期策略和内存淘汰
    Backbone.Router实践
    Spring Boot 数据访问
    Archives: 2018/12
  • 原文地址:https://www.cnblogs.com/lzw123-/p/9796547.html
Copyright © 2011-2022 走看看