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='学生表'