oracle-数据的完整性简介

1.  数据的完整性简介

就是正确性、准确性,包含三种:实体完整性、参照完整性、

用户自定义完整性。Oracle中主要通过约束、触发器、过程函数

实现的。 以下内容讲通过约束实现数据完整性。

举例两个表:

学生(学号,姓名,系编号)

系(系编号,系名称)

员工(编号,姓名,出生日期,工作日期)

那么:

学号是主键列,其值不能错误,如不能负值,这就是实体完整性;

系编号是外键,学生表的系编号参照系表,也就是说学生表的系编号的值必须在系表的系编号的值范围内【或者为空】,这就是参照完整性;

员工表的出生日期一定需要小宇工作日期,这就是用户自定义完整性。

2.  维护数据的完整性,有not null、unique、check、primary key、foreign key五种。

not null例如学生的姓名;unique例如学生的学号;primary key主键、foreign key外键、check可以按照用户要求,进行自动检查。

unique不可以重复,但是可以为空。

primary key不可以重复,也不能为空。

一个表只能一个primary key,却可以多个unique。

not null只能在列内定义,其他4种约束可以在列定义结束后,在表内定义。

not null示例(这里的not null约束由系统自动起名):

create table yg2(bh number(4) not null,xm varchar2(8));

check示例:

create table yg3(bh number(4) not null  check (bh>0  and  bh<10000),   xm varchar2(8));

unique示例:

create table yg4(部门号 number(4) not null, 部门内号  number(4) ,   xm varchar2(8) , unique(部门号,部门内号) );

default的使用

create table gz_新员工  (bh number(4),xm varchar2(8),gz number(10) default 1000 ); //适用于没有向列显式的指定数值的情况。

primary key示例(此列不允许为空,而且ORACLE会自动为主键列创建索引,这里的primary key约束由用户显式起名):

create table student(xh number(6)  constraint code_pk  primary key , xm varchar2(20));

foreign key示例(实现两个表之间参照与被参照的关系,外键只能取主键已经有的值,这里的foreign key由系统自动起名):

create table address (xh number(8) ,zz varchar2(50) , foreign key(xh) references student(xh));

试验primary key和foreign key约束:

insert into student values(1,‘张一‘);

insert into address values(1,‘郑州‘);

insert into address values(2,‘郑州‘);

(3)用户的约束在user_constraints表、和user_cons_columns表中

select * from user_constraints;

实践练习题目:

问题:

建立2个表,一个是StudentInformatino(学号sno,姓名

sname,年龄sage,性别smale,系编号

deptNo),一个是department(系编号deptno,

系名称deptname)。

要求:

每个表有主键。

StudentInformation表建立外键。

学生的姓名不能为空。

学生的年龄要在18到50之间。

学生的性别必须是男女之一,默认是男。

StudentInformation表的deptno列,要参照department表的

deptno列。

3.2 给已有的表添加约束:

除了添加not null需要使用modify命令,其他都是类似alter table tablename  add  CONSTRAINTS的方式。

上面例子,允许stuInfo中的姓名可以为空:alter table stuinfo modify sname null;

允许stuInfo中的姓名不能重复:alter table stuinfo  add constraints  sname_unique  unique(sname) ;

要求department的系名称列的内容,必须大于4个字符长度:alter table

department add constraints  deptName_check  check(length(deptName)>4);

3.3 删除约束:

alter table 表名 drop constraint 约束名;

alter table department drop constraint deptName_check;  -- 删除刚才建立的department表上的deptName_check 约束

删除主键语句:alter table 表名 drop primary key;

如果出错:ORA-02273: 此唯一/主键已被某些外键引用,可以:alter table department drop primary key cascade;

如果删除一个主键被引用的表,可以:drop table 表名 cascade constraints;

oracle-数据的完整性简介,布布扣,bubuko.com

时间: 2025-01-14 09:24:28

oracle-数据的完整性简介的相关文章

Oracle 数据集成的实际解决方案

就针对市场与企业的发展的需求,Oracle公司提供了一个相对统一的关于企业级的实时数据解决方案,即Oracle数据集成的解决方案.以下的文章主要是对其解决方案的具体描述,望你会有所收获. Oracle 数据集成解决方案 Oracle数据集成解决方案用于在SOA.BI和数据仓库环境中构建.部署和管理以实时数据为中心的架构,包含了Oracle数据集成的所有要素--实时数据移动.转换.同步.数据质量.数据管理和数据服务--能确保各个复杂系统的信息及时.准确.一致. 通过使用Oracle数据集成,企业将

