zoukankan      html  css  js  c++  java
  • plsql字段约束

    第五章  字段约束

     

    初识约束

      约束是数据库用来确保数据满足业务规则的手段,对数据做的条件限制。

     

    约束的类型

    1. 主键约束(PRIMARY KEY)

    2. 唯一性约束(UNIQUE)

    3. 非空约束(NOT NULL)

    4. 检查约束(CHECK)

    5. 外键约束(FOREIGN KEY)

     

     

    主键约束(PRIMARY KEY)

      1. 非空加唯一约束;

      2. 一个表只有一个主键;

      3. 主键会默认加索引;

    student_id number primary key

     

    alter table student add constraint stu_id_pk primary key(stu_id);

     

    唯一性约束(UNIQUE)

    对于UNIQUE约束来讲,索引是必须的。如果不存在,就自动创建一个(UNIQUE的唯一性本质上是通过索引来保证的)

    UNIQUE允许null值,UNIQUE约束的列可存在多个null。这是因为,Unique唯一性通过btree索引来实现,而btree索引中不包含null。所以,这也造成了在where语句中用null值进行过滤会造成全表扫描。

    student_num  number unique

    alter table table_name add constraint student_code_uq unique(student_num);

    删除约束

    alter table table_name drop constraint constraint_name;

     

    非空约束(NOT NULL)

       非空约束作用的列也叫强制列。顾名思义,强制键列中必须有值,当然建表时候若使用default关键字指定了默认值,则可不输入。

    score_name varchar2(32) not null

     

    alter table table_name modify student_name not null;

     

    检查约束(CHECK)

    检查约束可用来实施一些简单的规则,比如列值必须在某个范围内。检查的规则必须是一个结果为true或false 的表达式

    student_sex    varchar2(1) check(student_sex in('男','女')),

    alter table student add constraint stu_sex_ck check(stu_sex in('男','女'));

     

    score_value number check(score_value between 0 and 100)

     

    alter table student add constraint stu_age_ck check(stu_age between 1 and 100);

     

    外键约束(FOREIGN KEY)

      外键约束定义在具有父子关系的子表中,外键约束使得子表中的列对应父表的主键列,用以维护数据库的完整性。不过出于性能和后期的业务系统的扩展的考虑,很多时候,外键约束仅出现在数据库的设计中,实际会放在业务程序中进行处理。外键约束注意以下几点:

    1. 外键约束的子表中的列和对应父表中的列数据类型必须相同,列名可以不同
    1. 对应的父表列必须存在主键约束(PRIMARY KEY)或唯一约束(UNIQUE)
    2. 外键约束在子表里,外键的取值范围不能大于父表键值
    3. 如果想删除主表的主键,需要先删除子表的关联字段

    student_num  number references table_name(student_num)

     

    alter table student add constraint tea_id_fk foreign key(tea_id) references teacher (tea_id);

     

    注意:

    不过在真正的企业开发中,除了主键约束这类具有强需求的约束,像外键约束,检查约束更多时候仅仅出现在数据库设计阶段,真实环境却很少应用,更多是放到程序逻辑中去进行处理。

  • 相关阅读:
    cmd utf-8 just run:CHCP 65001
    PHP5已注册的hash函数
    php扩展开发笔记1
    configure: error: cannot find neither zip nor jar, cannot continue
    configure: error: cannot compute suffix of object files: cannot compile
    configure: error: I suspect your system does not have 32-bit developement libraries (libc and headers). If you have them, rerun configure with --enable-multilib. If you do not have them, and want to b
    /usr/bin/ld: crt1.o: No such file: No such file or directory
    近两周工作总结
    我觉得好用的VS扩展(不定期更新)
    vmware虚拟机无法ping通宿主机,但宿主机可以ping通虚拟机
  • 原文地址:https://www.cnblogs.com/h-w-b/p/12462962.html
Copyright © 2011-2022 走看看