ORACLE下数据完整性约束

为了保证数据的完整性和结构的正确性,oracle也有很多约束条件。

1.数据完整性

为了保证数据的完整性,一般对数据列(字段)进行如下约束,主键约束(PRIMARY KEY)、唯一键约束(UNIQUE)、非空约束(NOT NULL)、默认值(DEFAULT)、检查约束(CHECK)、外键约束(FOREIGN KEY)。

1.1 实体完整性约束

要求每一个表中的主键字段都不能为空或者重复,一般实现的方法是添加唯一约束和主键约束。这里选择主键一般的原则是尽量选择单键、主键必须保证唯一性、非空性、一般选择没有意义,用户不关心的字段。

表创建后,添加约束的语句如下:

-- 使用constraint创建指定名称的约束
constraint pk_id primary key(id);

1.2域完整性约束

要求列的值域的完整性,如数据类型、格式和范围、是否允许为空等。一般实现的方法是限制数据类型,添加外键约束、默认值约束、非空约束。

-- 限制sex的取值
-- 创建表时添加约束
CREATE TABLE test(
   id int,
   sex char(1) constraint test_sex check (sex in ('0','1'))
);
--创建表后添加约束
alter table test add constraint test_sex check(sex in ('0','1'));

1.3引用完整性约束

当处理数据时,通过参照另一个相关联的表中的数据,来检查对表的数据的操作是否正确。一般实现方法是添加外键约束。

alter table test
add constraint FK_TEST_ID foregin key (TID) references 主表 (TID)

2.表之间的关系
oracle中表与表之间的关系有一对一、一对多、多对一。

3.数据表的设计范式

数据表的设计范式是没有数据库之分的,每个数据库都是一样的,最基本的三个范式是:确保每列保持原子性;确保表中的每条数据都和主键相关;确保每列都和主键列直接相关,而不是间接相关。

4.修改约束的SQL语法

-- 建表时添加约束
not null约束必须写在行上
DEFAULT 约束必须写在行上
constraint 约束名 primary key(列)
constraint 约束名 unique(列)
constraint 约束名 check(sex in('男','女'))
constraint 约束名 foreign key(列) reference 其他表(列)
-- 外部添加约束
ALTER TABLE 表 ADD CONSTRAINT 约束名 PRIMARY KEY (列)
ALTER TABLE 表 ALTER COLUMN 列 SET DEFAULT '默认值'
ALTER TABLE 表 ADD CONSTRAINT 约束名 CHECK (条件)
ALTER TABLE 表 ADD CONSTRAINT 约束名 FOREIGN KEY (列) REFERENCES 其他表(列)
ALTER TABLE 表 ADD CONSTRAINT 约束名 UNIQUE (列...)
-- 删除约束
ALTER TABLE Persons DROP CONSTRAINT 约束名

-- 停用约束

ALTER TABLE 表名ADD CONSTRAINT 约束名 UNQUE(status) DISABLE
ALTER TBALE 表名DISABLE CONSTRAINT 约束名

--启用约束

ALTER TABLE 表名ENABLE CONSTRAINT 约束名;
ALTER TABLE 表名ENABLE NOVALIDATE CONSTRAINT 约束名;

-- 查看约束

select * from user_constraints where ...;

5、oracle下数据完整性约束相关推荐

  1. oracle 排序的分析函数,oracle下数据的排序分组row_number() over()--分析函数,可用于去重...

    row_number()over(partition by col1 order by col2)表示根据col1分组,在分组内部根据col2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内 ...

  2. Oracle——删除用户以及用户下数据

    Oracle中删除用户下所有对象的多种方法 2015-09-22 13:12  8299人阅读  评论(0)  收藏  举报   分类: Oracle数据库基本管理(336)   oracle安装升级 ...

  3. Oracle删除用户以及用户下数据

    Oracle删除用户下所有对象的方法未必人人都会,下面就为您介绍两种常用的Oracle删除用户下所有对象的方法,希望对您学习Oracle删除用户方面能有所帮助. 方法1: drop user XXXX ...

  4. Oracle 大数据量下的数据迁移

    本文梗概: 本文主要描述了从oracle 9i至oracle 10g的单表大数据量的迁移过程,其间作者尝试了不同方法,对比之后,主要使用了DB Link. 正文: 由于公司服务器升级,原Oracle ...

  5. 简述oracle的主要数据库对象,Oracle数据库数据对象分析

    Oracle数据库数据对象分析 Oracle数据库数据对象中最基本的是表和视图,其他还有约束.序列.函数.存储过程.包.触发器等.对数据库的操作可以基本归结为对数据对象的操作,理解和掌握Oracle数 ...

  6. 实验五 oracle高级数据查询技术

    实验五 oracle高级数据查询技术 实验目的:  一.掌握日期型数据的操作技术  二.掌握层次查询技术  三.理解情景查询与翻译查询技术  四.了解统计查询技术 实验内容: 一.日期型数据的操作   ...

  7. Oracle Study--RAW Device在Oracle下的应用

    Oracle Study--RAW Device在Oracle下的应用 1. 什么是裸设备(RAW DEVICE)         裸设备是指未创建文件系统的磁盘分区(raw partition)或逻 ...

  8. mysql中不同事务隔离级别下数据的显示效果--转载

    事务是一组原子性的SQL查询语句,也可以被看做一个工作单元.如果数据库引擎能够成功地对数据库应用所有的查询语句,它就会执行所有查询,如果任何一条查询语句因为崩溃或其他原因而无法执行,那么所有的语句就都 ...

  9. Oracle 删除数据后释放数据文件所占磁盘空间

    . . . . . 测试的时候向数据库中插入了大量的数据,测试完成后删除了测试用户以及其全部数据,但是数据文件却没有缩小.经查阅资料之后发现这是 Oracle "高水位"所致,那么 ...

最新文章

  1. 灯光工厂滤镜插件knoll light factory
  2. 周五:IPC连接及远程执行
  3. 2009.11网络工程师考试案例试题学习攻略(1)
  4. websocket协议
  5. layui table勾选框的修改_layui怎么设置checkbox勾选
  6. Android开发中目前流行控件和知识点总结
  7. Java实验8 T5.使用键盘控制界面上图片的移动
  8. Spark UI (基于Yarn) 分析与定制
  9. 关于Cocos2d-x中实例伸缩后的位置设置
  10. Linux下mail服务配置(RHEL5)
  11. 虚幻4 游戏引擎(一):材质教学
  12. laravel 框架使用hdjs 实现单图上传功能
  13. 英文学术论文写作基础课程
  14. 黑马程序员—一张帖看完黑马所有学科、班级就业薪资贴
  15. css实现方框内打勾
  16. 鱼眼摄像机弊端及应用
  17. [IT学习]阿铭Linux 微信公众号 每日一题 解析
  18. 跳过休息日(周末和节假日)
  19. 700多页A4纸打印要多少钱?
  20. FPGA和CPLD的区别

热门文章

  1. python购物车典例_Python入门:购物车实例
  2. mysql数据库设计三大范式_了解数据库设计三大范式
  3. c++——reverse()函数的使用
  4. leetcode94. 二叉树的中序遍历(左中右)
  5. 107. 二叉树的层序遍历 II and 102. 二叉树的层序遍历 023(BFS模板题打两道)
  6. AcWing 703. 数独检查
  7. 表空间oracle查询,Oracle表和表空间查询
  8. 蓝桥杯 数字三角形 贪心+动态规划
  9. Leetcode贪心 验证回文字符串
  10. 反转字符串中的单词 III leetcode