位置:首页 » 技术 » Oracle数据库的完整性约束规则详解

Oracle数据库的完整性约束规则详解

日期:2013-05-02 阅读:0num
Advertisement

Oracle数据库的完整性约束规则详解

约束简介:

约束用于确保数据库数据满足特定的商业逻辑或者企业规则,如果定义了约束,并且数据不符合约束,那么DML操作(INSERT、UPDATE、DELETE)将不能成功执行。

完整性约束用于增强数据的完整性,Oracle提供了5种完整性约束:

    Check

    NOT NULL

    Unique

    Primary

    Foreign key

完整性约束是一种规则,不占用任何数据库空间。完整性约束存在数据字典中,在执行SQL或PL/SQL期间使用。用户可以指明约束是启用的还是禁用的,当约束启用时,他增强了数据的完整性,否则,则反之,但约束始终存在于数据字典中。

* 如果某个约束只作用于单独的字段,即可以在字段级定义约束,也可以在表级定义约束,但如果某个约束作用于多个字段,必须在表级定义约束

* 在定义约束时可以通过CONSTRAINT关键字为约束命名,如果没有指定,ORACLE将自动为约束建立默认的名称

定义约束

列级约束:

column [CONSTRAINT constraint_name] constraint_type

表级约束:

column ,...,

[CONSTRAINT constraint_name] constraint_type (column,...)

check约束

* 在CHECK约束的表达式中必须引用到表中的一个或多个字段,并且表达式的计算结果必须是一个布尔值

* 可以在表级或字段级定义

* 对同一个字段可以定义多个CHECK约束,同时也可以定义NOT NULL约束

CREATE TABLE emp06(

eno INT,

name VARCHAR2(10),

salary NUMBER(6,2),

CHECK (salary BETWEEN 1000 AND 5000)

);

not null约束

只能在字段级定义NOT NULL约束,在同一个表中可以定义多个NOT NULL约束

NOT NULL约束应用在单一的数据列上,并且他保护的数据列必须要有数据值。缺省状况下,ORACLE允许任何列都可以有NULL值。某些商业规则要求某数据列必须要有值,NOT NULL约束将确保该列的所有数据行都有值。

CREATE TABLE emp01(

eno INT NOT NULL,

name VARCHAR2(10) CONSTRAINT nn_name2 NOT NULL, salary NUMBER(6,2)

);

unique约束

定义了UNIQUE约束的字段中不能包含重复值,可以为一个或多个字段定义UNIQUE约束,因此,UNIQUE即可以在字段级也可以在表级定义,在UNIQUED约束的字段上可以包含空值.

CREATE TABLE emp02(

eno INT UNIQUE,

name VARCHAR2(10) CONSTRAINT u_name UNIQUE,

salary NUMBER(6,2)

);

primary key约束

ORACLE自动会为具有PRIMARY KEY约束的字段(主码字段)建立一个唯一索引和一个NOT NULL约束,定义PRIMARY KEY约束时可以为它的索引,一张表最多只能具有一个主键约束

CREATE TABLE depto04(

dno INT PRIMARY KEY,

dname VARCHAR2(10),

loc VARCHAR2(20)

);

foreign key约束

* 定义为FOREIGN KEY约束的字段中只能包含相应的其它表中的引用码字段的值或者NULL值

* 可以为一个或者多个字段的组合定义FOREIGN KEY约束

* 定义了FOREIGN KEY约束的外部码字段和相应的引用码字段可以存在于同一个表中,这种情况称为"自引用"

* 对同一个字段可以同时定义FOREIGN KEY约束和NOT NULL约束

定义了FOREIGN KEY约束的字段称为"外部码字段",被FORGIEN KEY约束引用的字段称为"引用码字段",引用码必须是主码或唯一码,包含外部码的表称为子表,包含引用码的表称为父表.

CREATE TABLE emp04(

eno INT,

name VARCHAR2(10),

salary NUMBER(6,2),

dno INT CONSTRAINT fk_dno REFERENCES dept04(dno)

);

