文档章节

oracle 完整性约束

sun-ing
 sun-ing
发布于 2015/05/18 22:12
字数 879
阅读 29
收藏 0

完整性的定义

    是为保证数据库中数据的正确性和一致性。

分类

   域完整性,实体完整性、参照完整性和用户定义完整性。

    1.实体完整性   指关系的主关键字不为空且不重复     

              primary key  主键

    2.域完整性 保证表中数据的合理性  

              check     检查

              default   默认

              not null  不为空

              unique    唯一约束

    3.参照完整性   指建立两个关系建立联系的主外键的约束

             foreign key  外键

    4.用户自定义完整性 除了上述关键字,可以使用触发器来编写约束

在创建表的时候添加约束

   示例1  创建一个学生信息表,学号为主键,姓名不为空,性别只能为男或女,年龄在6岁到34之间,家庭地      址默认为‘山东’, 

     create table student_info(

       stuid   number primary key,                 --只将stuid设为主键

       name    varchar(30) not null,               --学生姓名不可以为空

       sex     char(2) check(sex in( '男','女')),

       age     number(2) check(age between 6 and 34),

       loc     varchar(30) default '山东'

     );

     desc student;   --查看表的结构

    除了使用上面直接加在字段名之后的约束外,还可以使用约束子句  constraint

    约束子句的语法:CONSTRAINT [constraint_name] CHECK (condition);

   示例2 创建一个职工信息表,职工号为主键,职工姓名,性别为男或者女,年龄必须大于18,学历可以为             ‘高中’或‘大学’或‘无学历’。

      create table emp_info1(

        empid number,

        name varchar(30),

        sex char(2),

        age number(2),

        edu varchar(20),

        constraint chk_empid1 primary key(empid),          --主键约束,可以把多个字段设为主键

        constraint chk_sex1 check (sex in('女','男')),     --check约束

        constraint chk_age1 check (age>=18),              

        constraint chk_edu check (edu in ('高中','大学','无学历'))

        );

     备注:约束名不可以与其他表的约束名重复,不然会提示  ORA-02264: 名称已被一现有约束条件占用

           constraint子句可以写在字段名的后面。

           比如

               create table emp_info1(

               empid number  constraint chk_empid1 primary key,

               name varchar(30),

               sex char(2),

               age number(2) constraint chk_age1 check (age>=18)

               );

在创建完表后添加约束

    创建完 一学生表之后,给此表添加一些约束

stuid

 name age sex birthday

   create table stu(    --此表没有任何的约束

       stuid number,

       name  varchar(20),

       age number(2),

       sex char(2),

       birthday date

     );

示例3 给上面的表添加 主键约束  (把studi设为主键)

   alter table stu  add contraint pk_stuid primary key(stuid);

示例4 给上面的表添加 check约束  (插入的年龄必须大于19岁)

   alter table stu  add contraint chk_age check(age>19);

示例5 给上面的表添加 非空约束   (要求姓名不能为空值)--非空约束与其他的不一样

   alter table stu modify name not null;

示例6 给上面的表添加 唯一约束    (要求姓名不可重复)

   alter table stu add constraint uni_name unique(name);


外键约束   用来建立表和表之间联系

 学生表stu_info     学号 stuid,姓名 name,专业 major   

 成绩表score_info   编号 sno  ,学号stuid,科目 course,分数 score

 示例7 在创建表的时候添加外键约束

 create table score_info(

   sno number primary key,

   stuid number,

   course varchar(20),

   score number,

   constraint fk_stuid  foreign key(stuid)  references stu(stuid)  --设为外键,关联stu_info(stuid)

   );

 示例8 在创建完表后添加外键约束

    alter table score_info add  constraint fk_stuid  foreign key(stuid)  references stu(stuid);

禁用约束:

ALTER TABLE 表名 DISABLE CONSTRAINT  约束名;

启用约束:

ALTER TABLE 表名 ENABLE CONSTRAINT 约束名;

删除约束:

ALTER TABLE 表名 DROP CONSTRAINT 约束名;


本文转载自:http://blog.sina.com.cn/s/blog_78fc24750100ws93.html

共有 人打赏支持
sun-ing
粉丝 0
博文 15
码字总数 1934
作品 0
昌平
oracle 数据完整性

数据完整性分类 1. 域完整性 域完整性又称为列完整性,指定一个数据集对某一个列是否有效和确定是否允许空值。 2. 实体完整性 实体完整性也可称为行完整性,要求表中每一行有一个唯一的标识符...

122269875
2017/04/04
0
0
ORACLE支持五种类型的完整性约束

ORACLE支持五种类型的完整性约束 NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值. CHECK (检查)--检查在约束中指定的条件是否得到了满...

JackMo2015
2016/06/15
31
0
Oracle 约束详解

一 约束的定义 约束是强加在表上的规则或条件。确保数据库满足业务规则。保证数据的完整性。当对表进行DML或DDL操作时,如果此操作会造成表中的数据违反约束条件或规则的话,系统就会拒绝执行...

whshurk
01/03
0
0
Oracle数据库对象简介

Oracle数据库数据对象中最基本的是表和视图,其他还有约束、序列、函数、存储过程、包、触发器等。对数据库的操作可以基本归结为对数据对象的操作,理解和掌握Oracle数据库对象是学习Oracle的...

有些服务器
2015/12/12
49
0
浅谈数据库约束

国有国法 家有家规 其实很多时候技术和生活息息相关,怎样的需求就会有出来解决方案 数据库也是那么一个神奇的东西,毕竟是关系型数据库,数据独立而又可以表表关联,有时候就需要约束,在某些...

长路慢
01/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

获取多个集合列表的笛卡尔积

获取多个集合笛卡尔积 电商中典型业务场景:商品搜索 单属性属性值之间为并查询 不同属性的属性值之间查询为与查询 import java.util.ArrayList;import java.util.List;/** * Created w...

键走偏锋
24分钟前
0
0
echarts 迁移地图 控制鼠标缩放大小比例

在网上找了好久没有找到解决方式,还是重新看了一下文档,终于找到的解决方案, zoom:1, //默认显示级别 scaleLimit:{min:1,max:3}, // 缩放级别 echarts 文档-配置项链接 http://echarts.b...

心驰
28分钟前
0
0
Boot2Docker ISO is out-of-date,

Boot2Docker ISO is out-of-date, downloading the latest release. 使用docker-machine时无法更新Boot2Docker ISO导致创建vm machine失败 解决方法:关闭网络,创建好之后再开启...

writeademo
36分钟前
0
0
在 Tomcat 中设置 Tapestry 框架的 html 热加载

如果开发中使用到了 Tapestry 这个框架,如果事先没有设置过的话,开发的时候 html 是不会热加载的,也就是说修改了 html 文件,不能刷新浏览器后立马看到修改完的效果,必须先重新启动应用服...

LeoXu
58分钟前
0
0
【微服务】开启巨石应用到微服务的探索

背景 在过去的一年时间里,我一直在从事一件事情,将现有的单体应用(巨石应用)向微服务改造。 接下来,将持续整理一些在微服务路上的学习与成长。 为什么要做微服务 单体应用,开发、部署简...

艳沐石
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部