• Oracle 其他数据库对象


      其他数据库对象:
        序列(SEQUENCE)
        索引(INDEX)
        视图(VIEW)

      1.序列(SEQUENCE)
        对应的数据库字典:user_sequences
        作用:用来产生唯一性值的数据库特殊对象

      创建序列语法:
      create sequence 序列名
      start with n           表示从几开始,默认值是1
      ncrement by n          每计数一次增加多少,默认是1
      maxvalue n         序列最高峰值n
      minvalue n          序列最低峰值n
      cache n            提供n个预分配的序列,保存在内存中
      cycle | nocycle         是否循环
      oredr | noorder        有序还是无序序列

      例如:
        给员工创建一个序列
      create sequence tbl_emp_id start with 4;

      如何使用序列?
      nextval:取序列的下一个值(tbl_emp_id.nextval)
      currval:取序列的当的前值(tbl_emp_id.currval)

      在插入数据时使用:
      insert into tbl_emp values(tbl_emp_id.nextval,....)

      删除序列:
      drop sequence 序列名;

      索引(INDEX)
      对应的数据词典user_indexes

      它是一个比较重要的数据库对象,作用是可以有效的提高数据库的查询效率(数据库性能优化)

      创建索引的两种方式:
      1自动创建
      当表中的列添加了主键约束或者唯一性约束时,则系统会自动为此列创建唯一性的索引,索引名就是约束名

      2手动创建
      语法:
      create index 索引名 on 表名(列名...);


      create index 索引名 on emp(name)

      select salary from emp where name = 'mark';

      select salary from emp wehre rowid = (select rowid from emp where name= 'mark');

       注意:
        1.索引有自己独立的储存空间和命名空间
        2.创建索引也会相对牺牲一些数据库性能

    索引的原理:
    1.默认情况下,索引是采用BTree(二叉树)的数据结构

    2.伪列(rowid),存放的数据行记录的正真“物理地址”。

    --根据某物理地址查询某一行记录
    //先获取记录的rowid
    select rowid from s_emp where first_name="Carmen";

    //根据行记录rowid查找相应的记录
    select* from s_emp where rowid=(select rowid from s_emp where first_name="Carmen");

    3.索引建立的原理:
    把创建索引的列值与rowid合成一个键值树,这个键值对就是索引,然后把它们存放到指定的数据结构中(二叉树,位图)中,并且是独立的索引空间

    4.索引查询的原理:
    当我们的查询语句中where 条件的列建立了索引,则查询分为一下2步:
    a.先查索引,在句列中的值直接找到rowid
    b.根据第一步得到的rowid直接定位到相应的行记录结束查询

    5.建立索引的策略:
    a.主键和唯一性列 合适
    b.不经常发生改变的列 合适
    c.满足以上两个条件,经常做查询的列 合适
    d.重复值太多的列 不合适
    e.null值太多的列 不合适

    6.删除索引

    drop index 索引名;
    -----------------------------------------------------


    视图(VIEW)
    对应的数据字典:user_view
    他是一个数据库对象,它是表格的一个“窗口”,用来保存查询语句的对象,视图是依附于表的,并且与表格共享储存空间。

    定义:本质就是一条合法的查询语句


    作用:
    1.配合权限,根据业务来做分级管理
    2.减少复杂性,增加数据的安全性

    创建视图的语法:
    create view 视图名 as 子句;
    with read only ;视图只读


    例如:
    --以只读方式创建s_emp表中id,salary两列的视图
    create view view_name as select id,salary from s_emp with read only;
    注意:操作视图必须拥有一定的权限,对只读视图不能进行DML操作

    删除视图
    drop view 视图名;

    视图分类:
    关系视图,内嵌视图,对象视图,物化视图
    -----------------------------
    补充:查询当前用户可执行什么操作
    select * from session privs;

    --查询某个权限可执行的所有操作
    select* from DBA_SYS_PRIVS where grantee='DBA';(需要DBA)

    --查询当前用户被赋予的系统角色
    select *from SESSIONS_ROLES order by role;

    --授予权限的两种方式
    1.grant createany view to 用户名
    2.grant connect,resource,dba to 用户名

  • 相关阅读:
    使用一行Python代码从图像读取文本
    FastAI 简介
    OpenCV-Python 轮廓:更多属性 | 二十四
    Numpy和OpenCV中的图像几何变换
    从云计算到边缘计算
    OpenCV-Python 轮廓属性 | 二十三
    c# GetType()和typeof()的区别
    C# 子类父类方法同名,三种处理方式
    C# string 与 String的区别
    decimal
  • 原文地址:https://www.cnblogs.com/ty-v/p/7880529.html
Copyright © 2020-2023  润新知