zoukankan      html  css  js  c++  java
  • 数据库 Oracle数据库对象二

    视图
    --视图是对表逻辑抽象
    --视图的好处:简化查询
    --视图是一种虚表
    --视图建立在已有表的基础上,视图赖以建立的这些吧称为基表。
    --向视图提供数据内容的语句为select语句,可以将视图理解为存储起来的select语句
    --视图向用户提供基表数据的另一种表现形式
    --基本语法:
    create view 视图名称
    as
    select 子句
    
    eg:
     create view v1
     as
     (
     select empno,ename,job,sal,sal*12+nvl(comm,0) yearsal
     from emp
     where deptno=30
     )
    --创建视图可能出现权限不足
    --赋值权限
    1.登录管理员-- sqlplus /nolog
    2.连接系统表-- connect /as sysdba
    3.授权某用户创建视图权限 -- grant create view to scott;
    --视图不能修改只能替换
    --替换语法
     create or replace view v1
     as
     (
     select empno,ename,job,sal,sal*12+nvl(comm,0) yearsal
     from emp
     where deptno=20
     )
    --视图一般只用来查询数据,不用于修改数据
    --视图选项
        with read only--只读选项(不能插入数据)
        with check option--检查select子句的where条件是否满足
    序列
    --为多个表提供自增字段,一般用来生成主键
    --序列一般放在内存中,速度快
    序列的属性一nextval返回序列中下一个有效的值,任何用户都可以引用它
    序列的属性--currval存放序列的当前值
    --创建序列
    create sequence 序列名
    [increment by n]--每次自增n,默认值是1
    [start with n]--从n开始,默认值是1
    [{maxvalue n | nominvalue}]--最大值(默认没有最大值)
    [{minvalue n | nominvalue}]--最小值(默认没有最小值)
    [{cycle | nocycle}]--是否循环,默认不循环
    [{cache n | nocache}]--是否放置到内存中
    检索序列
    首次使用序列必须先使用序列的nextval属性
    ed:
    create sequence myseq;--创建序列
    select myseq.nextval from dual;--必须先访问nextval
    select myseq.currval from dual;--再访问currval
    --从序列中取nextval的值,产生tableA表的主键
    insert into tableA values(myseq.nextval,'aa'); 
    --删除序列
    drop sequence myseq;
    --多个表使用同一序列可能会造成主键不连续问题(裂缝问题)
    索引
    1.表数据放在表空间,表的数据和该表的索引是单独存储的,删除索引不影响表的数据
    2.索引会提高查询速度,本质上是通过指针加快oracle服务器的查询速度
    --创建索引
    --自动创建索引:在定义primary key和unique约束后系统自动在相应列上创建唯一性索引
    --手动创建索引:用户可以在其他列上创建非唯一索引,以加速查询
    语法:
    create index 索引名 on 表名 (colnum1,colnum2,...)
    eg:create index myindex on emp (deptno,job);
    --删除索引
    drop index 索引名
    什么时候创建索引
    1.列中数据值分布范围很广
    2.列经常在where子句或者连接条件中出现
    3.表经常被访问,且数据量很大,访问的数据大概占数据总量的2%-4%(只经常访问表中的小部分数据)
    什么时候不创建索引
    1.表很小
    2.列不经常在where子句或者连接条件中出现
    3.查询数据大于2%-4%
    4.表经常更新
    同义词
    --相当于给表起一个别名
    --创建同义词
    create synonym emptemp for emp;
    --删除同义词
    drop synonym emptemp;
  • 相关阅读:
    如何使用Arrays工具类操作数组
    Java 内存模型详解
    HashSet源码分析:JDK源码系列
    在ASP.NET Core中用HttpClient(六)——ASP.NET Core中使用HttpClientFactory
    在ASP.NET Core中用HttpClient(五)——通过CancellationToken取消HTTP请求
    在ASP.NET Core中用HttpClient(四)——提高性能和优化内存
    ASP.NET Core与Redis搭建一个简易分布式缓存
    在ASP.NET Core中用HttpClient(三)——发送HTTP PATCH请求
    在ASP.NET Core中用HttpClient(二)——发送POST, PUT和DELETE请求
    在ASP.NET Core中用HttpClient(一)——获取数据和内容
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/6270043.html
Copyright © 2011-2022 走看看