`

原创 oracle 数据完整性总结<十>

阅读更多
数据完整性
   数据库不仅仅是存储数据,它也必须保证所保存的数据的正确性。如果数据不正确或不一致,那么该数据的完整性可能会遭到破坏,从而给数据库本身的可靠性带来意想不到的问题。
为了维护数据库中的数据完成性,在创建表时通常需要指定一些约束。通过表中的字段(列)定义约束,就可以防止非法数据的插入问题.对约束的定义可以再create table语句中进行,也可以在alter table语句中进行。

什么是约束呢?
   约束是表级的强制规定.根据约束的作用域,约束又可分为表级约束和列级约束两种。
列级约束是指是字段定义的一部分,只能够应用在一个列上.
表级约束是指独立于列的定义,可以应用于一个表中的多个列上。
在oracle系统中定义约束时,通过constraint关键字为约束命名,如果用户没有为约束指定名称,系统会自动建立默认的名称。

总结:
	作用范围:列级约束只能作用在一个列上,而表约束可以作用在多个列上(当然表约束也可以作用在一个列上)。
	定义方式:列约束必须跟在列的定义里后面,表约束不与列一起,而是单独定义。
	非空(not null) 约束只能定义在列上


备注:在定义约束时,可以通过指定enable或disable关键字将约束的初始状态设置为激活或禁用状态,默认是激活状态。

定义约束的语法格式1:
CREATE TABLE [schema.]table
	    (column datatype [DEFAULT expr]
		[column_constraint],
		...
		[table_constraint][,...]);

列级约束:
  column [CONSTRAINT constraint_name] constraint_type,
表级约束
  column,...
  [CONSTRAINT constraint_name] constraint_type 
  (column, ...),

约束的分类为:
•	NOT NULL
•	UNIQUE 
•	PRIMARY KEY
•	FOREIGN KEY
•	CHECK
1、	Not null
特点如下:
 	为字段定义not null 约束后,该字段不能为null值
 	Not Null约束只能在列级定义
 	在定义一个表中可以有多个not Null 
2、	unique 
特点如下:
 	如果为字段定义了unique约束,该字段不能够包含重复值
 	unique约束既可以在列级定义,也可以在表级定义。
 	在oracle系统中被定义的unique约束会自动建立一个唯一的索引。
 	同一个字段既可以在其上定义为not null 也可以建立unique约束,(为某个字段可以添加多个约束),注意:如果在一个字段仅定义了unique约束,则该字段可以包含多个null值
   
Unique主要的目的是:是在保证主键列外,其它列的唯一性。
3、	primary key
特点如下:
 	定义为primary key的字段或字段组中不能包含重复值,并且不能为null值.(即满足唯一性,不能为空)
 	在一个表中只能定义一个primary key的约束
 	Oracle会自动为具有primarykey约束的字段添加一个唯一的索引,以及一个not null约束
4、	foreign key
特点如下: 
 	   被定义了foreign key约束的字段的取值只能为相关表中引用的字段的值或null值。
 	foreign key约束既可以在列级定义,也可以在表级定义。
 	定义了foreign key约束的外键字段和被引用的主键字段可以在同一张表中,这种情况称为:’自引用’(构成了自关联关系)
 	对于同一个字段可以同时定义为foreign key约束和not null约束。

注意:外键的类型、尺寸等一定要与主键完全一致。
备注:
   在oracle中级联删除有如下三值:
1、	no action 在删除一方的情况下,对多方不进行任何操作.(不能删,删的情况会出现, 违反完整约束条件的异常信息)
2、	cascade
 在删除一方的时,会把多方所有与1方关联的数据删除掉。
3、	set null
         在删除一方的时,会把多方所有与1方关联的数据的字段值设置为null(注意:该字段必须允许为null 否则的话会出现无法更新***为 NULL)。
5、	check   
check约束是所有约束中最灵活的约束,也是最复杂的约束,check约束检查输入到表中的数据值来维护域的完整性,即检查输入的每一个数据,只有符合条件的数据才允许输入到表中.check约束有如下特点:
 	  在check约束的表达式中,必须引用表中一个或多个字段,并且表达式的运算结果必须是一个布尔值.
 	  Check约束即可以在列级定义,也可以在表级定义
 	  对于同一个字段可以定义多个check约束,而且对于同一个字段可以定义check约束和not null约束。


综合案例:
学生信息表
      用户名,用户密码,用户电话,用户邮箱,用户地址.
      教师名称,教师性别,教师职务,教师年龄
      ——————————————————————————————
分析:满足1NF范式(属性不可再分)
      满足2NF范式(非主属性必须完全依赖于任一候选键)
     用户名->用户密码,用户电话,用户邮箱,用户地址.
Stu(sname,stel,semail,saddress)
     用户名—> 教师名称
     教师名称—>用户名
    
    stear(sid,tname,sname)

教师名称—>教师性别,教师职务,教师年龄

Teacher(tname,tsex,ttitle,tage)

  满足3NF(非主属性都不传递依赖于任一候选键)
     
//创建表的语法同时也给表加约束||或者是创建表之后才用alter语句添加约束条件

//第一步切换到管理员权限
SQL> conn system/root;
//第二步创建用户
SQL> create user slj identified by root;
//第三步为用户分配角色权限
SQL> grant connect,resource to slj;//connect 连接 resources 创建表的权限 详细参考第二次oracle课程
//切换到相应的用户
SQL> conn slj/root;
//采用create语句创建表
SQL> create table stu(
  2    sname varchar2(20) primary key,
  3    stel varchar2(11) not null,
  4    semail varchar2(40),
  5    saddress varchar2(50)
  6  );
 
Table created
SQL> create table teacher(
  2     tname varchar2(20) primary key,
  3     tsex varchar2(2),
  4     ttitle varchar2(40),
  5     tage number(3) check(tage<100 and tage>20)
  6  );
 
Table created
SQL> create table stear(
  2     sid number(10) primary key,
  3     tname varchar2(20) references teacher(tname),
  4     sname varchar2(20) references stu(sname)
  5  );
 
Table created
SQL> commit;

//查询约束条件
SQL> select * from user_constraints;
//查询被约束的列
SQL> select * from user_cons_columns;


  
以上内容归redarmy_chen创建,如需转载请附带出处,如有疑问请发送邮件至redarmy_chen@qq.com
分享到:
评论

相关推荐

    原创Oracle 物理删除数据文件恢复 危机演练

    这个话题对于DBA(数据库管理员)来说至关重要,因为数据的安全性和完整性是任何业务的核心。 首先,我们需要理解Oracle数据文件(Data Files)在数据库中的角色。它们是存储表空间和数据库对象的实际数据的地方。...

    ORACLE DBA工作笔记 运维数据迁移与性能调优

    4. Oracle的数据备份和恢复技术,因为数据迁移往往需要确保数据的安全性和完整性,数据库的备份和恢复是这一过程中不可或缺的一环。 5. 理解和运用Oracle的诊断工具,例如AWR(自动工作负载存储库报告)、ASH(活动...

    Oracle 基础知识 -大全- 原创整理.pdf

    12. **数据完整性** Oracle通过约束(如NOT NULL、UNIQUE、FOREIGN KEY、PRIMARY KEY)和触发器确保数据的完整性。 13. **索引** 索引是提高查询速度的关键,Oracle支持B树索引、位图索引、函数索引等多种类型,...

    原创ORACLE辅助工具(免客户端支持)

    标题中的“原创ORACLE辅助工具(免客户端支持)”指的是一个专为ORACLE数据库设计的辅助应用程序,它具有显著的特点,即用户无需安装完整的ORACLE客户端即可使用。这通常是通过使用轻量级的连接方式或者ODBC/JDBC...

    原创实战Oracle RAC rman恢复

    在Oracle RAC中进行RMAN恢复,首先需要确保备份的完整性。RMAN可以备份整个集群的所有实例和数据文件,同时也会备份控制文件、重做日志文件等关键组件。这些备份通常存储在冗余的、高可用的存储设备上,以确保在任何...

    Oracle_Database_备份与恢复【小六原创】.doc

    EXP和IMP是早期的Oracle数据导出导入工具,现在已经被Data Pump所取代。Data Pump提供了更快的数据传输速度和更灵活的选项,支持并行导出和导入,同时还能进行数据子集导出,以满足特定需求。 DBV(Database ...

    Oracle经典资料(原创)

    Oracle数据库是全球最广泛使用的商业关系型数据库管理系统之一,它以其强大的功能、高效的数据处理能力和高可用性而闻名。这份“Oracle经典资料(原创)”压缩包文件显然包含了关于Oracle数据库的一些核心知识和实用...

    mysql-oracle-postgree的比较文档-英文版[原创文档]

    【MySQL 概述】 ...MySQL适合轻量级、快速开发的项目,PostgreSQL适合需要高级特性和数据完整性的项目,而Oracle则适合大型企业级应用。每种数据库都有其优势和适用场景,理解它们的特性是做出明智决策的关键。

    [原创]Guide: Installing Oracle Enterprise Manager Grid Control 10.2.0.5 on Oracle Database 11gR2 and RHEL Linux 5.4

    ### 安装Oracle Enterprise Manager Grid Control 10.2.0.5于Oracle Database 11gR2及RHEL Linux 5.4环境指南 #### 概述 本指南详细介绍了如何在Red Hat Enterprise Linux (RHEL) 5.4上安装并配置Oracle Enterprise...

    Oracle Database Concepts 10.2 .pdf

    4. **Data Guard**:通过提供物理和逻辑复制技术,Data Guard 增强了数据保护能力,确保数据的完整性和一致性。 5. **SecureFile Lobs**:这是一种新的大型对象存储格式,提高了安全性并优化了存储效率。 6. **...

    多数据库数据同步系统

    3. **事务一致性**:为了保证数据的完整性,同步过程必须在事务级别进行,确保即使在异常情况下也能保持数据的一致状态。 4. **性能优化**:大量数据的同步可能会对系统性能产生影响。因此,同步系统需要优化数据...

    Oracle由10.2.0.1升级到10.2.0.5

    在IT领域,数据库系统的升级是一项复杂且至关重要的任务,它涉及到多个步骤和注意事项,以确保数据的完整性和系统的稳定性。本文将深入解析“Oracle由10.2.0.1升级到10.2.0.5”的过程,特别是在红旗Linux下的64位...

    ocp 笔记 原创

    - **维护数据完整性**:实施各种约束条件以保证数据的一致性和准确性。 - **加载程序**:使用Oracle的加载工具批量导入数据。 - **重新组织数据**:通过重组表或索引来优化性能。 - **管理口令安全性和资源**:设置...

    最新数据库系统原理课程设计模版.doc

    5. **完整性约束**:实体完整性、参照完整性和用户自定义完整性是确保数据准确性的规则。实体完整性要求主键不为空,参照完整性维护表间引用的一致性,用户自定义完整性则是根据具体业务规则设定的额外约束。 6. **...

    数据库系统管理与维护(Oracle) 大作业 (2).docx

    使用ALTER TABLE语句,将`lend`表中的`bid`字段设置为外键,引用`books`表的`bid`字段,确保数据完整性。 3. 插入记录: 使用INSERT INTO语句向`books`和`lend`表中插入3条自定义的数据记录。 4. 创建数据库用户...

    原创SqlDbx3.53取消限制最新版

    5. **事务处理**:在SqlDbx中,用户可以方便地进行事务控制,确保数据的一致性和完整性。 6. **性能分析**:对于复杂的SQL查询,SqlDbx提供了执行计划分析,帮助用户优化查询性能,找出潜在的瓶颈。 7. **版本控制...

    [原创]PWX for AS400 两段式字符集处理(杨晓东2005-12-08)

    - 最终结果是将经过两步转换后的数据导入到Oracle数据库中,并输出表的内容以验证数据的完整性和准确性。 #### 总结 通过上述两步,可以在AS400 V5R1之前版本的系统中成功地处理包含简体或繁体中文字符集为37的...

    数据库系统管理与维护(Oracle) 大作业.pdf

    2. 添加外键约束:在`lend`表的`bid`字段上设置外键约束,参考`books`表的`bid`,确保数据的一致性和完整性。 3. 插入记录:根据需求,向`books`和`lend`表中插入3条自定义记录,确保符合表结构和业务逻辑。 4. ...

    大华SQL助手(原创)源码

    3. **事务处理**:学习如何在多条SQL语句中实施事务,确保数据的一致性和完整性。 4. **错误处理和日志记录**:了解如何捕获并处理SQL执行过程中可能出现的错误,以及记录操作日志以供排查问题。 5. **用户界面设计*...

Global site tag (gtag.js) - Google Analytics