`
zpx138332
  • 浏览: 46160 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类

oracle基础总结(六)

阅读更多

数据完整性

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

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

 

什么是约束呢?

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

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

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

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

 

总结:

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

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

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

 

 

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

 

定义约束的语法格式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范式(非主属性必须完全依赖于任一候选键)

     用户名->用户密码,用户电话,用户邮箱,用户地址.

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的基础知识、安装步骤以及SQL查询语句进行详尽的阐述。 首先,新安装的Oracle数据库的配置步骤至关重要。在安装完成后,需要通过Database Configuration Assistant(DBCA)...

    oracle 基础知识总结初学者必备

    ### Oracle基础知识总结初学者必备 Oracle数据库作为一款广泛使用的数据库管理系统,在企业和开发领域扮演着重要的角色。对于初学者而言,掌握其基础知识是非常必要的。本文将根据提供的内容进行深入解析,并结合...

    Oracle核心基础总结

    "Oracle核心基础总结"涵盖了Oracle数据库系统的基础知识,对于初学者和需要巩固基础的IT从业者来说,是非常宝贵的资源。以下是Oracle核心基础的一些关键知识点: 1. 数据库概念:了解数据库的基本构成,如表、索引...

    oracle基础总结

    系统的总结了oracle的基础知识,对oracle基础想补充的朋友应该很有帮助,语言简练,都是开发时常用到的知识

    oracle基础命令总结.docx

    以下是对文档中提到的Oracle基础命令的详细解释: 1. **数据泵语句**:Oracle数据泵(Data Pump)是一种高速数据传输机制,用于在数据库之间导入和导出数据。创建目录对象是为了指定数据泵操作的数据文件存放位置。...

    Oracle 基础知识总结

    以下是对Oracle基础知识的详细总结: 第一章:Oracle概述 Oracle数据库是Oracle公司的产品,提供了一整套数据管理解决方案。它支持多种操作系统平台,如Windows、Linux、Unix等。Oracle采用SQL作为查询语言,并提供...

    oracle 学习心得与总结

    以下是我对Oracle学习的一些心得和总结,主要聚焦于数据库对象,尤其是表及其约束。 1. **数据库对象**: 数据库对象是Oracle中的基本组成部分,包括表、视图、索引、存储过程、函数、触发器等。这些对象共同构成...

    oracle学习总结(适合刚学习oracle的人)

    本文将根据"oracle学习总结(适合刚学习oracle的人)"这一主题,深入探讨Oracle数据库的基础知识,帮助初学者建立起对Oracle的基本理解。 1. **Oracle简介**:Oracle数据库是由美国甲骨文公司开发的一款产品,它...

    oracle总结oracle总结面试必备

    掌握SQL的基础语法,如SELECT、INSERT、UPDATE、DELETE语句,以及联接(JOIN)、子查询、聚合函数(COUNT、SUM、AVG等)和分组(GROUP BY)等,是每个Oracle开发者的基本功。 二、创建表 创建表是数据库设计的第一...

    oracle 笔记总结

    一、Oracle数据库基础 Oracle数据库采用SQL(结构化查询语言)作为其主要的数据交互方式,支持ACID(原子性、一致性、隔离性和持久性)事务特性,确保数据的完整性和一致性。Oracle数据库系统由多个组件构成,包括...

    oracle个人总结的基础知识

    本总结将深入探讨Oracle基础知识,包括过程、游标、包、视图以及导入导出等关键概念。 首先,让我们关注“过程”。在Oracle中,过程是一系列SQL语句和PL/SQL代码的集合,它们可以执行特定任务。过程可以接受参数,...

    oracle学习心得总结

    本文将根据提供的文档内容,总结和扩展Oracle数据库的基础知识点,帮助初级程序员更好地理解和掌握Oracle。 #### 一、Oracle 用户管理 1. **创建用户** - 命令格式:`CREATE USER 用户名 IDENTIFIED BY 密码;` ...

    oracle数据库基础命令总结(纯手工打造)

    本文将深入讲解Oracle数据库的基础命令,涵盖数据库的基本概念、关系数据库模型、数据操作语言(DDL、DML、DCL)以及数据库设计方法。 首先,理解数据库基础至关重要。数据库是一个组织和存储数据的系统,它允许...

    oracle精品实例,练习总结

    1. **SQL语言**:Oracle数据库的基础是SQL(结构化查询语言),用于数据查询、更新、插入和删除。在实例中,我们可能看到如何使用SELECT语句进行复杂查询,JOIN操作连接多个表,以及如何使用WHERE子句进行条件筛选。...

    Oracle基础知识总结_oracle_

    Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性...

    oracle 基础知识整理

    总结,Oracle基础知识涵盖了数据库架构、数据类型、SQL操作、表空间管理以及备份恢复策略等多个方面。掌握这些基础知识对于理解和使用Oracle数据库至关重要,有助于构建高效稳定的企业级数据环境。

    oracle个人总结

    Oracle数据库是世界上最广泛使用的数据库管理系统之一,主要用于存储和管理...这些是Oracle数据库的基础知识,对于理解和操作Oracle数据库至关重要。通过深入学习和实践,可以更好地掌握Oracle的各种特性和高级功能。

    oraclePPT总结及笔记

    本资料“oraclePPT总结及笔记”是针对青软实训的学员们设计的一套全面的学习资源,旨在帮助他们深入理解和掌握Oracle数据库的相关知识。以下是基于这个主题的详细知识点讲解: 1. **Oracle数据库基础**: - 数据库...

    oracle学习总结

    ### Oracle学习总结 #### SQL基础语法 1. **数据定义语言(DDL)** - **创建表**:`CREATE TABLE table_name (column_name datatype constraints,...);` - `NOT NULL`:指定列不允许有空值。 - `UNIQUE`:指定列...

Global site tag (gtag.js) - Google Analytics