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

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

  • 相关阅读:
    CSS:scroll-snap滚动事件停止及元素位置检测
    用100行代码,完成自己的前端构建工具!
    oneuijs/You-Dont-Need-jQuery
    移动端web app自适应布局探索与总结
    谈谈JavaScript MVC模式
    android 事件传递机制 心得
    Android中运行的错误:java.lang.UnsatisfiedLinkError: Couldn't load locSDK3: findLibrary returned null.
    安卓错误之app:transformClassesWithDexForDebug
    androidstudio 之 svn配置 汇总
    34. 高精度数除以单精度数
  • 原文地址:https://www.cnblogs.com/kuillldan/p/5882948.html
Copyright © 2011-2022 走看看