zoukankan      html  css  js  c++  java
  • 数据库中和表并列的其他对象

    序列  sequence (除了表外,这个最重要)

    概念

    用来产生主键的值(自己控制主键值,很容易重复,用sequence可以自动增长产生主键值)

    序列可以产生1.0*10^38个数

     如何创建和使用序列

    • 创建序列:

    create sequence  序列名; (和建立表一样)

    用序列放入的主键值绝对不会重复

    • 使用序列:

    序列名。nextval(使用序列值的下一个数)  

    序列名。currval(使用当前序列数,基本不会用到)

     

    一张表只能用一个序列,不能用两个序列,否则可能重复

    可以两张表用一个序列,但是这样数会比较乱

    演示:

    (1) 创建表(之前要先删表)

    create table testseq(
      id number primary key,
      name varchar2(30),
      salary number,
    );

     

    (2) 创建序列

    create sequence testseq_id;

     

      (3) 使用序列,向表中插入数据 

    insert into testseq values(
        testseq_id, nextval,
        'test'|| testseq_id.currval,
        1000*testseq_id.currval,
    );

    如何删除序列

    drop sequence  序列名  ;(和删除表一样,不存在就说删不到)
    
    drop sequence testseq_id;

     

     

    drop sequence testseq_id;

    创建序列是可以规定其属性(知道就行)

    • create sequence  序列名(表名_要使用序列的字段名)
    • minva 1     最小值
    • maxvalue 9999999   最大值   
    • increment by  1   每次增长数
    • start with  216   从哪里开始
    • nocache   有没有缓存
    • noorded   能不能排序
    • nocycle ;  能不能循环

    索引  index(不重要,了解就行,DBA才用)

    作用

    加速查询速度

    原理

    底层通过树状结构组织数据,消耗了大量的空间和时间来加速查询。消耗的是建立索引的时间,一旦索引建立完毕,查询就很快。组织数据的树状结构消耗的空间很大。

     

    索引就像书的目录,正常的查找数据像在书中一页一页查询数据量越大,索引的优势越大

    ps:set  timing on  如此设置后就会统计每条操作的时间

    假设有3亿条数据,要查询其中一条数据:

    不用索引:

      用oracle(配置为2G内存,i3处理器时)

        查询一条数据大概需要60*8=480s

    用索引:0.01s

    创建语法

    对唯一性的字段,系统会自动建立索引,叫唯一性索引

    非唯一性索引建立:在表的某个字段上创建索引

     

    正常用法:

    create index  索引名  on 表名(要创建索引的字段名);

     

    快速建表(非正常用法)

    create table  表名  as select  id,first_name  name,salary  from  查询的表名

    (即建的表的数据和查询的数据一样)

    演示:

     

    删除语法

    drop index  索引名;
    

    总结

    数据库脚本(xxx.sql)里是怎样写的?(大小写不敏感)

    (1)删序列

    drop sequence   序列名;

    (2)删表   

    drop table  表名  cascade constraint /* 解除关联*/  ; 

    (3)创建序列(设置属性)(一般之前删了几个就创建几个)

    create  sequence  序列名  属性;

    (4)创建表(字段,列级约束,表级约束)  

    create table  表名(字段以及约束);

    (5)增加数据  

    insert into  表名  values(  匹配表的要求的要增加的数据  );

    (6)提交修改  

    commit  ;

    ***(4)(5)(6)每创建一个表写一次

    (7)加外键约束

    alter table  子表名
    add  constraint 子表名_加外键的字段名_fk
    foreign  key(加外键的字段名)reference(父表名_被加外键的字段名);

    (8)输出

    Prompt table   and  sequences created  and  populated.set feedback  on

      

  • 相关阅读:
    hdu 2222 Keywords Search
    Meet and Greet
    hdu 4673
    hdu 4768
    hdu 4747 Mex
    uva 1513 Movie collection
    uva 12299 RMQ with Shifts
    uva 11732 strcmp() Anyone?
    uva 1401
    hdu 1251 统计难题
  • 原文地址:https://www.cnblogs.com/cjaaron/p/9216920.html
Copyright © 2011-2022 走看看