`
1enny
  • 浏览: 70596 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

完整性约束

 
阅读更多
oracle204


完整性约束
实体完整性:假如学生表的id不存在负值的情况
参照完整性:就是假如该行参照的另外一张表中记录,那么行中的某个列必须在另外表中能找到对应记录
用户自定义完整性:假如行中有出生日期和工作日期,那么工作日期肯定大于出生日期

1.数据的完整性简介

就是正确性、准确性,包含三种:实体完整性、参照完整性、

用户自定义完整性。Oracle中主要通过约束、触发器、过程函数

实现的。

2.维护数据的完整性,有not nulluniquecheckprimary keyforeign key五种。

not null例如学生的姓名;unique例如学生的学号;primary key主键、foreign key外键、check可以按照用户要求,进行自动检查。

unique不可以重复,但是可以为空。

primary key不可以重复,也不能为空。

一个表只能一个primary key,却可以多个unique

not null只能在列内定义,其他4种约束可以在列定义结束

后,在表内定义。


createtabletest_constraints2
(idnumber(6,2)notnullcheck(id>0)constraintspk_test_constraintsprimarykey,
namevarchar2(20)default'test_constaints',
typevarchar2(20)unique(id,type));
SQL> select uc.OWNER,uc.CONSTRAINT_NAME,uc.CONSTRAINT_TYPE,uc.TABLE_NAME,uc.R_CONSTRAINT_NAME,uc.INDEX_NAME fromuser_constraintsuc where uc.TABLE_NAME=upper('test_constraints');
OWNER CONSTRAINT_NAME CONSTRAINT_TYPE TABLE_NAME R_CONSTRAINT_NAME INDEX_NAME
------------------------------------------------------------ ------------------------------ --------------- ------------------------------ ------------------------------ ------------------------------
HR SYS_C0011295 C//check/notnull TEST_CONSTRAINTS
HR SYS_C0011296 C //check/notnull TEST_CONSTRAINTS
HR PK_TEST_CONSTRAINTS P //主键约束 TEST_CONSTRAINTSPK_TEST_CONSTRAINTS//主键索引
HR SYS_C0011298 U TEST_CONSTRAINTSSYS_C0011298//唯一索引,不是所有的约束都会建立索引额

SQL> select ucc.OWNER,ucc.CONSTRAINT_NAME,ucc.TABLE_NAME,ucc.COLUMN_NAME,ucc.POSITION from user_cons_columns ucc where ucc.TABLE_NAME=upper('test_constraints');
OWNER CONSTRAINT_NAME TABLE_NAME COLUMN_NAME POSITION
------------------------------ ------------------------------ ------------------------------ -------------------------------------------------------------------------------- ----------
HR SYS_C0011295 TEST_CONSTRAINTS ID
HR SYS_C0011296 TEST_CONSTRAINTS ID
HR PK_TEST_CONSTRAINTS TEST_CONSTRAINTS ID 1
HR SYS_C0011298 TEST_CONSTRAINTS ID 1
HR SYS_C0011298 TEST_CONSTRAINTS TYPE 2

SQL>user_constraints约束——表
SQL>user_cons_columns约束——列

SQL> alter table test_foreign_key add constraints pk_test_foreign_key primary key(id);
Table altered

SQL> alter table test_constraints add constraints fk_test_con_for foreign key(id) references test_foreign_key(id);
Table altered

注意:建立外键时需要注意,被关联外键列必须是唯一或者是主键列
SQL> alter table test_constraints add constraints for_key foreign key(id) references test_foreign_key(RELATIONCOL);
alter table test_constraints add constraints for_key foreign key(id) references test_foreign_key(RELATIONCOL)
ORA-02270: 此列列表的唯一关键字或主键不匹配

SQL> alter table TEST_FOREIGN_KEY add constraints TEST_FOR ;
alter table TEST_FOREIGN_KEY add constraints TEST_FOR
ORA-00904: : 标识符无效

SQL> alter table TEST_FOREIGN_KEY add constraints TEST_FOR unique(RELATIONCOL) ;
Table altered

SQL> alter table test_constraints add constraints for_key foreign key(id) references test_foreign_key(RELATIONCOL);
Table altered

SQL>




















分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics