建表语句
CREATE TABLE `stu` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL COMMENT '姓名',
`id_num` varchar(255) DEFAULT NULL COMMENT '身份证号码',
`sex` varchar(255) DEFAULT NULL COMMENT '性别',
`age` int(11) DEFAULT NULL COMMENT '年龄',
`grade` varchar(255) DEFAULT NULL COMMENT '班级',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='学生表';
唯一约束
每张表可以有多个 UNIQUE 约束。
添加唯一约束
情况一:如果还未建表,直接在建表语句添加UNIQUE,例如给name添加唯一约束
CREATE TABLE `stu` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL UNIQUE COMMENT '姓名',
`id_num` varchar(255) DEFAULT NULL COMMENT '身份证号码',
`sex` varchar(255) DEFAULT NULL COMMENT '性别',
`age` int(11) DEFAULT NULL COMMENT '年龄',
`grade` varchar(255) DEFAULT NULL COMMENT '班级',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='学生表';
情况二:如果已经建表
给一个字段添加唯一约束,例如:给stu表name字段添加唯一约束
alter table stu add unique(name);
给多个字段添加唯一约束,例如:给stu表name和in_num两个字段添加唯一约束
alter table stu ADD CONSTRAINT name_idnum_uni UNIQUE (name,id_num);
注意:name_idnum_uni为约束KEY名称,名字可以随便取。
查看是否添加成功
show create table stu;
例如,最后第二行出现UNIQUE KEY就代表添加成功
CREATE TABLE `stu` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL COMMENT '姓名',
`id_num` varchar(255) DEFAULT NULL COMMENT '身份证号码',
`sex` varchar(255) DEFAULT NULL COMMENT '性别',
`age` int(11) DEFAULT NULL COMMENT '年龄',
`grade` varchar(255) DEFAULT NULL COMMENT '班级',
PRIMARY KEY (`id`),
UNIQUE KEY `name_idnum_uni` (`name`,`id_num`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='学生表'
删除唯一约束
alter table stu DROP INDEX name_idnum_uni;
非空约束
唯一约束能限制字段值不能相同,但唯一约束字段可以有多条为null的记录,如果唯一约束字段不想为null,需要添加非空约束。
alter table stu MODIFY COLUMN name varchar(255) not null COMMENT '姓名';
完成!enjoy it!