`
DXL_xiaoli
  • 浏览: 71506 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

数据完整性约束

阅读更多
数据完整性
数据库不仅仅是存储数据,它也必须保证所保存的数据的正确性。如果数据不正确或不一致,那么该数据的完整性可能会遭到破坏,从而给数据库本身的可靠性带来意想不到的问题。
为了维护数据库中的数据完成性,在创建表时通常需要指定一些约束。通过表中的字段(列)定义约束,就可以防止非法数据的插入问题.对约束的定义可以再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 dxl identified by root;
//第三步为用户分配角色权限
SQL> grant connect,resource to dxl;//connect 连接 resources 创建表的权限 详细参考第二次oracle课程
//切换到相应的用户
SQL> conn dxl/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;
数据完整性在Oracle中很重要 ,希望同学们都能够熟练掌握。
1
2
分享到:
评论

相关推荐

    Oracle数据完整性约束机制

    Oracle 数据完整性约束机制 Oracle 数据库的完整性约束机制是防止无效的数据进入数据库的基表的重要手段。如果任何 DML 执行结果破坏完整性约束,该语句被回滚并返回一上个错误。Oracle 实现的完整性约束完全遵守 ...

    基于Client-Server数据完整性约束的实现技术.doc

    【基于Client-Server数据完整性约束的实现技术】 随着信息技术的发展,数据库管理系统(DBMS)已经从早期的分散计算模型进化到了现在的Client/Server计算模型。Client/Server模型是一种非对等架构,它允许客户端...

    第B章-索引与数据完整性约束优秀文档.ppt

    索引与数据完整性约束 索引是一种数据结构,旨在加速数据库检索的速度。索引可以看作是一个指针,指向数据库表中的特定数据。索引的主要类型有普通索引、唯一性索引、主键和全文索引。 5.1 索引的分类 目前大部分...

    第B章-MySQL索引与数据完整性约束优秀文档.ppt

    MySQL索引与数据完整性约束 MySQL索引是 MySQL 数据库中的一种数据结构,用于快速查找和检索数据。索引可以提高查询速度、减少磁盘I/O和提高数据库性能。MySQL索引可以分为几种类型,包括普通索引(INDEX)、唯一...

    创建数据库及关系表、数据完整性约束

    在本实验中,我们将探讨如何在SQL Server中创建数据库、关系表以及设置数据完整性约束。这涉及到数据库的基本操作,包括使用SQL语句来定义表结构、添加和修改字段、以及设置主键和外键约束。 首先,创建数据库的...

    MySQL 与SQL Server 数据完整性约束的比较教学.pdf

    标题:“MySQL与SQL Server 数据完整性约束的比较教学” 内容知识点: 1. 数据完整性概念:数据完整性是数据库中保证数据一致性和准确性的机制,目的是防止不符合规范的数据写入数据库。数据完整性包含实体完整性...

    实验一 创建数据库及关系表、数据完整性约束.doc

    "实验一 创建数据库及关系表、数据完整性约束" 这篇实验报告旨在让读者掌握 SQL Server 数据库管理系统的使用,创建数据库、关系表和数据完整性约束。实验报告分为六大部分,分别是创建数据库、创建关系表、修改表...

    基于MS SQL Server的MIS中数据完整性约束的分析与设计.pdf

    在探讨基于MS SQL Server的管理信息系统(MIS)中数据完整性约束的分析与设计时,首先要明确数据完整性的概念及其在数据库系统中的重要性。数据完整性约束指的是对数据库中数据的规则和限制,确保数据的正确性、一致性...

    《SQL Server》课程数据完整性约束的教学整体设计.pdf

    在教学设计方面,针对《SQL Server》课程中数据完整性约束的教学难点,可以通过成绩管理子模块的实例讲解,将复杂的内容系统化、条理化,帮助学生更好地理解和掌握数据完整性约束的相关知识点。通过这种方式,学生...

    论SQL Server构架数据完整性约束的实现技术.pdf

    数据完整性约束是定义关于列中允许值的规则,是强制完整性标准机制。SQL Server作为数据库管理系统,提供了多种数据完整性约束的实现技术,包括实体完整性、域完整性、引用完整性和用户定义完整性。 实体完整性确保...

    数据完整性约束.txt

    数据完整性约束.txt

    [精选]企业局域网的安全与运维Ⅱ_数据完整性约束.pptx

    数据完整性约束是数据库管理系统(DBMS)中用于确保数据正确性和相容性的机制,它防止了数据库中不合理数据的存储,从而提高了数据的可靠性。 首先,我们来看数据库完整性的概念。数据库完整性是指数据库中的数据...

    第5章 索引与数据完整性约束.ppt

    索引与数据完整性约束,这是学校数据库的重点 ,要好好学习啊 以后会对你的学校有用。

    企业局域网的安全与运维Ⅱ数据完整性约束.pptx

    数据完整性约束是实现这一目标的关键工具,主要包括以下几种类型: 1. **主键约束**:主键是数据库表中一个或一组字段,它们的值能唯一地标识表中的每一行,并且不允许为空。主键约束确保了数据的唯一性和不可变性...

    MySQL索引与数据完整性约束PPT教案学习.pptx

    MySQL索引与数据完整性约束PPT教案学习.pptx

    数据库中实现数据完整性约束的深入探讨

    数据库完整性约束是确保数据准确性和一致性的重要机制。通过实体完整性、参照完整性和用户定义完整性的实现,可以有效地维护数据的完整性。本文详细介绍了这些完整性约束的工作原理和代码实现,希望能够帮助读者更好...

    企业局域网的安全与运维Ⅱ_数据完整性约束.zip

    企业局域网的安全与运维Ⅱ_数据完整性约束.zip

    第7章MySQL表定义与完整性约束控制.docx

    本章主要介绍 MySQL 表定义和完整性约束控制的知识点,涵盖了数据类型、表结构设计、数据完整性约束、索引和视图等方面。 一、数据类型 MySQL 支持多种数据类型,包括数值类型、日期时间型、字符串类型、复合类型...

    《数据库应用实验》-数据完整性约束

    本实验主要目的是让参与者理解和掌握数据完整性的不同类型以及如何在实际操作中应用这些完整性约束。 首先,数据完整性分为三类:实体完整性、参照完整性和用户定义的完整性。实体完整性规定了表中的主键字段不允许...

Global site tag (gtag.js) - Google Analytics