mysql2

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


表的约束

空属性(NULL)

mysql一个表可以有两个主键_主键

此时 name 的 Null 被置为 No

默认值

mysql一个表可以有两个主键_主键_02

列描述

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

mysql一个表可以有两个主键_mysql一个表可以有两个主键_03

zerofill

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

mysql一个表可以有两个主键_mysql一个表可以有两个主键_04


mysql一个表可以有两个主键_主键_05

主键

mysql一个表可以有两个主键_mysql_06

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

主键属性

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

mysql一个表可以有两个主键_数据库_07

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

mysql一个表可以有两个主键_mysql_08

复合主键

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

mysql一个表可以有两个主键_mariadb_09

追加主键

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

mysql一个表可以有两个主键_mysql一个表可以有两个主键_10


mysql一个表可以有两个主键_mariadb_11

删除主键

alter table [表名] drop primary key;

mysql一个表可以有两个主键_数据库_12

自增长

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

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

mysql一个表可以有两个主键_数据库_13


mysql一个表可以有两个主键_mariadb_14

唯一键

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

mysql一个表可以有两个主键_数据库_15

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

mysql一个表可以有两个主键_mysql_16


mysql一个表可以有两个主键_数据库_17

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

外键

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

mysql一个表可以有两个主键_数据库_18

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

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

mysql一个表可以有两个主键_mysql_19


mysql一个表可以有两个主键_mysql一个表可以有两个主键_20


mysql一个表可以有两个主键_数据库_21

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

mysql一个表可以有两个主键_mysql一个表可以有两个主键_22

报错了