【SQL】MySQL中的约束

1. 主键约束(primary key):

  • 相当于唯一约束+非空约束
  • 分为单列主键,多列联合主键,一个表只有一个主键
  • 多列联合主键的每列都不能为空

2. 自增长约束(auto_increment):

  • 用在单列主键后面,且该列只能是整数类型(tinyint,smallint,int,bigint),实现主键自增长
  • delete删除数据后自动增长从断点开始,truncate删除数据后自动增长从默认起始值开始

3. 非空约束(not null):

  • 该列的值不能为空
  • 真正的空是NULL,不是'NULL',也不是''

4. 唯一约束(unique):

  • 该列的值不能重复
  • 该列可以为NULL,NULL不等于NULL,即可以有多条NULL的记录

5. 默认约束(default):

  • 指定某列的默认值,若该列没有指定值则为默认值

6. 零填充约束(zerofill)(使用非常少):

  • 插入数据时,当该字段的值长度小于定义的长度,在该值的前面补上0

7. 外键约束 - 一对多关系(foreign key):

  • 主键所在的表就是主表,外键所在的表就是从表
    添加数据:
  • 必须先给主表添加数据,再给从表添加数据
  • 外键列的值不能随便填写,必须依赖主表的主键列
    删除数据:
  • 主表的数据被从表依赖时,不能删除,否则可以删除
  • 从表的数据可以随便删除

8. 外键约束 - 多对多关系(foreign key):

  • 多对多可以拆解成两个一对多的关系

多表关系:

一对一: 很少用,因为一对一的话则可以合并成一张表
一对多/多对一: 例如学生和班级,一个班级对应多个学生
多对多: 例如学生和课程,一个学生对应多个课程,一个课程对应多个学生

相关推荐
FQNmxDG4S8 小时前
Java多线程编程:Thread与Runnable的并发控制
java·开发语言
虹科网络安全9 小时前
艾体宝干货|数据复制详解:类型、原理与适用场景
java·开发语言·数据库
2301_771717219 小时前
解决mysql报错:1406, Data too long for column
android·数据库·mysql
axng pmje9 小时前
Java语法进阶
java·开发语言·jvm
绘梨衣5479 小时前
Docker+FastAPI+MySQL 项目部署报错汇总
mysql·docker·fastapi
rKWP8gKv79 小时前
Java微服务性能监控:Prometheus与Grafana集成方案
java·微服务·prometheus
老前端的功夫9 小时前
【Java从入门到入土】28:Stream API:告别for循环的新时代
java·开发语言·python
qq_435287929 小时前
第9章 夸父逐日与后羿射日:死循环与进程终止?十个太阳同时值班的并行冲突
java·开发语言·git·死循环·进程终止·并行冲突·夸父逐日
小江的记录本9 小时前
【Kafka核心】架构模型:Producer、Broker、Consumer、Consumer Group、Topic、Partition、Replica
java·数据库·分布式·后端·搜索引擎·架构·kafka
dvjr cloi9 小时前
MySQL Workbench菜单汉化为中文
android·数据库·mysql