• Mysql之 约束 & 数据库的模式


    一、约束

    详情见: https://blog.csdn.net/w_linux/article/details/79655073

    Mysql不支持第五种检查约束CHECK

    (一)非空约束(not null)

    (二)唯一性约束(unique)

    1、表级约束:email varchar(128) unique

    • 使用表级约束,给多个字段联合约束:unique(name,email)
    • 给约束起名:constraint t_user_email_unique unique(email)

    2、可同非空约束一起使用,既不能为空,也不能重复:name varchar(32) not null unique

    (三)主键约束(primary key) PK

    主键约束除了可以做到"not null unique"之外,还会默认添加"索引——index"0

    1. 单一主键(列级定义)
      •  (表级定义)constraint t_user_id_pk primary key(id)
    2. 复合主键(表级定义)primary key(id,name)

    (四)外键约束(foreign key) FK

    1.注意点

    • 外键值可以为null
    • 外键字段去引用一张表的某个字段的时候,被引用的字段必须具有unique约束
    • 有了外键引用之后,表分为父表和子表
      •  班级表:父表 <id是primary key的是父表>
      •  学生表:子表 <id是foreign key的是子表>
    • 创表先创有primary key 父表
    • 插表先插有primary key 父表
    • 删除先删foreign key子表

    2.CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id) REFERENCES .. 和

    FOREIGN KEY (P_Id) REFERENCES ..两种区别?

    >>> 区别仅限外键的命名。一般使用单独增加外键的方式。

    二、模式

    1.外模式

    • 用户编程时的对象或属性

    2.模式/逻辑模式/概念模式

    • 表或关系,如:存储过程/视图/触发器

    3.内模式

    • 存储如表在哪个表空间在哪里有索引,表空间的数据文件放在哪里,在哪个磁盘。

    三、约束是一种模式吗?

    约束依附于表,不是模式。

    灭表自动灭约束,但模式如函数并不消失。

  • 相关阅读:
    Headless MSBuild Support for SSDT (*.sqlproj) Projects
    dbDacFx Provider for Incremental Database publishing
    Cannot spawn... TortoisePlink
    Windows server 2012同时进行多个会话登陆的策略设置
    Workspace Cloning / Sharing in Jenkins
    How to change Jenkins default folder on Windows?
    使用Jenkins配置自动化构建
    Auto push git tag
    Azure Deploy
    sql server中index的REBUILD和REORGANIZE
  • 原文地址:https://www.cnblogs.com/sabertobih/p/13966709.html
Copyright © 2020-2023  润新知