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.内模式

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

三、约束是一种模式吗?

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

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

 

posted @ 2020-11-12 22:36  PEAR2020  阅读(163)  评论(0编辑  收藏  举报