Code:
  1. 数据完整性
  2. 数据库不仅仅是存储数据,它也必须保证所保存的数据的正确性。如果数据不正确或不一致,那么该数据的完整性可能会遭到破坏,从而给数据库本身的可靠性带来意想不到的问题。
  3. 为了维护数据库中的数据完成性,在创建表时通常需要指定一些约束。通过表中的字段(列)定义约束,就可以防止非法数据的插入问题.对约束的定义可以再create table语句中进行,也可以在alter table语句中进行。
  4. 什么是约束呢?
  5. 约束是表级的强制规定.根据约束的作用域,约束又可分为表级约束和列级约束两种。
  6. 列级约束是指是字段定义的一部分,只能够应用在一个列上.
  7. 表级约束是指独立于列的定义,可以应用于一个表中的多个列上。
  8. 在oracle系统中定义约束时,通过constraint关键字为约束命名,如果用户没有为约束指定名称,系统会自动建立默认的名称。
  9. 总结:
  10. ?   作用范围:列级约束只能作用在一个列上,而表约束可以作用在多个列上(当然表约束也可以作用在一个列上)。
  11. ?   定义方式:列约束必须跟在列的定义里后面,表约束不与列一起,而是单独定义。
  12. ?   非空(not null) 约束只能定义在列上
  13. 备注:在定义约束时,可以通过指定enable或disable关键字将约束的初始状态设置为激活或禁用状态,默认是激活状态。
  14. 定义约束的语法格式1:
  15. CREATE TABLE [schema.]table
  16. (column datatype [DEFAULT expr]
  17. [column_constraint],
  18. ...
  19. [table_constraint][,...]);
  20. 列级约束:
  21. column [CONSTRAINT constraint_name] constraint_type,
  22. 表级约束
  23. column,...
  24. [CONSTRAINT constraint_name] constraint_type
  25. (column, ...),
  26. 约束的分类为:
  27. •   NOT NULL
  28. •   UNIQUE
  29. •   PRIMARY KEY
  30. •   FOREIGN KEY
  31. •   CHECK
  32. 1、  Not null
  33. 特点如下:
  34. 为字段定义not null 约束后,该字段不能为null值
  35. Not Null约束只能在列级定义
  36. 在定义一个表中可以有多个not Null
  37. 2、  unique
  38. 特点如下:
  39. 如果为字段定义了unique约束,该字段不能够包含重复值
  40. unique约束既可以在列级定义,也可以在表级定义。
  41. 在oracle系统中被定义的unique约束会自动建立一个唯一的索引。
  42. 同一个字段既可以在其上定义为not null 也可以建立unique约束,(为某个字段可以添加多个约束),注意:如果在一个字段仅定义了unique约束,则该字段可以包含多个null值
  43. Unique主要的目的是:是在保证主键列外,其它列的唯一性。
  44. 3、  primary key
  45. 特点如下:
  46. 定义为primary key的字段或字段组中不能包含重复值,并且不能为null值.(即满足唯一性,不能为空)
  47. 在一个表中只能定义一个primary key的约束
  48. Oracle会自动为具有primarykey约束的字段添加一个唯一的索引,以及一个not null约束
  49. 4、  foreign key
  50. 特点如下:
  51. 被定义了foreign key约束的字段的取值只能为相关表中引用的字段的值或null值。
  52. foreign key约束既可以在列级定义,也可以在表级定义。
  53. 定义了foreign key约束的外键字段和被引用的主键字段可以在同一张表中,这种情况称为:’自引用’(构成了自关联关系)
  54. 对于同一个字段可以同时定义为foreign key约束和not null约束。
  55. 注意:外键的类型、尺寸等一定要与主键完全一致。
  56. 备注:
  57. 在oracle中级联删除有如下三值:
  58. 1、  no action 在删除一方的情况下,对多方不进行任何操作.(不能删,删的情况会出现, 违反完整约束条件的异常信息)
  59. 2、  cascade
  60. 在删除一方的时,会把多方所有与1方关联的数据删除掉。
  61. 3、  set null
  62. 在删除一方的时,会把多方所有与1方关联的数据的字段值设置为null(注意:该字段必须允许为null 否则的话会出现无法更新***为 NULL)。
  63. 5、  check
  64. check约束是所有约束中最灵活的约束,也是最复杂的约束,check约束检查输入到表中的数据值来维护域的完整性,即检查输入的每一个数据,只有符合条件的数据才允许输入到表中.check约束有如下特点:
  65. 在check约束的表达式中,必须引用表中一个或多个字段,并且表达式的运算结果必须是一个布尔值.
  66. Check约束即可以在列级定义,也可以在表级定义
  67. 对于同一个字段可以定义多个check约束,而且对于同一个字段可以定义check约束和not null约束。
  68. 综合案例:
  69. 学生信息表
  70. 用户名,用户密码,用户电话,用户邮箱,用户地址.
  71. 教师名称,教师性别,教师职务,教师年龄
  72. ——————————————————————————————
  73. 分析:满足1NF范式(属性不可再分)
  74. 满足2NF范式(非主属性必须完全依赖于任一候选键)
  75. 用户名->用户密码,用户电话,用户邮箱,用户地址.
  76. Stu(sname,stel,semail,saddress)
  77. 用户名—> 教师名称
  78. 教师名称—>用户名
  79. stear(sid,tname,sname)
  80. 教师名称—>教师性别,教师职务,教师年龄
  81. Teacher(tname,tsex,ttitle,tage)
  82. 满足3NF(非主属性都不传递依赖于任一候选键)
  83. //创建表的语法同时也给表加约束||或者是创建表之后才用alter语句添加约束条件
  84. //第一步切换到管理员权限
  85. SQL> conn system/root;
  86. //第二步创建用户
  87. SQL> create user slj identified by root;
  88. //第三步为用户分配角色权限
  89. SQL> grant connect,resource to slj;//connect 连接 resources 创建表的权限 详细参考第二次oracle课程
  90. //切换到相应的用户
  91. SQL> conn slj/root;
  92. //采用create语句创建表
  93. SQL> create table stu(
  94. 2    sname varchar2(20) primary key,
  95. 3    stel varchar2(11) not null,
  96. 4    semail varchar2(40),
  97. 5    saddress varchar2(50)
  98. 6  );
  99. Table created
  100. SQL> create table teacher(
  101. 2     tname varchar2(20) primary key,
  102. 3     tsex varchar2(2),
  103. 4     ttitle varchar2(40),
  104. 5     tage number(3) check(tage<100 and tage>20)
  105. 6  );
  106. Table created
  107. SQL> create table stear(
  108. 2     sid number(10) primary key,
  109. 3     tname varchar2(20) references teacher(tname),
  110. 4     sname varchar2(20) references stu(sname)
  111. 5  );
  112. Table created
  113. SQL> commit;
  114. //查询约束条件
  115. SQL> select * from user_constraints;
  116. //查询被约束的列
  117. SQL> select * from user_cons_columns;
  118. 以上内容归redarmy_chen创建,如需转载请附带出处,如有疑问请发送邮件至redarmy_chen@qq.com

