oracle 完整性约束
博客专区 > sun-ing 的博客 > 博客详情
oracle 完整性约束
sun-ing 发表于3年前
oracle 完整性约束
  • 发表于 3年前
  • 阅读 21
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

摘要: 实体完整性 参照完整性 域完整性 约束条件

完整性的定义

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

分类

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

    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 约束名;


共有 人打赏支持
粉丝 0
博文 14
码字总数 1934
×
sun-ing
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: