mysqls数据库字段列值不重复
2018-05-29 本文已影响0人
百年叔叔
昨天和公司大拿再探讨一个关于数据库的问题,数据库是不是可以列下面的值不重复。
后面整理如下
首先我们新建一个表
/*
Navicat Premium Data Transfer
Source Server : 本地
Source Server Type : MySQL
Source Server Version : 50720
Source Host : localhost:3306
Source Schema : mybatis
Target Server Type : MySQL
Target Server Version : 50720
File Encoding : 65001
Date: 29/05/2018 08:23:06
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for tbl_employee
-- ----------------------------
DROP TABLE IF EXISTS `tbl_employee`;
CREATE TABLE `tbl_employee` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`last_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`gender` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`email` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
这个表有4个字段
分别是 id
last_name
gender
email
我们给表填充上数据
接下来我们给表字段 email 设置不可重复
image.png有一个报错 意思是"168@qq.com" 是一个重复字段
我们修改成其他的值再试试
image.png
现在我们往表里面添加email 就是不能重复了,但是注意一点 空数据也会被判断为重复
ALTER TABLE tbl_employee ADD UNIQUE (email);
##数据库名为mybatis,表名tbl_employee,字段名email.
删除这个约束
alter table tbl_employee drop index email
##数据库名为mybatis,表名tbl_employee,字段名email.