原创 oracle 数据完整性总结lt;十gt;相关推荐

  1. Oracle Golden Gate 系列十五 -- GG Trails 说明

    一.Trails 说明 理论知识在系列一里有说明,这里在拿出来看一下: Oracle Golden Gate 系列一 -- GG 架构 说明 http://blog.csdn.net/tianleso ...

  2. oracle数据库第八章答案,Oracle培训(三十)——Oracle 11g 第八章知识点小结——处理数据...

    Oracle培训(三十)--Oracle 11g 第八章知识点总结--处理数据 Oracle 11g 第八章知识点总结--处理数据 知识点预览 复习 处理数据 复习 --建表t_user create ...

  3. oracle过滤器基础,Oracle培训(四十六)——Servlet第六章知识点总结——过滤器编程...

    Oracle培训(四十六)--Servlet第六章知识点总结--过滤器编程 目标 编写一个过滤器 部署一个过滤器 了解请求和响应包装器 在请求分发器下的过滤器 知识点预览 过滤器 过滤器 1. 什么是 ...

  4. Oracle Golden Gate 系列十六 -- 配置 GG 安全 说明 与 示例

    由于GoldenGate所需的用户权限较大,而每个GoldenGate进程配置文件中都需要设置该用户和密码用于数据库登陆,出于安全性的考虑,建议将密码进行加密. 官方文档上介绍的加密有如下三种方法: ...

  5. laravel框架连接Oracle,laravel5.8(十四)连接oracle数据库

    首先确定你的PHP已经支持oracle数据库的链接.PHP需要安装OCI8扩展. 确定PHP可以链接ORACLE数据库之后.我们使用composer安装laravel支持oracle链接的插件 yaj ...

  6. 勇士主场为什么叫oracle,再见甲骨文,十年过去了,金州勇士除了复刻经典,还要再造传奇!...

    「以最好的方式结束勇士主场的第47个季赛!今晚甲骨文到场的球迷太热情了.回到复古的路线,从2009赛季到2019赛季.」 - 斯蒂芬库里 美国时间4月7日,金州勇士在Oracle Arena主场的季赛 ...

  7. Oracle数据完整性学习笔记

    1.数据完整性 数据库不仅仅是存储数据,它也必须保证所保存的数据的正确性.如果数据不正确或不一致,那么该数据的完整性可能会遭到破坏,从而给数据库本身的可靠性带来意想不到的问题. 为了维护数据库中的数据 ...

  8. oracle对同义词的解释,[原创]oracle同义词解释

    7.8 同义词 同义词是对象的备选名称,如果对象存在同义词,那么任何sql语句都能通过实际名称或通过同义词来访问该对象.同义词看上去似乎没什么作用,然而实际情况并非如此.使用同义词意味着应用程序可以对 ...

  9. ORACLE HANDBOOK系列之十四:变化通知(Change Notification)

    在App开发的过程中,有些数据访问频率很高但是数据变化不大,我们一般会让它驻留内存以提高访问性能,但是此种机制存在一个问题,那就是如何监测数据的变化,Oracle 10g中引入的 Change Not ...

