MySQL约束

建表语句

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!

你可能感兴趣的:(mysql,mysql,表字段约束)