相关文章
  • Oracle数据库的完整性约束规则详解

    Oracle数据库的完整性约束规则详解 约束简介: 约束用于确保数据库数据满足特定的商业逻辑或者企业规则,如果定义了约束,并且数据不符合约束,那么DML操作(INSERT.UPDATE.DELETE)将不能成功执行. 完整性约束用于增强数据的完整性,Oracle提供了5种完整性约束: Check NOT NULL Unique Primary Foreign key 完整性约束是一种规则,不占用任何数据库空间.完整性约束存在数据字典中,在执行SQL或PL/SQL期间使用.用户可以指明约束是启用的

  • Oracle数据库过程之后台进程详解 Oracle数据库过程之后台进程详解

    Oracle数据库进程之后台进程详解 本文我们主要介绍一下Oracle数据库的后台进程的相关知识,我们知道,Oracle实例包括两部分:SGA 和一组后台进程.后台进程执行保证数据库运行所需的实际维护任务. 例如,有一个进程为我们维护块缓冲区缓存,根据需要将块写出到数据文件.另一个进程负责当在线重做日志文件写满时将它复制到一个归档目标.另外还有一个进程负责在异常中止进程后完成清理,等等.每个进程都专注于自己的任务,但是会与所有其他进程协同工作.例如,负责写日志文件的进程填满一个日志后转向下一个日

  • Oracle数据库中文件加密详解

    Oracle关系数据库系统以其卓越的性能获得了广泛的应用,而保证数据库的安全性是数据库管理工作的重要内容.本文是笔者在总结Oracle数据库安全管理工作的基础上,对Oracle数据库系统密码文件的创建.使用和维护作了详细的介绍,供大家参考. 在Oracle数据库系统中,用户如果要以特权用户身份登录Oracle数据库可以有两种身份验证的方法:即使用与操作系统集成的身份验证或使用 Oracle数据库的密码文件进行身份验证.因此,管理好密码文件,对于控制授权用户从远端或本机登录Oracle数据库系统,

  • oracle数据库的恢复教程详解 oracle数据库的恢复教程详解

    oracle数据库恢复方法与mysql和sqlserver的恢复是有一些区别了,它有着强大的功能了,下面我们来看看oracle数据库的恢复教程吧. racle其实也差不多,只不过oracle本身设计的安全性和稳定性都十分好.所以相应的配置文件也要多些. 1.先将原oracle的安装目录和data目录都做个备份.然后安装oracle,安装路径要和原来的一样.安装时选择'只安装软件'即可,不用选择安装数据库.例如:安装在E:oracleproduct10.2.0目录,会发现在该目录只有一个db_1目

  • oracle 数据库多表插入详解

    插入多表操作. 大部分插入操作是针对单表操作的.但是oracle支持多表插入(insert)语句 .在数据仓库方面的抽取.转移和装入(ETL,Extract Transform and Load)的例程方面方面你将频繁的用到多表插入操作. 通过一个多表插入,你能你可以通过一个单一的数据源,把数据装载到多个数据表里面.通过减少整个数据的路径,来减少减少工作量,因此去的更快的输出. 如果一个WHEN条件为真(TRUE),相关的INTO语句被执行.如果没有条件为真,为真,那么ELSE条款被执行.关键字

  • oracle数据库trunc函数用法详解

    trunc在mysql中清除表了,但在oralce数据库中trunc好像不是这样功能了而是对日期操作的一个常用函数了,下面我们来看trunc函数的用法. trunc函数作用是截取日期,能准确到整点.截取后得到的仍为date数据类型. 一.基本用法 1.默认截取到日,例如: select trunc(sysdate) from dual; 结果:2015-06-24 00:00:00 2.截取年: select trunc(sysdate,'YYYY') from dual; 结果:2015-01

  • Windows 下Oracle数据库装配以及Oracle SQL Developer(图文详解) Windows 下Oracle数据库装配以及Oracle SQL Developer(图文详解)

    Windows 下Oracle数据库安装以及Oracle SQL Developer(图文详解) 转载请注明:http://blog.csdn.net/uniquewonderq 问题:在windows下安装Oracle 数据库 步骤:通过网址"http://www.oracle.com"打开Oracle官网首页,点击Downloads进入Oracle 数据库的下载页面.如图所示: 点击进入:选择database 选择Oracle Database Express Edition 11

  • 同系统oracle rman异机数据库移植,oracle rman备份和恢复详解

    同系统oracle rman异机数据库移植,oracle rman备份和恢复详解 环境: 源服务器: VM7.14 rhel5.5-32 oracle 11.2.0.0g 172.16.3.202 目标服务器 VM7.14 rhel5.5-32 oracle 11.2.0.0g 172.16.3.204 源服务器 一.在数据库中加入验证表和数据: [[email protected] ~]$ sqlplus "/as sysdba" SQL*Plus: Release 11.2.0.1.0 Pr

  • oracle clusterware 10g/11g 过程详解

    oracle clusterware 10g/11g 进程详解  oracle clusterware 10g/11g 进程详解 The Oracle 10g Clusterware processes on UNIX-based systems are: Oracle Clusterware Oracle-provided clusterware that manages clusterdatabase processing including node membership, group

  • Oracle DBA学习笔记-STARTUP详解

    Oracle DBA学习笔记-STARTUP详解 说明:参考数据库版本:10.0.2 一.命令解析 STARTUP options | upgrade_options options为:[FORCE] [RESTRICT] [PFILE=filename] [QUIET] [ MOUNT [dbname] | [ OPEN [open_options] [dbname] ] | NOMOUNT ], NOMOUNT.MOUNT.OPEN为startup的三个阶段,不能在命令中同时存在.其中,op

  • Oracle数据库服务的相干知识详解-摘

    Oracle数据库服务的相关知识详解-摘 Oracle数据库的操作中,我们常常需要启动或关闭一些服务以实现我们需要的功能.但是前提是我们必须要了解Oracle数据库的服务,如果您对Oracle数据库的服务也不是很了解,没关系,本文我们就对Oracle数据库的服务进行了详细的介绍,接下来就让我们一起来了解一下这部分内容吧. Oracle的默认服务一共有5个: 1.OracleDBConsoleorcl oem控制台的服务进程. 2.OracleJobSchedulerORCL 定时器的服务进程.

  • oracle内存储器调优参数详解

    oracle内存调优参数详解 转自:http://www.douban.com/group/topic/16419241/ 实例结构 oracle实例=内存结构+进程结构 oracle实例启动的过程,其实就是oracle内存参数设置的值加载到内存中,并启动相应的后台进程进行相关的服务过程. 进程结构 oracle进程=服务器进程+用户进程 几个重要的后台进程: DBWR:数据写入进程. LGWR:日志写入进程. ARCH:归档进程. CKPT:检查点进程(日志切换:上一个检查点之后,又超过了指定

  • 9大Oracle性能优化基本方法详解(转)

    九大Oracle性能优化基本方法详解(转) Oracle性能优化基本方法包括一下几个步骤,包括: 1)设立合理的Oracle性能优化目标. 2)测量并记录当前的Oracle性能. 3)确定当前Oracle性能瓶颈(Oracle等待什么.哪些SQL语句是该等待事件的成分). 4)把等待事件记入跟踪文件. 5)确定当前的OS瓶颈. 6)优化所需的成分(应用程序.数据库.I/O.争用.OS等). 7)跟踪并实施更改控制过程. 8)测量并记录当前性能 9)重复步骤3到7,直到满足优化目标 下面来一一详述

  • ORACLE EXP/IMP的运用详解 ORACLE EXP/IMP的运用详解

    ORACLE EXP/IMP的使用详解 ORACLE EXP/IMP的使用详解 导入/导出是ORACLE幸存的最古老的两个命令行工具,其实我从来不认为Exp/Imp是一种好的备份方式,正确的说法是Exp/Imp只能是一个好的转储工具,特别是在小型数据库的转储,表空间的迁移,表的抽取,检测逻辑和物理冲突等中有不小的功劳.当然,我们也可以把它作为小型数据库的物理备份后的一个逻辑辅助备份,也是不错的建议.对于越来越大的数据库,特别是TB级数据库和越来越多数据仓库的出现,EXP/IMP越来越力不从心了,

  • Oracle中job的应用详解

    Oracle中job的使用详解 我们在项目开发中,常常会有一些复杂的业务逻辑.使用oracle的存储过程,可以大大减少java程序代码的编写工作量,而且存储过程执行在数据库上,这样可以利用oracle的良好性能支持,极大地提高程序执行效率和稳定性.定时执行存储过程,就要用到job. 以下是常用的参数说明: 字段(列) 类型 描述 JOB NUMBER 任务的唯一标示号 LOG_USER VARCHAR2(30) 提交任务的用户 PRIV_USER VARCHAR2(30) 赋予任务权限的用户 S

  • oracle init.ora惯用配置详解

    oracle init.ora常用配置详解 <!--正文 begin--> 参考网上整理了重要的配置文件 db_name = "51cto" 一个数据库标识符,应与CREATE DATABASE 语句中指定的名称相对应. instance_name = 51cto 在多个例程使用相同服务名的情况下,用来唯一地标识一个数据库例程. INSTANCE_NAME 不应与 SID 混淆,它实际上是对在一台主机上共享内存的各个例程的唯一标识. service_names = 51ct

  • 数据库题目整理及详解(三) 数据库题目整理及详解(三)

    前言 -李冠<蝶恋花·春暮> 遥夜亭皋闲信步. 才过清明,渐觉伤春暮. 数点雨声风约住.朦胧淡月云来去. 桃杏依稀香暗渡. 谁在秋千,笑里轻轻语. 一寸相思千万绪.人间没个安排处. 大早, 喜见枯草堆中顽强的四叶草: 说明 接着之前的SQL语句继续整理, 内容大多参考了互联网上的很多内容, 好多都相似, 结尾缀上出处, 感谢分享. 这一部分内容, 在mysql中也亲自测试了, 带有截图. 这一部分主要内容为:mysql数据库改变表结构相关的SQL语句, 在书写上的格式.规范及环境配置等,详见:

  • Oracle数据操作跟控制语言详解

    Oracle数据操作和控制语言详解 SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML, 数据定义语言DDL,数据控制语言DCL.其中用于定义数据的结构,比如 创建.修改或者删除数据库:DCL用于定义数据库用户的权限:在这篇文章中我将详细讲述这两种语言在Oracle中的使用方法. DML语言 DML是SQL的一个子集,主要用于修改数据,下表列出了ORACLE支持的DML语句. 语句 用途 INSERT 向表中添加行 UPDATE 更新存储在表中的数据 DELETE 删除行 SELEC

  • 红帽子数据库.profile文件内容详解

    红帽子数据库.profile文件内容详解 #User specific enviroment and startup programs TMP=/tmp; export TMP TMPDIR=$TMP; export TMPDIR umask 022 #ORACLE_HOSTNAME=dbs1; export ORACLE_HOSTNAME ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE ####基目录 ORACLE_HOME=$ORACLE_BA

  • 数据库同机器移植详解

    数据库同机器移植详解 背景,要腾出原理数据库所占的磁盘空间/hypdata,信息部给添加了一块另外的磁盘,目录为/hypdata47 要把目前/hypdata移植到到/hypdata47上. 1.备份 shutdown immedaite oracle数据库,备份控制文件到trace cd /hypdata/ tar -cvf cd /hypdata47/app20130526.rar app 备份数据库用户orahyp的.profile文件,cp .profile .profile201305

