一、Oracle系统一共提供了下面5种约束

1.非空(NOT NULL)约束:所定义的列绝不能为空;

2.唯一(UNIQUE)约束:在表中每一行中所定义的列,其列值不能同样;

3.主键(PARIMARY KEY)约束:唯一标识表中的一行;

4.外键(FOREIGN KEY)约束:用来维护子表(Child Table)和父表(Parent Table)之间的引用完毕行;

5.条件(CHECK)约束:表中每行都要满足该约束条件。

二、Oracle约束作用:约束主要在设计表的时候使用。它能够为数据库表提供完整性、引用完整性、用户自己定义完整性。

有了约束对这个数据库中的数据提供很好的维护。

引入约束的目的就是防止那些无效或有问题的数据输入表中,维护数据库数据的唯一性。

Oracle中约束keywordconstraint。

三、主键约束(即完整性约束)实现方法:

1.在创建表的时候。在列中加入primary key或者用keywordconstraint;(

2.为已创建好的表中,通过keywordconstraint为表中的某一列加入约束。

例:alter table A add constraint PK_A_ID primary key (id);命令是为已创建好的A表的id列加入主键约束。

【实战操作1(相应于上面)】

Step1:创建B表,并赋予主键约束。例如以下图:

所以B表中id列的数据不能为空且不能反复。

Step2:先在B表中插入第一行数据,例如以下图:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

Step3:再在B表中插入数据,有益将带有主键约束的id列值反复,例如以下图:

因此验证了被主键约束的列不能插入反复数据。

Step4:再在B表插入数据,有益将id列相应位置的数据不写(即为空)。例如以下图:

因此验证了被主键约束的列不能为空。

【实战操作2(相应于上面)】

Step1:在创建C表时利用constraintkeyword加入主键约束。例如以下图:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

图中pk是primary key的缩写,这个pk_c_id名字能够随便定义。可是一般用pk标识。

Step2:以下先来验证被主键约束的id列数据是否能反复。例如以下图:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

因此验证了被主键约束的列不能插入反复数据。

Step3:以下验证被主键约束的id列是否能插入null数据,例如以下图:

因此验证了被主键约束的列不能为空。

【实战操作3(相应于上面)】

Step1:查看A表数据,例如以下图:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

Step2:利用上面为已创建好的A表加入主键约束,例如以下图:

发现报错。由于当前A表中的id列存在反复数据。

Step3:反复数据怎么删除?先查看rowid再用where rowid=’…’命令删除。例如以下图:

Step4:此时A表中的id列已没有反复数据。那么能够用上面为该表加入主键约束,例如以下图:

最新文章

  1. GUI基础学习
  2. 编译系统中的 NFA/DFA算法理解
  3. Form.block Trigger DML常规写法
  4. wxWidgets学习笔记——在屏幕上画简单的图形和文字
  5. MvcPager概述
  6. HDU 3081 Marriage Match II(二分法+最大流量)
  7. Redis性能问题排查解决手册
  8. kali系统安装
  9. iOS开发之NSTimer
  10. oracle无法插入数据
  11. Java 常见数据交换格式——xml、json、yaml
  12. 132.leecode-Palindrome Partitioning II
  13. HDU6216
  14. PHP最全笔记(四)(值得收藏,不时翻看一下)
  15. c#7的新特性
  16. spring揭密学习笔记(2)-spring ioc容器:IOC的基本概念
  17. MVC5控制器传值的三种方式(ViewData,ViewBag,TempData),刚刚学习MVC5的新手,希望各位大神多多指教
  18. ASP.NET Core 与 .NET Core 演变与基础概述
  19. [信息检索] 第一讲 布尔检索Boolean Retrieval
  20. 国内首款 FPGA 云服务器,性能是通用 CPU 服务器 30 倍以上

热门文章

  1. [Apple开发者帐户帮助]二、管理你的团队(7)管理服务器帐户
  2. Appium + python - automator定位升级版操作
  3. 认识JS的基础对象,定义对象的方法
  4. springboot创建项目
  5. go的语言结构
  6. 关于Core里的 StartUp里的方法的理解。
  7. In Swift, typedef is called typealias:
  8. efcore 控制台迁移架构
  9. java中反射讲解及实例
  10. Python之数据结构改造