51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

mysql数据类型约束(PK,UK,NN,FK )主键外键

mysql数据类型约束(PK,UK,NN,FK )主键外键

在数据库服务中进行数据存储时,类似于在一个execl表中存储数据一样,如果没有对表的字段进行约束和限制,是可以随意存储数据的;

但是,在数据表的某些字段上,是有特殊含义的,如果随意进行存储数据,会造成存储信息的混乱,因此引入了约束与属性概念;

通过数据类型设置的约束与属性,可以让数据库服务限制人类录入的数据信息,从而避免录入数据信息混乱的局面;

并且,通过数据类型的约束与属性设置,还可以避免数据信息输入的重复与输入数据信息不能为空;

常见的约束定义:

| 序号 | 约束方法 | 解释说明 | |----|-----------------|-------------------------| | 01 | PK(primary key) | 表示主键约束,非空且唯一(表中只能有一个主键) | | 02 | UK(unique key) | 表示唯一约束 | | 03 | NN(not null) | 表示非空约束 | | 04 | FK(foreign key) | 表示外键约束,多表之间关联使用 |

外键约束(FK)

概念介绍:
外键: 外面的键, 一张表的一个字段(非主键)指向另外一个表的主键, 那么该字段就称之为外键.
外键所在的表称之为子表(附表); 外键所指向的主键所在的表称之为父表(主表)

外键应用:
参考文档:
约束01:外键对子表的数据写操作约束(增加和更新)
约束02:外键对父表也有数据约束

常见的属性定义:

| 序号 | 属性信息 | 解释说明 | |----|----------------|---------------------------------| | 01 | default | 设定默认数据信息,可以实现自动填充 | | 02 | auto_increment | 设定数值信息自增,可以实现数值编号自增填充(一般配合主键使用) | | 02 | comment | 设定数据注释信息 | | 03 | unsigned | 设定数值信息非负,可以实现数值信息列不能出现负数信息 |

完整建表语句参考:

CREATE TABLE `student` (
  `id` int NOT NULL COMMENT '学号信息',
  `name` varchar(45) NOT NULL COMMENT '学生名',
  `age` tinyint unsigned NOT NULL COMMENT '学生年龄',
  `gender` enum('M','F','N') NOT NULL DEFAULT 'N' COMMENT '学生性别',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='学生表'

CREATE TABLE `student` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '学号信息',
  `name` varchar(45) NOT NULL COMMENT '学生名',
  `age` tinyint unsigned NOT NULL COMMENT '学生年龄',
  `gender` enum('M','F','N') NOT NULL DEFAULT 'N' COMMENT '学生性别',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='学生表'
赞(6)
未经允许不得转载:工具盒子 » mysql数据类型约束(PK,UK,NN,FK )主键外键