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

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

  • 相关阅读:
    一个很香的python练习网站
    关于接口测试用例设计的一些思考
    pytest、tox、Jenkins实现python接口自动化持续集成
    django实战商城项目注册业务实现
    面试测试开发被问到数据库索引不知道怎么办?这篇文章告诉你
    python框架Django实战商城项目之用户模块创建
    python框架Django实战商城项目之工程搭建
    golang在gitlab中的工作流
    kubernetes extension point
    kubernetes controller 实现
  • 原文地址:https://www.cnblogs.com/kuillldan/p/5882948.html
Copyright © 2011-2022 走看看