• 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第二十天 shutil 模块 zipfile tarfile 模块
    SQL Server中SET QUOTED_IDENTIFIER的使用
    SQL Server AG集群启动不起来的临时自救大招
    检查使用共享表空间的表
    数据库历史简图
    线上centos6出现软死锁 kernel:BUG: soft lockup
    ORA-01810:格式代码出现两次 解决方法
    C# DES (ECB模式) 加密解密 --单倍长
    Android-ContentProvider使用
    第十三周(动物这样叫)
  • 原文地址:https://www.cnblogs.com/kuillldan/p/5882948.html
Copyright © 2020-2023  润新知