`
孔雀王子
  • 浏览: 42208 次
  • 性别: Icon_minigender_1
  • 来自: 河北
文章分类
社区版块
存档分类
最新评论

Oracle数据库管理、应用与开发(十三)

阅读更多

十九、数据完整性

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

为了维护数据库中的数据完成性,在创建表时通常需要指定一些约束。通过表中的字段()定义约束,就可以防止非法数据的插入问题,对约束的定义可以再create table语句中进行,也可以在alter table语句中进行。

19.1 什么是约束呢?

约束是表级的强制规定。根据约束的作用域,约束又可分为表级约束和列级约束两种。

列级约束是指是字段定义的一部分,只能够应用在一个列上。

表级约束是指独立于列的定义,可以应用于一个表中的多个列上。

oracle系统中定义约束时,通过constraint关键字为约束命名,如果用户没有为约束指定名称,系统会自动建立默认的名称。

19.2 小结

作用范围:列级约束只能作用在一个列上,而表约束可以作用在多个列上(当然表约束也可以作用在一个列上)。

定义方式:列约束必须跟在列的定义里后面,表约束不与列一起,而是单独定义。

非空(not null) 约束只能定义在列上.

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

19.2.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, ...),

19.2.2 约束的分类

NOT NULL

UNIQUE

PRIMARY KEY

FOREIGN KEY

CHECK

Not null特点如下:

为字段定义not null 约束后,该字段不能为null

Not Null约束只能在列级定义

在定义一个表中可以有多个not Null

unique 特点如下:

如果为字段定义了unique约束,该字段不能够包含重复值

unique约束既可以在列级定义,也可以在表级定义。

oracle系统中被定义的unique约束会自动建立一个唯一的索引。

同一个字段既可以在其上定义为not null 也可以建立unique约束,(为某个字段可以添加多个约束),注意:如果在一个字段仅定义了unique约束,则该字段可以包含多个null

           Unique主要的目的是:是在保证主键列外,其它列的唯一性。

primary key特点如下:

定义为primary key的字段或字段组中不能包含重复值,并且不能为null.(即满足唯一性,不能为空)

在一个表中只能定义一个primary key的约束

Oracle会自动为具有primarykey约束的字段添加一个唯一的索引,以及一个not null约束

foreign key特点如下:

被定义了foreign key约束的字段的取值只能为相关表中引用的字段的值或null值。

foreign key约束既可以在列级定义,也可以在表级定义。

定义了foreign key约束的外键字段和被引用的主键字段可以在同一张表中,这种情况称为:’自引用’(构成了自关联关系)

对于同一个字段可以同时定义为foreign key约束和not null约束。

注意:外键的类型、尺寸等一定要与主键完全一致。

oracle中级联删除有如下三值:

no action 在删除一方的情况下,对多方不进行任何操作.(不能删,删的情况会出现, 违反完整约束条件的异常信息)

cascade 在删除一方的时,会把多方所有与1方关联的数据删除掉。

set null 在删除一方的时,会把多方所有与1方关联的数据的字段值设置为null(注意:该字段必须允许为null 否则的话会出现无法更新*** NULL)

check check约束是所有约束中最灵活的约束,也是最复杂的约束,check约束检查输入到表中的数据值来维护域的完整性,即检查输入的每一个数据,只有符合条件的数据才允许输入到表中.check约束有如下特点:

check约束的表达式中,必须引用表中一个或多个字段,并且表达式的运算结果必须是一个布尔值。

           Check约束即可以在列级定义,也可以在表级定义

           对于同一个字段可以定义多个check约束,而且对于同一个字段可以定义check约束和not null约束。

19.3 综合案例:

       学生信息表

           姓名、密码、电话、邮箱、家庭住址

       教师信息表

           教师名称、教师性别、教师职务、教师年龄

      _______________________________________________________

分析:满足1NF范式(属性不可再分)

             满足2NF范式(非主属性必须完全依赖于任一候选键)

             姓名   密码、用户电话、用户邮箱、家庭住址

Stusname,stel,semail,saddress

           学生姓名-教师名

           教师名   用户名

              stearsid,tname,sname

教师名称     教师性别、教师职务、教师年龄

Teachertname,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;

 

分享到:
评论

相关推荐

    Oracle数据库系统应用与开发

    Oracle数据库系统是全球广泛使用的...通过深入学习“Oracle数据库系统应用与开发”,无论是初学者还是经验丰富的开发者,都能增强对Oracle数据库的理解,提升开发和管理能力,为实际项目中的高效数据处理打下坚实基础。

    oracle数据库系统应用与开发

    对于初学者来说,理解Oracle数据库系统应用与开发的基础至关重要,这将帮助他们掌握数据库的核心概念,从而在IT行业中建立稳固的基础。 一、Oracle数据库系统概述 Oracle数据库系统是Oracle公司开发的,它采用SQL...

    oracle 数据库管理与应用系统开发代码

    Oracle数据库管理系统是全球广泛使用的大型关系型数据库系统...以上只是Oracle数据库管理与应用系统开发的一部分知识,实际操作中还需要结合具体场景和需求,灵活运用各种工具和技术,以确保系统的稳定运行和高效开发。

    oracle 数据库的应用开发

    oracle 数据库的应用开发 oracle 数据库的应用开发

    Oracle 10g数据库管理、应用与开发标准教程

    由浅入深地介绍了Oracle 10g系统的使用方法和基本管理。...本书全面介绍使用Oracle数据库管理应用与开发知识,适合作为普通高校计算机专业Oracle教材,也可以作为Oracle数据库开发和应用人员的参考资料。

    Oracle 11g中文版数据库管理、应用与开发标准教程

    Oracle 11g中文版数据库管理、应用与开发标准教程

    Oracle数据库的应用开发 Oracle数据库的应用开发.ppt

    Oracle数据库在应用开发中扮演着至关重要的角色,它是一个强大且广泛使用的数据库管理系统,尤其适合企业级的数据存储和处理。本教程将深入讲解如何基于Oracle数据库进行应用开发,包括数据库设计的方法、人事管理...

    Oracle数据库应用与开发

    本课程“Oracle数据库应用与开发”旨在帮助学生深入理解和掌握Oracle数据库的相关知识,包括其基本概念、架构、SQL语言、数据管理、性能优化及应用程序开发等。 一、Oracle数据库基础 Oracle数据库系统基于客户-...

    Oracle数据库应用与开发实例教程

    体验数据库的应用→认识 Oracle的工作环境、体验Oracle 10g环境中常用工具操作→数据库的创建与管理→数据表的创建与管理→管理视图→SQL编程语言→PL/SQL编程语言→管理PLSQL存储过程与触发器 →管理安全性→数据库...

    Oracle数据库应用开发及实践.rar

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其在企业级应用中占据着重要的地位...从数据库设计、SQL编程、PL/SQL开发,到事务处理、安全管理以及备份恢复,全方位覆盖了Oracle数据库应用开发的各个方面。

    Oracle10g数据库管理与应用系统开发光盘

    Oracle10g数据库管理系统是Oracle公司推出的一款强大的关系型数据库管理系统,主要应用于企业级的数据存储、管理和分析。...通过学习和掌握这些内容,可以有效地管理和开发高效、稳定、安全的Oracle数据库应用系统。

    Oracle 数据库管理与应用系统开发

    Oracle 数据库管理与应用系统开发: Oracle编程 创建存储过程 创建自定义类型 使用存储过程和函数 创建存储过程 创建函数 使用触发器和作业 创建触发器 创建序列等 跟踪和调试 创建存储过程 创建...

    Oracle数据库应用与开发实例教程[吴海波主编][电子教案]

    吴海波主编的《Oracle数据库应用与开发实例教程》是一本深入浅出的教材,旨在帮助学习者掌握Oracle数据库的使用和开发技巧。本教程结合实际案例,提供了丰富的学习材料,对于学生和专业人士来说都是宝贵的参考资料。...

    Oracle数据库的开发与应用培训.doc

    Oracle数据库的开发与应用培训

    Oracle数据库应用与开发案例教程

    《Oracle数据库应用与开发案例教程》是一本专为学习Oracle数据库应用与开发的读者精心编写的教材。本书深入浅出地介绍了Oracle数据库的基础知识、管理技巧以及开发实践,旨在帮助读者掌握Oracle数据库的核心技术和...

    ORACLe数据库管理员教程

    Oracle数据库管理员教程旨在帮助读者...通过阅读指定的参考书籍,如《ORACLE数据库系统基础》、《数据库管理及应用开发》和《ORACLE数据库管理员教程》,可以深入理解Oracle数据库管理的各个方面,提升DBA的专业技能。

Global site tag (gtag.js) - Google Analytics