最新文章
  • 春季出游个性首选 热门独轮智能平衡车推荐 春季出游个性首选 热门独轮智能平衡车推荐

    文章评分 0 次,平均分 0.0 : 导语: 春节假期已经预示着春天的来临,很多人自然会将春季游园列为计划之内.在郊外游玩的时候,平衡车反而可以帮助我们到达一些汽车无法通行的地方.平衡车的优势之处在于让出行更加具有乐趣,在公园等场所中反而可以让你拥有更具个性的玩法. 春节假期已经预示着春天的来临,很多人自然会将春季游园列为计划之内.在郊外游玩的时候,平衡车反而可以帮助我们到达一些汽车无法通行的地方.平衡车的优势之处在于让出行更加具有乐趣,在公园等场所中反而可以让你拥有更具个性的玩法. 热门独轮智

  • 批量定做的一些夏衣,有兴趣的童鞋可以看下

    题记:其实是没衣服穿了...(被打飞 定做了一批T恤,选用尽可能舒适的底衣,然后简单印制一两个 Logo.可以作为日常穿的衣服,穿出去不会太显眼,如果是了解的人则可以一眼看到的效果. 联系的制作厂家是 bosiy,Arch 中文社区的衣服也是在这里制作的. 款式: Google+ Logo 黑色莱卡T恤 KanColle Logo 白色莱卡T恤 Ingress Logo + 启蒙军袖章 黑色莱卡T恤 Ingress Logo + 抵抗军袖章 黑色莱卡T恤 除了 KanColle 的 logo 只

  • Coursera的电子证书能被认可吗?或者说,有用吗?

    上面的不少课程感觉挺不错,修完之后有一个电子版的证书,不知道在多大程度上被认可呢? 或者只是留个纪念而已. --cut-- bcxx在2013-07-12 16:41:2回答到: 课程里面会有说是否被认可啊.不过大部分证书下面都会有一行 xxx 学校不能保证这份证书的真实性:也就是说不被认可(不能当作学分证明). 可以当作一个里程碑吧,也可以试试求职的时候用下?不过觉得这样的意义不算太大,倒是说明自己有过收获罢了. skyleft在2013-07-12 16:44:4回答到: @bcxx 谢谢,

  • QQ群推广技巧 QQ群推广技巧

    QQ是中国最大的在线即使交流平台,因此,若在QQ群推广上能下些功夫,其宣传效果是极其可观的.不过QQ群推广也不是随便发发信息就能胜任的,那么如何推广qq群?分享一些QQ群推广技巧,教大家如何推广qq群,以便于网站推广能够更好的进行. 1.加群按照网站所属行业搜索相关的行业关键词,搜索所有可能存在的QQ群,并加入进去,注意QQ号码的昵称,详细介绍等都要与QQ群吻合,加不同QQ群时可以变换着修改,这样保证可通过绝大部分QQ群主验证.只有这样才能保证宣传对象多为目标客户,否则只能是事倍功半.在添加qq

  • 《123D Creature》轻松完成3D建模 《123D Creature》轻松完成3D建模

    来自 Autodesk 公司的专业级 iPad 应用,以强大的 3D 建模功能著名,同时也对使用门槛和设备系统要求都颇高.但如果你是一位专业级用户,则可以轻松上手进行 3D 设计创作,免去以往在电脑上复杂的建模过程. <123D Creature>介绍: 类别:娱乐 大小:85.28MB 语言:英文 系统要求:与 iPad 兼容. 需要 iOS 6.0 或更高版本 测试机型:iPad3 一般来说在这种设计软件中,重要的不是如何设计或操作,这个小编也实在无法详细说明,关键是一个好的创意,只要你有

  • 嵌入式iframe子页面与父页面js通信的方法教程

    本文实例讲述了嵌入式iframe子页面与父页面js通信的方法.分享给大家供大家参考.具体分析如下: iframe框架中的页面与主页面之间的通信方式根据iframe中src属性是同域链接还是跨域链接,有明显不同的通信方式,同域下的数据交换和DOM元素互访就简单的多了,而跨域的则需要一些巧妙的方式来实现通信. 一.同域下父子页面的通信 父页面 parent.html: 代码如下: <html> <head> <script type="text/javascript&q

  • PowerPoint怎样让你嵌入的字体不会变形 PowerPoint怎样让你嵌入的字体不会变形

    1.点击"文件->另存为"命令. 2.在弹出的对话框中,单击右上角工具按钮旁边的小三角形,选择"保持选项(s)". 3.勾选"将字体嵌入文件",然后选择你想嵌入的方式,再保持文件就可以了. 温馨提示: PowerPoint提供了两种字体嵌入选项: 1.不完全嵌入--仅嵌入演示文稿中使用的字体,文件比较小,在任何电脑中都能正确预览字体,但缺乏其中某些字体的电脑智能观看,无法编辑. 2.完全嵌入--嵌入所有字体,文件会非常大,在任何电脑中都能观

  • 优必选造“阿尔法”机器人 促国人意识提升 优必选造“阿尔法”机器人 促国人意识提升

    2014年,中国工业在硅产业产销.钢铁工业和汽车消费上,再次提升.伴随第三次工业革命和中国产业结构调整转型,中国已悄然成为全球智能机器人的最大市场.2013年,中国市场共销售工业机器人近37000台,约占全球销量的五分之一,总量超日本成全球第一工业机器人市场. 图1:中国已成为世界最大的工业机器人应用国 但说到国人对机器人的关注,还要从9月下旬的一场球赛说起.当天一位国安球迷携带两台智能人形机器人到场外为支持球队呐喊助威,网民才开始对中国也具有这样的智能机器人技术产生了关注和好奇.据记者了解,曝

  • 连接Sybase8.0,请大家进来看一看。解决方案

    连接Sybase8.0,请大家进来看一看. 一个Delphi编写的服务器软件.它启动Sybase8.0数据库后,我使用vb编写测试连接,连接也成功,但是读不了数据,数据返回时空值.但是使用dbisqlc.exe启动数据库,使用同样的代码.连接又可以读数据.为什么会这样呢? 下面是我的代码, VB code Private Sub Form_Load() ListView1.ColumnHeaders.Add , , "商品名称", ListView1.Width / 2 ListVie

  • 实在觉得奇怪的有关问题,不知道什么原因了,问

    实在觉得奇怪的问题,不知道什么原因了,急问啊 我用JAVA 在做一个日期区间查询时出现问题,说是转换为datetime 时出现问题,然后异常抛个不停 下面是语句: String d1=year1+ '- '+month1+ '- '+day1;//得到组合框的内容 String d2=year2+ '- '+month2+ '- '+day2; SimpleDateFormat df = new SimpleDateFormat( "yyyy-mm-dd "); java.util.D

热门推荐
  • 立秋贴秋膘是什么意思 立秋贴秋膘是什么意思 立秋,民间素有"贴秋膘"一说,"民以食为天",立秋是一个很重要的节气,人们当然忘不了吃.所以北京.河北一带民间流行"贴秋膘".伏天人们胃口差,所以不少人都会瘦一些.清朝时,民间流行在数伏这天以悬秤称人(当然大多是称小孩),将体重与立夏时对比来检验肥瘦,体重减轻叫"苦夏".那时人们对健康的评判,往往只以胖瘦做标准.瘦了当然需要"补",弥补的办法就是到了立秋要"贴秋膘",吃味厚的美食佳肴,当
  • Excel2013如何取消图片自动压缩 Excel2013如何取消图片自动压缩 第一步,点击"文件" 第二步,点击"选项" 第三步,点击"高级",勾选"不压缩文件中的图像".设置完成之后,点击确认退出即可.
  • 简单三步帮你在线快速设计精美LOGO的神网站 简单三步帮你在线快速设计精美LOGO的神网站 编者按:朋友让你「随便」帮忙做个LOGO?来来来,这款神器绝对是设计师的福音!做出一个LOGO只要3步,打开网站,输入品牌名称,选择心仪的图片,一款颇有质感的LOGO立刻诞生了!以后让「帮个忙」的一律用这个,5分钟轻松搞定,记得收藏哟! 有时候想为自己的品牌或网站设计一个 Logo,但碍于没有太多预算,可能很多人会决定卷起袖子自己动手做,不过设计 Logo 形象并不是那么简单,除了要有对的工具外,还需要有点美感,做出来的图案才勉强算得上及格. 以往看过不少跟 Logo 设计相关的产生器,但做出来
  • 屎壳郎靠银河导航 23届搞笑诺贝尔奖颁发 屎壳郎靠银河导航 23届搞笑诺贝尔奖颁发 颁奖现场 研究称夜晚迷路的屎壳郎会借助银河找到回家的路 北京时间据国外媒体报道,今天清晨,一年一度的搞笑诺贝尔奖颁奖仪式在美国结束.照例有一批有趣的研究成果获得此项殊荣,其中包括研究发现那些认为自己已经喝醉酒的人也会同时认为自己变得更有吸引力,另一项研究则发现夜晚迷路的屎壳郎会借助银河找到回家的路. 今年颁出的是第23届搞笑诺贝尔奖,该奖项由科学幽默杂志 <不可思议研究年报>提供赞助,旨在颁发给那些古怪幽默,但却具有价值的科学发现.获奖者来自世界各地.在此间于哈佛大学举行的颁奖仪式上,由真正的