zoukankan      html  css  js  c++  java
  • 表的管理

    2010年8月19日 17:50:43

    关于表的约束

    1、主键

    主键主要是限制输入值的唯一性

    alter table nn add constraint pk_nn primary key(n1);

    --nn 表名

    --n1 表nn的其中一个字段

    2、外键

    外键是将表的其中一个字段与另一表的某一字段相关联

    alter  table mm add constraint fk_mm foreign key(n1) references nn(n1); --表示mm表的n1字段参照nn表的n1字段

    3、check

    用于限制字段的取值范围

    alter  table nn add constraint n1 check(n1='男' or n1='女');--表示字段n1取值只能是男或女

    4、查看表的约束

    select constraint_name,constraint_type from user_constraints where table_name='g3e_attribute'  --查看表g3e_attribute的约束名与类型

     

    关于索引

     1、传统索引

    CREATE INDEX mycolumn_index ON mytable (myclumn);
    --mycolumn_index表示索引名(你可以给一个索引起任何名字,但你应该在索引名中包含所索引的字段名,这对你将来弄清楚建立该索引的意图是有帮助的)

    --mytable创建索引的表

    -- myclumn要创建索引的字段

    2、位图索引

    针对唯一值很少的,每一个唯一值对应的记录又很多采用传统索引作用就不大了,因此引入了位图索引

    create  bitmap index mycolumn_index on mytable (myclumn);

    3、唯一索引

    create unique index mycolumn_indexon mytable (myclumn);

    4、聚集索引

        聚集索引对于那些经常要搜索范围值的列特别有效。使用聚集索引找到包含第一个值的行后,便可以确保包含后续索引值的行在物理相邻。例如,如果应用程序执行 的一个查询经常检索某一日期范围内的记录,则使用聚集索引可以迅速找到包含开始日期的行,然后检索表中所有相邻的行,直到到达结束日期。这样有助于提高此 类查询的性能。同样,如果对从表中检索的数据进行排序时经常要用到某一列,则可以将该表在该列上聚集(物理排序),避免每次查询该列时都进行排序,从而节 省成本。 

    CREATE CLUSTERED INDEX mycolumn_clust_index ON mytable(mycolumn)  
        一个表中只能有一个聚簇索引
       *如果表中有重复的记录,当你试图用这个语句建立索引时,会出现错误。但是有重复记录的表也可以建立索引;你只要   使用关键字ALLOW_DUP_ROW把这一点告诉SQL Sever即可:
    CREATE CLUSTERED INDEX mycolumn_cindex ON mytable(mycolumn) WITH ALLOW_DUP_ROW
    5、非聚集索引

    非聚集索引与课本中的索引类似。数据存储在一个地方,索引存储在另一个地方,索引带有指针指向数据的存储位置。索引中的项目按索引键值的顺序存储,而表中的信息按另一种顺序存储

    CREATE INDEX mycolumn_index ON mytable (myclumn)

    6、多个字段建索引
    CREATE INDEX name_index ON username(firstname,lastname)
    唯一索引是指该字段不能有重复的值,而不是只能建立这一个索引。 

    7、删除索引

     DROP INDEX mytable.mycolumn_index

    8、查看索引

    --查看索引大小 

     select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name=upper('&index_name');

    --查看索引个数和类别
    select index_name,index_type,table_name from user_indexes order by table_name;  
    --查看索引被索引的字段
    select * from user_ind_columns where index_name=upper('&index_name'); 

  • 相关阅读:
    最小花费
    LOJ10090
    LOJ2436
    loj10087
    LOJ2632
    LOJ10021 Addition Chains
    LOJ10019生日蛋糕
    loj10018数的划分
    LOJ10015扩散
    loj10014数列分段二
  • 原文地址:https://www.cnblogs.com/lanzi/p/1803814.html
Copyright © 2011-2022 走看看