第13讲oracle.pptVIP

  • 2
  • 0
  • 约8.18千字
  • 约 18页
  • 2018-06-24 发布于河南
  • 举报
第13讲oracle

*   讲师 : 张晶晶 未经授权   请勿转载 一、创建约束 二、立即约束与延迟约束 三、约束的状态 四、位图索引的结构 五、创建位图索引 六、B树索引与位图索引的比较 七、通常创建索引的原则 第 十三章 数据完整性   讲师 : 张晶晶 未经授权   请勿转载 第 一 节 创建约束   约束是针对列的。在用户添加或修改列数据时,它用来对列数据用出一些限制。例如,非空约束限制了列不能为空。   ORACLE提供了如下几种约束:NOT NULL 非空、UNIQUE 唯一、PRIMARY KEY 主键、FOREIGN KEY 外键、CHECK 条件检查。我们先从非空开始: 一、NOT NULL 1、建立表时指定约束 drop table aa3; create table aa3(id number(10) constraint aa3_nn not null, name varchar2(20), company varchar2(40)); 上面的命令创建AA3表,并在ID列上创建名为AA3_NN的非空约束。 下面我们说一下和约束相关的视图,首先是DBA_CONSTRAINTS,先看它的如下几列: CONSTRAINT_NAME:约束名。 CONSTRAINT_TYPE:约束类型 TABLE_NAME :相应的表名 GENERATED :约束名是用户自定的,还是系统生成的 INDEX_NAME :索引名。有些约束必须依赖索引,此列显示约束对应索引的名字。   其中,约束类型列有以下几种值:C (check 或非空) 、P (主键) 、U (唯一) 、R (外键) 、V (带有CHECK的视图)、O (只读视图)   讲师 : 张晶晶 未经授权   请勿转载 第 一 节 创建约束 SQL select CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME, GENERATED, INDEX_NAME from dba_constraints where constraint_name=AA3_NN; CONSTRAINT_NAME C TABLE_NAME GENERATED INDEX_NAME ------------------------------ - ------------------------------ -------------- ------------------------------ AA3_NN C AA3 USER NAME INDEX_NAME为空,非空约束,不需索引。 约束类型为C,C表示索引为CHECK或非空约束。 如果想进一步观察约束在哪个列上,可以使用DBA_CONS_COLUMNS视图: CONSTRAINT_NAME :约束名 TABLE_NAME :表名 COLUMN_NAME :列名 SQL select CONSTRAINT_NAME,TABLE_NAME,COLUMN_NAME   from dba_cons_columns where constraint_name=AA3_NN; CONSTRAINT_NAME TABLE_NAME COLUMN_NAME --------------------------------------- ------------------------------ -------------------------------------- AA3_NN AA3 ID AA3_NN在AA3表的ID上。   讲师 : 张晶晶 未经授权   请勿转载 第 一 节 创建约束   我们可以将这两个视图关联起来,一次性显示更多信息: SQL select a.CONSTRAINT_NAME, a.CONSTRAINT_TYPE, a.TABLE_NAME,   b.column_name, a.GENERATED, a.INDEX_NAME   from dba_constraints a, dba_cons_columns b   where a.constraint_name=‘AA3_NN’ and a.constraint_name=b.constraint_name and   a.owner=b.owner

文档评论(0)

1亿VIP精品文档

相关文档