一、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列已没有反复数据。那么能够用上面为该表加入主键约束,例如以下图:

Oracle-11-主键约束的更多相关文章

  1. Oracle删除主键约束的同时删除索引

    继续昨天的折腾(Oracle修改主键约束),删掉主键约束后,发现唯一索引并未删掉.仔细看了下,主键约束跟唯一索引名称不一样,这说明是先创建了唯一索引,后创建的主键约束.我们来试验下: SQL> ...

  2. ORACLE中主键约束跟唯一索引的区别

    分类: DB 2011-12-03 21:34 611人阅读 评论(0) 收藏 举报 oracleconstraintsimmutableusertabledomain 1.  分别用两种方法创建主键 ...

  3. Oracle的主键约束、唯一约束与外键约束

    http://www.shangxueba.com/jingyan/122163.html主键:  1.主键约束: 一个表只能有一个主键约束.主键可以是单个字段,也可以是多个字段.无论是哪种情况,其所 ...

  4. Oracle修改主键约束

    项目需求,有张表,原有三个联合主键,现在需要再加一个字段进去,而恰恰这个字段可以为空的.去数据库捞了一把,还好数据都不为空: SQL> select count(*) from t_wlf_re ...

  5. Oracle主键约束、唯一键约束、唯一索引的区别

    一般,我们看到术语“索引”和“键”交换使用,但实际上这两个是不同的.索引是存储在数据库中的一个物理结构,键纯粹是一个逻辑概念.键代表创建来实施业务规则的完整性约束.索引和键的混淆通常是由于数据库使用索 ...

  6. Oracle数据库,非空约束、主键约束、外键约束、唯一约束

    非空约束:设置列时,可为空默认可为空,去掉对号之后设置数据不可为空: 唯一约束:在键中设置,唯一约束名称.类型Unique.列名:设置应用完成之后,此列数据具有唯一性:即数据不可重复(类型:Uniqu ...

  7. Oracle中主键、外键、索引、序列、唯一性约束的创建

    1.主键的创建 方法一:直接在sql语句中声明字段主键约束 create table table_name (id type[length] constraint pk_name primary ke ...

  8. oracle主键约束、唯一键约束和唯一索引的区别

    (1)主键约束和唯一键约束均会隐式创建同名的唯一索引,当主键约束或者唯一键约束失效时,隐式创建的唯一索引会被删除: (2)主键约束要求列值非空,而唯一键约束和唯一索引不要求列值非空: (3)相同字段序 ...

  9. Oracle通过主键id删除记录很慢

    问题描述: Oracle通过主键id删除2000条记录很慢,需要花费十二分钟. 解决过程: 1.首先查看SQL的执行计划,执行计划正常,cost只有4,用到了主键索引. 2.查看等待事件, selec ...

  10. Sql Server约束的学习一(主键约束、外键约束、唯一约束)

    一.约束的分类 1.实体约束 实体约束是关于行的,比如某一行出现的值不允许出现在其他行,例如主键约束. 2.域约束 域约束是关于列的,对于所有行,某一列有那些约束,例如检查约束. 3.参照完整性约束 ...

随机推荐

  1. 0502 php简单了解

    准备工作: 安装好wamp,配置站点:apache2.4.9\conf\httpd.conf 注意事项: 1.必须有分号 2.不要有无意义空行,会以空格形式输出. 3.变量,关键字(if,for..) ...

  2. preg_replace数组的用法

    $string = 'The quick brown fox jumped over the lazy dog.';$patterns = array();$patterns[2] = '/quick ...

  3. 使用idea2.5建立maven项目

    使用idea的步骤: 1.建立一个新的maven项目 2.选中maven项目 3.点击next,输入groupID和artifactid 4.点击next  选择projectlocation 5.选 ...

  4. layui富文本编译器添加图片

    1.创建富文本编辑器 <form class="layui-form" method="post" id="myForm" encty ...

  5. Entity Framework -- 添加,删除,修改,关系依附,关系摘除,验证操作

    数据库模型 这个基本上是浓缩 Jerry Tom博客的内容,作为参考http://www.cnblogs.com/mbailing/archive/2012/07/31/2616779.html 说明 ...

  6. Android Unresolved Dependencies

    在Android Studio的开发中,在软件中集成了ButterKnife插件,另外需要集成ButterKnife的jar包.因为本地没有现成的,所以在module的build.gradle文件中添 ...

  7. IOS 监控网络变化案例源码

    随着移动网络升级:2G->3G->4G甚至相传正在研发的5G,网络速度是越来越快,但这流量也像流水一般哗哗的溜走. 网上不是流传一个段子:睡觉忘记关流量,第二天房子就归移动了! 这固然是一 ...

  8. ASP.net获取当前url各种属性(文件名、参数、域名等)的方法

    假设当前页完整地址是:http://www.test.com/aaa/bbb.aspx?id=5&name=kelli "http://"是协议名 "www.te ...

  9. 我的C++笔记(数据的共享与保护)

    *数据的共享与保护: * .作用域: * 作用域是一个标识符在程序正文中有效的区域.C++中标识符的作用域有函数原型作用域.局部作用域(块作用域).类作用域和命名空间作用域. * ().函数原型作用域 ...

  10. (转)基于MVC4+EasyUI的Web开发框架经验总结(13)--DataGrid控件实现自动适应宽带高度

    http://www.cnblogs.com/wuhuacong/p/4085725.html 在默认情况下,EasyUI的DataGrid好像都没有具备自动宽度的适应功能,一般是指定像素宽度的,但是 ...