zoukankan      html  css  js  c++  java
  • oracle之完整性约束

    oracle之完整性约束

     数据库中的完整性约束有:

      1.主键约束(Primary)
      2.唯一约束(unique)
      3.检查约束(check)
      4.非空约束(not null)   --属于检查约束
      5.外键约束(foreign key)

    首先先建一个学生表:

    create table t_student_con(
        f_id int,
        f_name varchar2(30),
        f_sex char(2),
        f_age int,
        f_birth date default sysdate
    );
    --添加一个字段
    alter table t_student_con
    add f_email varchar2(30);

     1、主键约束:添加了主键约束的字段不能为null,且会自动添加唯一约束。

    --添加一个主键约束
    alter table t_student_con
    add constraint pk_std_id primary key (f_id);

     2、唯一约束:添加了唯一约束的字段的值是唯一的,不能有重复。

    --添加一个唯一约束
    alter table t_student_con 
    add constraint uq_std_name unique(f_name);

    3、检查约束:可以自定义数据的完整性,保证字段的数据不存在约束条件之外的数据。

    --添加检查约束
    alter table t_student_con 
    add constraint ck_std_sex check(f_sex='M' or f_sex='F')

    4、非空约束:有非空约束的字段,值不能为空或者插入null值。

    --非空约束是检查约束的一种,这种添加方法不是很常用
    alter table t_student_con
    add constraint nnull_std_email check( f_email is not null);
    --我们一般会以修改表字段的方法来添加非空约束
    alter table t_student_con modify(f_email varchar2(30) not null);

    5、外键约束:若表之间存在联系,则建立外键约束可保证数据的完整性和规范性。

    首先建立一个考试信息表:

    create table t_student_exam(
           e_id int,--主键
           e_subject varchar2(30),--科目
           e_score number(5,2),--分数
           f_id int--学员信息的外键
    );

    下面为该表添加主键和外键:

    --添加主键
    alter table t_student_exam add constraint pk_exam_id primary key(e_id);
    --添加外键
    alter table t_student_exam add constraint fk_exam_student_id foreign key (f_id)
    references t_student_con(f_id)
    on delete cascade; --在删除学生信息的时候,级联删除从表的成绩信息

    注意:添加了外键约束的表,若主表有对应的从表记录,需在添加外键约束时加上 on delete cascade 关键字,才可直接删除,此关键字表示级联删除。否则不能直接删除。

    6、约束的删除
      语法:alter table t_student_exam drop constraint 约束名;

    --删除约束
    alter table t_student_exam drop constraint fk_exam_student_id;

      注意!我们可以用以上方法建立表的完整性约束,同时,我们也可以在建表时就建立约束。如下

    create or replace table t_student_con(
        f_id int primary key,
        f_name varchar2(30),
        f_sex char(2) check(f_sex='M' OR f_sex='F'),--1、检查性约束
        f_age int,
        f_birth date default sysdate,
        constraint ck_std_age check(f_age>=1 and f_age<=60)--2、检查性约束
    );
    create table t_student_exam(
           e_id int,--主键
           e_subject varchar2(30),--科目
           e_score number(5,2),--分数
           f_id int REFERENCES T_STUDENT_CON(F_ID) ON DELETE CASCADE--学员信息的外键约束
    );
  • 相关阅读:
    Canvas 与 Image 相互转换
    oracle随笔
    QueryTask,FindTask,IdentifyTask三种查询的区别
    mysql命令
    mysql
    Delphi声明Record变量后直接初始化
    delphi实现映射和断开网络驱动器
    delphi的ArrayList
    Delphi判断一个文件是不是JPG图片
    Delphi 停靠技术的应用3(两个窗体停靠成PageControl样式, 分页停靠)
  • 原文地址:https://www.cnblogs.com/wanglitao/p/4857143.html
Copyright © 2011-2022 走看看