zoukankan      html  css  js  c++  java
  • Oracle中的约束

    • 非空约束 NOT NULL
      • 数据库表中的某一个列不能为空
    • 唯一约束 UNIQUE
      • 表中某一个列不允许重复
      • 唯一约束所在列可以为NULL,但只能出现一次
      • 代码:

    CREATE TABLE MEMBER

    (

                    MID NUMBER,

                    NAME VARCHAR2(20),

                    EMAIL VARCHAR2(20),

                    CONSTRAINT UK_EMAIL UNIQUE(EMAIL)

    );

    • 主键约束 PRIMARY KEY
      • 既非空也不能重复。
      • 一般来说一张表只设置一个主键,但是也可以设置多个主键,这种叫联合主键。
    • 检查约束 CHECK
      • 在进行数据更新前设置一些条件,满足条件才允许插入或更新
      • 检查约束会损耗掉一部分数据库的性能

    CREATE TABLE MEMBER

    (

          MID NUMBER,

          NAME VARCHAR2(20),

          EMAIL VARCHAR2(20),

          AGE NUMBER(3),

          CONSTRAINT UK_EMAIL UNIQUE(EMAIL),

          CONSTRAINT PK_MID PRIMARY KEY(MID),

          CONSTRAINT CK_AGE CHECK(AGE > 0 AND AGE < 150)

    );

    • 外键约束
      • 作用在两张表上
      • CONSTRAINT FK_COLUMNNAME_MAINTABLENAME_COLUMNNAME FOREIGN KEY(COLUMNNAME) REFERENCES TABLENAME(COLUMNNAME)
      • 删除父表前一定要先删除子表,否则父表无法删除。但若一定要删除父表,必须使用语句DROP TABLE TABLE_NAME CASCADE CONSTRAINT
      • 父表中要作为子表的外键应用,则父表的该字段必须是PRIMARY KEY 或者UNIQUE KEY 约束
      • 父表中的某些字段如果在子表中有关联,默认情况下,父表记录不能删除。如果希望父表数据一删除,对应的子表数据也一并删除,那么必须配置数据库的级联操作(ON DELETE CASCADE)。如果希望父表记录删除后,保留子表数据,并且把子表数据对应关联字段设置为空,这应该使用ON DELETE SET NULL

    总的说来,一个表已经建立成功并且已经有数据后,不建议在该表上增加约束。

  • 相关阅读:
    cookie
    手写Promise/Promise.all/promise.race
    Hbuilder如何真机调试?
    什么是深拷贝?什么是浅拷贝?如何实现深拷贝?
    Vue.set()?怎么用?
    vueRouter怎么用?
    Vue如何实现组件间通信?
    reduce()累加器
    filter()数组遍历
    map()数组遍历
  • 原文地址:https://www.cnblogs.com/kuillldan/p/5882948.html
Copyright © 2011-2022 走看看