Oracle数据库学习笔记 您所在的位置:网站首页 stsys Oracle数据库学习笔记

Oracle数据库学习笔记

2024-07-15 15:44| 来源: 网络整理| 查看: 265

复习: 数据库的特性: 共享性 独立性 完整性 减少数据冗余

数据完整性概述

数据完整性规则通过约束来实现,约束是在表上强制执行的一些数据校验规则,在插入、修改或者删除数据时必须符合在相关字段上设置的这些规则,否则报错。

Oracle使用完整性约束机制以防止无效的数据进入数据库的基表,如果一个DML语句执行结果破坏完整性约束,就会回滚语句并返回一个错误。通过完整性约束实现数据完整性规则有以下优点: ●完整性规则定义在表上,存储在数据字典中,应用程序的任何数据都必须遵守表的完整性约束。 ●当定义或修改完整性约束时,不需要额外编程。 ●用户可指定完整性约束是启用或禁用。 ●当由完整性约束所实施的事务规则改变时,只需改变完整性约束的定义,所有应用自动地遵守所修改的约束。

数据完整性一般包括域完整性、实体完整性、参照完整性,用户定义完整性,下面分别进行介绍。

1.域完整性

域完整性指列数据输入的有效性,又称列完整性,通过CHECK约束、DEFALUT约束、NOT NULL约束、数据类型和规则等实现域完整性。

CHECK约束通过显示输入到列中的值来实现域完整性 例如:对于stsys数据库score表,grade规定为0分到100分之间,可用CHECK约束表示。

2.实体完整性

实体完整性要求表中有一个主键,其值不能为空且能唯一地标识对应的记录,又称为行完整性,通过PRIMARY KEY约束、UNIQUE约束、索引或 IDENTITY 属性等实现数据的实体完整性。

例如,对于stsys数据库中student表,sno列作为主键,每一个学生的sno列能唯一地标识该学生对应的行记录信息,通过sno列建立主键约束实现student表的实体完整性。

实体完整性也就是行完整性,通过设置主键,保证数据唯一且非空 UNIQUE约束保证数据非空 索引:通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 IDENTITY属性:唯一标识一行

3.参照完整性

参照完整性保证主表中的数据与从表中数据的一致性,又称为引用完整性,参照完整性确保键值在所有表中一致,通过定义主键(PRIMARY KEY)与外键(FOREIGN KEY)之间的对应关系实现参照完整性。

主键(PRIMARY KEY):表中能唯一标识每个数据行的一个或多个列。外键(FOREIGN KEY):一个表中的一个或多个列的组合是另一个表的主键。

例如,将student表作为主表,表中的sno列作为主键,score表作为从表,表中的sno列作为外键,从而建立主表与从表之间的联系实现参照完整性,student表和score表的对应关系如下图所示。 在这里插入图片描述

如果定义了两个表之间的参照完整性,则要求:

从表不能引用不存在的键值。

如果主表中的键值更改了,那么在整个数据库中,对从表中该键值的所有引用要进行一致的更改。

如果要删除主表中的某一记录,应先删除从表中与该记录匹配的相关记录。(删除的时候先删从表的再删主表的,增加的时候先加主表的再加从表的)

总括起来, Oracle数据库中的数据完整性包括域完整性、实体完整性、参照完整性,和实现上述完整性的约束,其中:

CHECK约束,检查约束,实现域完整性。

NOT NULL约束,非空约束,实现域完整性。

PRIMARY KEY约束,主键约束,实现实体完整性。

UNIQUE KEY约束,唯一性约束,实现实体完整性。

FOREIGN KEY约束,外键约束,实现参照完整性。

域完整性

域完整性通过CHECK约束实现,CHECK约束对输入列或整个表中的值设置检查条件,以限制输入值,保证数据库的数据完整性。下面介绍通过CHECK约束实现域完整性。

使用SQL Developer 实现域完整性 1.使用SQL Developer创建CHECK约束

【例】使用SQL Developer,在stsys数据库student表的ssex列,创建一个性别为男或女的CHECK约束CK_ssex。

(1)启动”SQL Developer”,在”连接”节点下打开数据库连接”sys_stsys”,展开“表”节点,选中表“student”,单击鼠标右键,在弹出的快捷菜单中选择”约束条件”→“添加检查”命令,出现如图所示的“添加检查”窗口中,在“约束条件名称”栏输入约束名称CK_ssex,在“检查条件”栏输入相应的CHECK约束表达式为ssex in (‘男’, ‘女’)。

在这里插入图片描述 (2)单击“应用”按钮,完成“CHECK约束”的创建。

2.使用SQL Developer修改或删除CHECK约束

【例】使用SQL Developer,修改或删除创建的CHECK约束CK_ssex。

(1)启动”SQL Developer”,在”连接”节点下打开数据库连接”sys_stsys”,展开“表”节点,选中表“student”,单击鼠标右键,在弹出的快捷菜单中选择”编辑”命令,出现“编辑表”窗口,如图所示。

(2)在“编辑表”窗口中,单击“添加”按钮,可以添加一个检查约束;单击“删除”按钮,可以删除一个检查约束;在选择一个检查约束后,可在“名称”栏中修改名称,在“条件”栏修改相应的检查约束表达式。

(3)单击“确定”按钮,完成上述“CHECK约束”的添加、删除或修改。

在这里插入图片描述

使用PL/SQL语句实现域完整性 1.使用PL/SQL语句在创建表时创建CHECK约束—CONSTRAINT

使用PL/SQL语句在创建表时创建CHECK约束有作为列的约束或作为表的约束两种方式。

语法格式:

CREATE TABLE ( [DEFAULT ] [NOT NULL | NULL] [CONSTRAINT ] CHECK() /*定义为列的约束*/ [,…n] [CONSTRAINT ] CHECK() /*定义为表的约束*/ )

其中,CONSTRAINT关键字为CHECK约束定义名称,CHECK约束表达式为逻辑表达式。

【例1】在stsys数据库中创建表goods2,包含以下域完整性定义

CREATE TABLE goods2 ( gid char(6) NOT NULL PRIMARY KEY, /*商品号*/ gname char(20) NOT NULL, /*商品名*/ gclass char(6) NOT NULL, /*类型*/ price number NOT NULL CHECK(pricePRIMARY KEY | UNIQUE}(,[,…n]) ] /*在所有列定义完毕后定义约束名和约束类型*/ )

说明: ● PRIMARY KEY | UNIQUE:定义约束类型,PRIMARY KEY为主键,UNIQUE为唯一键。 ● 可以在某一列后面定义PRIMARY KEY约束和UNIQUE约束,也可以在所有列定义完毕后定义PRIMARY KEY约束和UNIQUE约束,但要提供要定义约束的列或列的组合。

【例】对stsys数据库中goods3表的商品号列创建PRIMARY KEY约束,对商品名称列创建UNIQUE约束。

CREATE TABLE goods3 ( gid char(6) NOT NULL CONSTRAINT PK_gid PRIMARY KEY, gname char(20) NOT NULL CONSTRAINT UK_gname UNIQUE, gclass char(6) NOT NULL, price number NOT NULL CONSTRAINT CK_price CHECK(price


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有