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

image.png

我们给表填充上数据

接下来我们给表字段 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.
上一篇 下一篇

猜你喜欢

热点阅读