最新文章

  1. 代码规范性与品质问题~
  2. docker存储结构解析
  3. FFmpeg音频编解码处理
  4. PDF:解决从PDF中复制文字时出现的空方框问题
  5. 常用的函数式接口_Predicate接口练习_集合信息筛选
  6. 深度学习与自然语言处理之四:卷积神经网络模型(CNN)
  7. 功能Java示例 第1部分–从命令式到声明式
  8. 大二c语言期末考试题库及详解答案,大学C语言期末考试练习题(带详解答案)...
  9. .NET Micro Framework 用户程序升级说明
  10. 黑客购买恶意软件攻击航空航天和交通行业,潜伏5年+
  11. FindWindowEx的应用
  12. MatConvnet工具箱文档翻译理解四
  13. JS 打印 data数据_用D3.js 十分钟实现字符跳动效果
  14. Matlab视频系列教程-小木讲matlab-前12讲
  15. 网站整站下载工具推荐【Z】
  16. 计算机桌面字体咋调整,如何调整电脑桌面字体的大小
  17. 手机 android.downloader病毒,Android手机出现史上最强木马 感染后无法删除
  18. 一文读懂数据脱敏技术在智能汽车中的应用
  19. 前端JS 实现将24位RGB颜色转换16位RGB颜色
  20. 我的世界java版如何看坐标_我的世界中怎么查看坐标,坐标系统详解

热门文章

  1. 尔雅课程 互联网时代的信息安全与防护 期末答案
  2. [2021] Spatio-Temporal Graph Contrastive Learning
  3. 提出问题用计算机求解论文,计算机专业毕业论文答辩一般程序及常见问题
  4. 第20章 一些随机波动率模型的近似解
  5. 语义分割 patches 训练数据制作
  6. Android OpenCV(四十):QR二维码检测与识别
  7. 机动车发生交通事故造成人身伤亡,财产损失的,赔偿责任如何承担?
  8. 研究发现,纽约市2050年的零碳目标是可以实现的
  9. 美国纽约市出租车大数据探索-基于kaggle比赛
  10. 用java对数据库增删改查