小编给大家分享一下oracle中数据完整性的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

1.数据的完整性简介

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

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

实现的。以下内容讲通过约束实现数据完整性。

举例两个表:

学生(学号,姓名,系编号)

系(系编号,系名称)

员工(编号,姓名,出生日期,工作日期)

那么:

学号是主键列,其值不能错误,如不能负值,这就是实体完整性;

系编号是外键,学生表的系编号参照系表,也就是说学生表的系编号的值必须在系表的系编号的值范围内【或者为空】,这就是参照完整性;

员工表的出生日期一定需要小宇工作日期,这就是用户自定义完整性。

2.维护数据的完整性,有notnull、unique、check、primarykey、foreignkey五种。

notnull例如学生的姓名;unique例如学生的学号;primarykey主键、foreignkey外键、check可以按照用户要求,进行自动检查。

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

primarykey不可以重复,也不能为空。

一个表只能一个primarykey,却可以多个unique。

notnull只能在列内定义,其他4种约束可以在列定义结束后,在表内定义。

notnull示例(这里的notnull约束由系统自动起名):

createtableyg2(bhnumber(4)notnull,xmvarchar2(8));

check示例:

createtableyg3(bhnumber(4)notnullcheck(bh>0andbh<10000),xmvarchar2(8));

unique示例:

createtableyg4(部门号number(4)notnull,部门内号number(4),xmvarchar2(8),unique(部门号,部门内号));

default的使用

createtablegz_新员工(bhnumber(4),xmvarchar2(8),gznumber(10)default1000);//适用于没有向列显式的指定数值的情况。

primarykey示例(此列不允许为空,而且ORACLE会自动为主键列创建索引,这里的primarykey约束由用户显式起名):

createtablestudent(xhnumber(6)constraintcode_pkprimarykey,xmvarchar2(20));

foreignkey示例(实现两个表之间参照与被参照的关系,外键只能取主键已经有的值,这里的foreignkey由系统自动起名):

createtableaddress(xhnumber(8),zzvarchar2(50),foreignkey(xh)referencesstudent(xh));

试验primarykey和foreignkey约束:

insertintostudentvalues(1,'张一');

insertintoaddressvalues(1,'郑州');

insertintoaddressvalues(2,'郑州');

(3)用户的约束在user_constraints表、和user_cons_columns表中

select*fromuser_constraints;

实践练习题目:

问题:

建立2个表,一个是StudentInformatino(学号sno,姓名

sname,年龄sage,性别smale,系编号

deptNo),一个是department(系编号deptno,

系名称deptname)。

要求:

每个表有主键。

StudentInformation表建立外键。

学生的姓名不能为空。

学生的年龄要在18到50之间。

学生的性别必须是男女之一,默认是男。

StudentInformation表的deptno列,要参照department表的

deptno列。

3.2给已有的表添加约束:

除了添加notnull需要使用modify命令,其他都是类似altertabletablenameaddCONSTRAINTS的方式。

上面例子,允许stuInfo中的姓名可以为空:altertablestuinfomodifysnamenull;

允许stuInfo中的姓名不能重复:altertablestuinfoaddconstraintssname_uniqueunique(sname);

要求department的系名称列的内容,必须大于4个字符长度:altertable

departmentaddconstraintsdeptName_checkcheck(length(deptName)>4);

3.3删除约束:

altertable表名dropconstraint约束名;

altertabledepartmentdropconstraintdeptName_check;--删除刚才建立的department表上的deptName_check约束

删除主键语句:altertable表名dropprimarykey;

如果出错:ORA-02273:此唯一/主键已被某些外键引用,可以:altertabledepartmentdropprimarykeycascade;

如果删除一个主键被引用的表,可以:droptable表名cascadeconstraints;

看完了这篇文章,相信你对“oracle中数据完整性的示例分析”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!