Oracle中PL/SQL简介、基本语法以及数据类型

Oracle中PL/SQL简介.基本语法以及数据类型 一.PL/SQL简介. Oracle PL/SQL语言(Procedural Language/SQL)是结合了结构化查询和Oracle自身过程控制为一体的强大语言,PL/SQL不但支持更多的数据类型,拥有自身的变量申明,赋值语句,而且还有条件,循环等流程控制语句.过程控制结构与SQL数据处理能力无缝的结合形成了强大的编程语言,可以创建过程和函数以及程序包. PL/SQL是一种块结构的语言,它将一组语句放在一个块中,一次性的发送给服务器,由服

Oracle官网JNI简介和接口函数分析

第一章 概述 本章主要介绍JNI(Java Native Interface),JNI是一种本地编程接口.它允许运行在JAVA虚拟机中的JAVA代码和用其他编程语言,诸如C语言.C++.汇编,写的应用和库之间的交互操作. JNI的最大优势在于没有强加任何限制在JAVA虚拟机的下层实现上,因此,JAVA虚拟机供应商能够提供JNI的支持而不影响虚拟机的其他部分,程序员只需写出一个版本的本地应用和库,就可使之运行在一切支持JNI的JAVA虚拟机上. 本章包含了以下的要点: ? JNI概述 ? 目标 ?

setAutoCommmit保持数据的完整性

setAutoCommit总的来说就是保持数据的完整性,一个系统的更新操作可能要涉及多张表,需多个SQL语句进行操作 循环里连续的进行插入操作,如果你在开始时设置了:conn.setAutoCommit(false); 最后才进行conn.commit(),这样你即使插入的时候报错,修改的内容也不会提交到数据库, 而如果你没有手动的进行setAutoCommit(false); 出错时就会造成,前几条插入,后几条没有 会形成脏数据~~ setAutoCommit(false)的误用 (设定set

Oracle数据导入导出命令

IMP 和EXP命令 Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中. 利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用. 执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行,DOS中可以执行时由于在oracle 8i中安装目录\ora81\BIN被设置为全局路径,该目录下有EXP.EXE与IMP.EXE文件被用来执

ORACLE数据高可用之路

这篇是计算机中Oracle类的优质预售推荐>>>><ORACLE数据高可用之路> 编辑推荐 本书特别适合Oracle中高级系统管理人员.应用开发人员阅读,同时对关心服务器技术.关注数据高可用性与数据安全的企业技术人员.相关IT专业的高校教师和研究生也有重要的参考价值. 内容简介 现代数据服务面临的两大问题是数据保障和不间断服务,即数据服务的高可用性(High Availability).本书论述Oracle在此方面的两类解决方案:数据卫士(Data Guard)和数据集

Oracle数据导入导出基本操作示例

Oracle数据导入导出基本操作示例 数据导出 a.将数据库orcl完全导出,用户名user 密码password 导出到D:\dc.dmp中 exp user/[email protected]   file=d:\dc.dmp    full=y full=y   表示全库导出 b.将数据库中user1和user2用户导出 exp user/[email protected]  file=d:\dc.dmp    owner=(user1,user2) full方式可以备份所有用户的数据库对

VS2015操作Oracle数据需要做那些设置?

1>在oracle网上下载:ODP.NET 2> 要根据自己的oracle 数据32bit/64bit,选择下载. 3> 根据提示配置tnsnames.ora文件. # alias = # (DESCRIPTION = # (ADDRESS = (PROTOCOL = TCP)(HOST =localhost)(PORT = 1521)) # (CONNECT_DATA = # (SERVER = DEDICATED) # (SERVICE_NAME = orcl) # ) # ) al

Oracle 数据操作提示“记录被另一个用户锁住”

oracle数据中删除数据时提示“记录被另一个用户锁住” 解决方法: 1.查看数据库锁,诊断锁的来源及类型: select object_id,session_id,locked_mode from v$locked_object; 或者用以下命令: select b.owner,b.object_name,l.session_id,l.locked_mode from v$locked_object l, dba_objects b where b.object_id=l.object_id