mysqls数据库字段列值不重复

昨天和公司大拿再探讨一个关于数据库的问题,数据库是不是可以列下面的值不重复。

后面整理如下

首先我们新建一个表

/*
 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.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转 # https://www.cnblogs.com/easypass/archive/2010/12/ 08/...
    吕品㗊阅读 9,779评论 0 44
  • 1、引言 数据库设计过程中表、字段等的命名规范也算是设计规范的一部分,不过设计规范更多的是为了确保数据库设计的合理...
    SnowflakeCloud阅读 41,085评论 0 48
  • 感觉前几天干活时一直不在状态 今天就休息了一天调整好状态 为以后的工作做好准备
    呵呵_206a阅读 177评论 0 0
  • 1、下面这段代码输出结果是? 为什么? JavaScript 所有任务可以分成两种,一种是同步任务(synchro...
    zh_yang阅读 191评论 0 0
  • 是两颗羞涩的心剔尽了孤高 揉碎、榨干把它盛出一瓢水来 慢悠悠的来酿香醇的酒 是加多少谷物的期盼 把赤诚在里面沉淀 ...
    千只鹤show阅读 230评论 0 2