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

2013-09-17 15:07
842人阅读
评论(0)
收藏
举报
本文章已收录于:

.embody{
padding:10px 10px 10px;
margin:0 -20px;
border-bottom:solid 1px #ededed;
}
.embody_b{
margin:0 ;
padding:10px 0;
}
.embody .embody_t,.embody .embody_c{
display: inline-block;
margin-right:10px;
}
.embody_t{
font-size: 12px;
color:#999;
}
.embody_c{
font-size: 12px;
}
.embody_c img,.embody_c em{
display: inline-block;
vertical-align: middle;
}
.embody_c img{
width:30px;
height:30px;
}
.embody_c em{
margin: 0 20px 0 10px;
color:#333;
font-style: normal;
}

oracle数据库的完整性约束规则详解
分类:

oracle开发SQL语句(273)
oracle数据库的完整性约束规则详解
oracle数据库的完整性约束规则详解

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

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



    Check

    NOT NULL

    Unique

    Primary

    Foreign key

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



ALTER TABLE table_name DISABLE CONSTRAINT constraint_name;

或 



ALTER TABLE policies DISABLE CONSTRAINT chk_gender

如果要重新启用约束: 



ALTER TABLE policies ENABLE CONSTRAINT chk_gender

删除约束: 



ALTER TABLE table_name DROP CONSTRAINT constraint_name

或 



ALTER TABLE policies DROP CONSTRAINT chk_gender;

Check 约束 

在数据列上Check 约束需要一个特殊的布尔条件或者将数据列设置成TRUE,至少一个数据列的值是NULL,Check约束用于增强表中数据内容的简单的商业规则。用户使用 Check约束保证数据规则的一致性。Check约束可以涉及该行同属Check约束的其他数据列但不能涉及其他行或其他表,或调用函数SYSDATE, UID,USER,USERENV。如果用户的商业规则需要这类的数据检查,那么可以使用触发器。Check约束不保护LOB数据类型的数据列和对象、嵌套表、VARRY、ref等。单一数据列可以有多个Check约束保护,一个Check约束可以保护多个数据列。创建表的Check约束使用CREATE
TABLE语句,更改表的约束使用ALTER TABLE语句。 

语法: 



CONSTRAINT [constraint_name] CHECK (condition);

Check约束可以被创建或增加为一个表约束,当Check约束保护多个数据列时,必须使用表约束语法。约束名是可选的并且如果这个名字不存在,那么oracle将产生一个以SYS_开始的唯一的名字。例: 



CREATE TABLE policies

(policy_id NUMBER,

holder_name VARCHAR2(40),

gender VARCHAR2(1) constraint chk_gender CHECK (gender in ('M','F'),

marital_status VARCHAR2(1),

date_of_birth DATE,

constraint chk_marital CHECK (marital_status in('S','M','D','W'))

);

NOT NULL约束 

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



CREATE TABLE policies

(policy_id NUMBER,

holder_name VARCHAR2(40) NOT NULL,

gender VARCHAR2(1),

marital_status VARCHAR2(1),

date_of_birth DATE NOT NULL

);

对于NOT NULL的ALTER TABLE语句与其他约束稍微有点不同。 



ALTER TABLE policies MODIFY holder_name NOT NULL

唯一性约束(Unique constraint) 

唯一性约束可以保护表中多个数据列,保证在保护的数据列中任何两行的数据都不相同。唯一性约束与表一起创建,在唯一性约束创建后,可以使用ALTER TABLE语句修改。语法: 



column_name data_type CONSTRAINT constraint_name UNIQUE

如果唯一性约束保护多个数据列,那么唯一性约束要作为表约束增加。语法如下: 



CONSTRAINT constraint_name (column) 

UNIQUE USING INDEX TABLESPACE 

(tablespace_name) STORAGE (stored clause)

0
0

我的同类文章

.blog-ass-articl dd {
color: #369;
width: 99%; /*修改行*/
float: left;
overflow: hidden;
font: normal normal 12px/23px "SimSun";
height: 23px;
margin: 0;
padding: 0 0 0 10px;
margin-right: 30px;
background: url(http://static.blog.csdn.net/skin/default/images/blog-dot-red3.gif) no-repeat 0 10px;
}

参考知识库

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

Oracle知识库

4358关注|252收录

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

MySQL知识库

20275关注|1446收录

更多资料请参考:
猜你在找



查看评论

  暂无评论

您还没有登录,请[登录][注册]
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

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

.tag_list
{
background: none repeat scroll 0 0 #FFFFFF;
border: 1px solid #D7CBC1;
color: #000000;
font-size: 12px;
line-height: 20px;
list-style: none outside none;
margin: 10px 2% 0 1%;
padding: 1px;
}
.tag_list h5
{
background: none repeat scroll 0 0 #E0DBD3;
color: #47381C;
font-size: 12px;
height: 24px;
line-height: 24px;
padding: 0 5px;
margin: 0;
}
.tag_list h5 a
{
color: #47381C;
}
.classify
{
margin: 10px 0;
padding: 4px 12px 8px;
}
.classify a
{
margin-right: 20px;
white-space: nowrap;
}

#popup_mask
{
position: absolute;
width: 100%;
height: 100%;
background: #000;
z-index: 9999;
left: 0px;
top: 0px;
opacity: 0.3;
filter: alpha(opacity=30);
display: none;
}

上一篇:MMON进程手工启动


下一篇:Types in Javascript(jQuery)