设为首页 收藏本站
查看: 986|回复: 0

[经验分享] Oracle(七)约束,索引等

[复制链接]

尚未签到

发表于 2016-7-18 11:26:26 | 显示全部楼层 |阅读模式
  
  维护表的完整性
  可以用约束,触发器,应用程序(过程,函数)三种方法实现
  而约束作为首选
  约束包括not null,nuique,primary key ,foreign key ,check
  注意一个表只有一个主键,主键可以有多个列,不可为空。
  age number(3) check (age > 0),
  name varchar2(20) not null,
  mother varchar2(20) nuique,
  sex char(2) default '男'  check(sex in('男','女')),
  categoryId number reference categroy(categoryid), 
  unms check(sums between 1 and 66)
  忘记了约束,可以建表后使用alter table ,但是not null约束需要用
  modify选项,其他四种可以使用add 选项
  alter table xxx modify name not null;
  alter table xxx add constraint  useridnuique unique(userid)
  // userid 增加不重复约束
  
  删除约束 alter table 表名 drop constraint 约束名
  
  强制删除,主从关系删除  alter table 表名 dropprmary key cascade;
  
  显示约束信息
  select  constraint_name ,constraint_type,status,validated form 
  user_constraints where table_name  = '表名';
  显示约束列
  select column_name,position from user_cons_consmns
  where constaint_name = '表名' ;
  
  表级定义 列级定义
  表定义,定义了之后,在定约束
  
  create table a (id number constraint a_pk primary key,name varchar2(20))
  create table b (id number,name varchar2(20),
  constraint a_pk primary key(id))
  
  建立索引为什么加了索引,i/o 性能会提高很多。索引不是随意建的,创建的不好反而相反影响性能。
  
  
  创建索引
  单列索引
  create index nameindex on 表(name)
  联合索引(复合索引)
  create index nameindex on 表(字段1,字段2)  
  -- 注意顺序,一下帅选很多的字段放到后面,因为sql语句的扫描是从后往前扫描的 
  
  
  使用原则
  1 大表上建
  2 where 子句经常用到
  3 索引的层次不要超过4层
  
  索引的缺点:
  先天不足:
  1:创建索引,系统要占用大约为表的1.2倍的硬盘盒内存空间来
  保存空间。
  2 更新数据的时候,系统要占额外的时间来同时对索引更新。
  
  什么时候不适合用索引
  1 很少或者从不引用的字段
  2 男或女
  
  管理索引
  按照数据存储方式,可以分为
  B* 树,反向索引,位图索引
  
  按照索引的个数分类,可以分为单列索引,复合索引;
  按照索引列值的唯一性,可以分为唯一索引和非唯一索引;
  此外还有函数索引,全局索引,分区索引。
  
  在不同的情况我们会再不同的列上建立索引,可能是不同种类的索引
  ,如B*树索引建立在重复值很少的列上,而位图索引则建立在重复值很多,不同值相对固定的列上。
  
  显示表的所有索引,通过dba_indexs,和user_indexs,可以显示索引信息
  
  select index_name,index_type from user_indexs where table_name = '表名';
  通过查询数据字典视图user_ind_columns 可以显示索引对应的列的信息
  
  select table_name ,column_name from user_ind_columns where 
  index_name = 'IND_ENAME'
  
  
  
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-245846-1-1.html 上篇帖子: ORACLE游标与异常处理 下篇帖子: oracle意外drop表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表