zoukankan      html  css  js  c++  java
  • 从零开始学Oracle—内建对象(五)

    继续上一篇

                                                   1.   序列
    查询当前用户下的序列:select * from user_sequences
    定义:用来生成唯一、连续的整数的数据库对象,序列通常用来自动生成主键或唯一键的值、可升、可降序排列.
    语法:    Create  sequence 序列名称   //从1开始 每次自动增加1 没有最大值
                 [star with 值]  指定要生成的第一个序列号,对于升序默认值为最小值、反之...
                 [increment  by 值]   间隔数
                 [maxvalue  值|nomaxvalue]  序列最大值,如果指定为nomaxvalue,则升序最大值为10的27次方,降序-1.
                 [minvalue    值|nominvalue]  序列最小值,-----------------------升序为1,降序为10的负26次方
                 [cycle|nocycle]   cycle指序列到达最大或最小时,将从头开始生成值  nocycle值不在生成
                 [cache  值|nocache]  预先分配一组序列号,将其保存在内存中. 默认缓存20个序列

    访问序列方法:  currval 和nextval   --当前序列 select 序列名.currval from dual
    更改序列:Alter sequence 序列名
    删除序列:drop sequence 序列名
    注意-------------序列使用时需要先用nextval输出完以后再来使用
    使用:
      1.和表关联作为表的字段的值
         a) create table student(
              xh number(4) primary key, --学号
              xm varchar2(20) not null --姓名
            );

            要求:学号字段 从1000开始每次增加4 最大值9999
             --建立序列
               create sequence xh_seq
                      start with 1000 --从1000开始
                      increment by 4  --每次增加4
                      maxvalue 9999   --最大值 9999
                      ;
             --使用SQL语句关联
             insert into student values
                 (xh_seq.nextval,'Mike');
             insert into student values
                 (xh_seq.nextval,'John');
             insert into student values
                 (xh_seq.nextval,'Rose');
         
          --特点:能产生唯一的值,但是不能保证值在表中的连续性
     
       b) create table teacher(
               teacherxh varchar2(10) primary key, 
               teachername varchar2(20)
              );
         要求:教师的编号的格式是TH00001
                             TH00002
                              ....
          
       --建立序列
            create sequence teacher_seq
                  maxvalue 99999;
       --
         insert into teacher values ('TH'||
           ltrim(to_char(teacher_seq.nextval,'00000')),
           '张三');
           insert into teacher values ('TH'||
           ltrim(to_char(teacher_seq.nextval,'00000')),
           '李');
          insert into teacher values ('TH'||
           ltrim(to_char(teacher_seq.nextval,'00000')),
           '王');
                                                                  2.视图
    查看当前用户下的视图:select view_name from user_views;
    作用:隐藏数据,增加系统的安全性
    语法:Create [or replace] [Force|noForce] veiw 视图名 [(别名1,别名2...)]
             AS 子查询
             [with check option [constraint 约束名]]
             [with read only]  视图是只读的
     其中:or replace 表示替代已经存在的视图
             force 表示不管基表是否存在,创建视图
              noforce 表示只有基表存在时,才创建视图.
             别名是为子查询中选中的列新定义的名字,替代查询表中原有的列名。
             with check option 对视图操作时必须满足子查询的约束条件。后面的约束名是该约束条件的名字
             删除视图者需要是视图的建立者或者拥有DROP ANY VIEW权限。视图的删除不影响基表,不会丢失数据
    对视图操作需满足以下条件:
              <1>建立视图的select语句必须是简单的select语句
                   简单:不能是多表的查询
                        不能有分组函数
               <2>建立视图的时候不能带with readonly关键字
    例:

    Code

                                                                    3.同义词
    查看用户创建的同义词:select * from user_synonum;
    定义:数据库对象的一个别名
    用途:1.简化SQL
            2.隐藏对象名称和所有者
            3.为分布式数据库的远程对象提供了位置透明度
            4.提供对象的公共访问
    注意:使用同义词前需要确保用户得到访问同义词的权限
    同义词分为:
     1.私有同义词  --只能被当前用户模式访问  要在自身模式下创建须 Create synonum 权限
     2.共有同义词  --须Create any synonym权限
    语法: Create [or replace] [public] synonym 同义词名称 for 要创建同义词对象的名称
                                                                     4.索引
    作用:加快查询  索引一定是建立在表上的.
    语法:Create Index 索引名 on 表名(列名)
    创建唯一索引: Create unique Index 索引名 on 表名(列名)
    创建位图索引: Create bitmap Index 索引名 on 表名(列名)
    数据的不同值对于记录的行数来说 是个很小的数  这种字段适合使用位图索引 它比普通索引效率高
    不能用索引的条件:
    <1>规则1:索引的字段不能参与运算
    <2>规则2:索引的字段上不能使用函数 
                                                                  5.簇
    定义:用于多表联合查询,提高数据查询效率
    1.簇的创建必须在创建表结构时指定
    2.如果使用簇,则两个表必须要有主外键关系
    簇的使用步骤:
    1.创建簇    Create cluster 簇名称(字段名 数据类型);
    2.创建主键表使用簇 
    Create table depa (
        deptno number(2) primary key,
        dname varchar2(20)
     ) cluster 簇名(deptno);
    3.创建外键表使用簇
    Create table empa(
       empno number(4) primary key,
       ename varchar2(20)
       ) cluster 簇名(empno)
    4.在簇上建立索引
    Create Index  索引名 on cluster 簇名
     

  • 相关阅读:
    Oracle基础知识整理
    linux下yum安装redis以及使用
    mybatis 学习四 源码分析 mybatis如何执行的一条sql
    mybatis 学习三 mapper xml 配置信息
    mybatis 学习二 conf xml 配置信息
    mybatis 学习一 总体概述
    oracle sql 语句 示例
    jdbc 新认识
    eclipse tomcat 无法加载导入的web项目,There are no resources that can be added or removed from the server. .
    一些常用算法(持续更新)
  • 原文地址:https://www.cnblogs.com/sunjie9606/p/2167409.html
Copyright © 2011-2022 走看看