mysql中表的约束,主键外键唯一键

mysql2

  • 表的约束
    • 空属性(NULL)
    • 默认值
    • 列描述
    • zerofill
    • 主键
      • 主键属性
      • 复合主键
      • 追加主键
      • 删除主键
    • 自增长
    • 唯一键
    • 外键

表的约束

空属性(NULL)

mysql中表的约束,主键外键唯一键_第1张图片

此时 name 的 Null 被置为 No

默认值

mysql中表的约束,主键外键唯一键_第2张图片

列描述

没有实际含义,专门用来描述字段,相当于注释

mysql中表的约束,主键外键唯一键_第3张图片

zerofill

没有啥实际用处,就是一个用来展示的

在这里插入图片描述
mysql中表的约束,主键外键唯一键_第4张图片

主键

mysql中表的约束,主键外键唯一键_第5张图片

可以看到key中多了PRI字符,即代表主键,主键不能为空

主键属性

定义的时候,可以给列的属性当中增加 priary key 来定义为主键
①当前被定义为主键的列,不能为空,不能重复
测试:
	发现插入时如果未插入主键会自动填入并发出警告
	如果插入相同的主键则会报错无法插入数据

mysql中表的约束,主键外键唯一键_第6张图片

②一张表当中只能有一个主键

在这里插入图片描述

复合主键

一张表当中只能有一个主键,但是可以由多个列作为复合主键

mysql中表的约束,主键外键唯一键_第7张图片

追加主键

当表创建好后,可以追加主键

mysql中表的约束,主键外键唯一键_第8张图片
mysql中表的约束,主键外键唯一键_第9张图片

删除主键

alter table [表名] drop primary key;

mysql中表的约束,主键外键唯一键_第10张图片

自增长

auto_increment:当相应的字段,不给值时会被系统自动触发,系统会对当前字段中已经有的最大值进行+1操作,通常和主键搭配使用,作为逻辑主键

特点:
	任何一个字段要做自增长,前提是本身是一个索引(key一栏有值)
	自增长字段必须是整数
	一张表最多只能有一个自增长

mysql中表的约束,主键外键唯一键_第11张图片
mysql中表的约束,主键外键唯一键_第12张图片

唯一键

唯一键可以解决表中有多个字段需要唯一性约束的问题
唯一键允许为空,且可以有多个为空,空字段不做唯一性比较

mysql中表的约束,主键外键唯一键_第13张图片

如果不想为空可以在后面加上not null

mysql中表的约束,主键外键唯一键_第14张图片
mysql中表的约束,主键外键唯一键_第15张图片

如果一个数据表中有列被设为唯一键的同时被设置为非空,那么第一个设为唯一键并非空的列会被设为主键

外键

外键用于定义主表和从表之间的关系

mysql中表的约束,主键外键唯一键_第16张图片

此时有两张表,一张代表了学生,一张代表班级
此时如果想添加学生,就要在班级下添加,即学生受班级的约束,班级表可以当做基础表,学生受clss_id的外键约束
班级表为主表,学生表为从表

设置外键为:
foreign key (此表中需要被外键关联的列名) references [主表名](外键关联名);
例如刚才的学生作为从表班级作为主表

mysql中表的约束,主键外键唯一键_第17张图片
mysql中表的约束,主键外键唯一键_第18张图片
mysql中表的约束,主键外键唯一键_第19张图片

此时尝试往学生表中插入不属于班级表中的班级信息

在这里插入图片描述

报错了

你可能感兴趣的:(mysql,数据库,mariadb)