在MySQL数据库中,经常会碰到由于业务需要添加唯一键约束,唯一键约束,可以在一个列上添加约束,也可以在多个列上添加唯一约束。

一、单列唯一约束

在一列上添加唯一约束,主要是让该列在表中只能有唯一的一行,例如注册邮箱时的邮箱名、手机号等信息,相关操作如下:

1.建表时加上唯一性约束:

CREATE TABLE `t_user` (

`Id` int(11) NOT NULL AUTO_INCREMENT,

`username` varchar(18) NOT NULL unique,

`password` varchar(18) NOT NULL,

PRIMARY KEY (`Id`)

) ENGINE=InnoDB AUTO_INCREMENT=1018 DEFAULT CHARSET=gbk;

2.给已经建好的表加上唯一性约束:

ALTER TABLE `t_user` ADD unique(`username`);

或者:

create unique index UserNameIndex on 't_user' ('username');

二、多列联合唯一约束

如果业务中要求两个字符联合起了是唯一的,比如“地址”+“名称”是唯一的,这就需要对两列,甚至多列添加联合唯一约束,具体命令如下:

1.确认表结构

mysql> show create table jw_resource;

FIELD          TYPE          COLLATION       NULL    KEY     DEFAULT  Extra           PRIVILEGES            COMMENT

-------------  ------------  --------------  ------  ------  -------  --------------  --------------------  -------

id             BIGINT(20)    (NULL)          NO      PRI     (NULL)   AUTO_INCREMENT  SELECT,INSERT,UPDATE

resource_name  VARCHAR(128)  gbk_chinese_ci  YES             (NULL)                   SELECT,INSERT,UPDATE

resource_type  TINYINT(4)    (NULL)          YES             (NULL)                   SELECT,INSERT,UPDATE

2.给resource_name和resource_type添加联合唯一约束:

mysql>show index from jw_resource;

mysql>ALTER TABLE jw_resource

ADD UNIQUE KEY(resource_name, resource_type);

3.确认表结构添加约束后结果:

mysql>  show create table jw_resource;

CREATE TABLE `jw_resource` (

`id` BIGINT(20) NOT NULL AUTO_INCREMENT,

`resource_name` VARCHAR(128) DEFAULT NULL,

`resource_type` TINYINT(4) DEFAULT NULL,

PRIMARY KEY (`id`),

UNIQUE KEY `resource_name` (`resource_name`,`resource_type`)

) ENGINE=INNODB AUTO_INCREMENT=2 DEFAULT CHARSET=gbk;

mysql> show index from jw_resource;

注意:唯一键约束添加后,在建表的元数据中,默认的唯一键约束名称为第一列的名称。

4.添加约束后,进行插入测试效果:

msyql> INSERT INTO `jw_resource`(`resource_name`,'resource_type') values('aa','11');

msyql> INSERT INTO `jw_resource`(`resource_name`,'resource_type') values('aa','22');

msyql> INSERT INTO `jw_resource`(`resource_name`,'resource_type') values('bb','11');

msyql> INSERT INTO `jw_resource`(`resource_name`,'resource_type') values('aa','11');

5.删除唯一约束

mysql> ALTER TABLE jw_resource DROP INDEX `resource_name`;

mysql>show index from jw_resource;

注意:唯一键约束添加后,实际上建立了一个索引,将该索引删除后,就等于删除了联合唯一约束。

mysql联合唯一约束_MySQL中添加唯一约束和联合唯一约束相关推荐

  1. mysql新加一列_如何使用mysql在建好的表中添加一列

    本文主要向大家介绍了如何使用mysql在建好的表中添加一列,通过具体的代码向大家展示,希望对大家学习mysql有所帮助. mysql如果想在一个已经建好的表中添加一列 有这样的需求,已经建立的表,随着 ...

  2. mysql获取当月最后一天_mysql中获取本月第一天、本月最后一天、上月第一天、上月最后一天

    mysql获取当月最后一天_mysql中获取本月第一天.本月最后一天.上月第一天.上月最后一天等等 转自: https://blog.csdn.net/min996358312/article/det ...

  3. mysql 语句怎样修饰约束_MySQL中的约束,添加约束,删除约束,以及一些其他修饰讲解...

    (1)创建数据库 CREATE DATABASES 数据库名; (2)选择数据库 USE 数据库名; (3)删除数据库 DROP DATAVBASE 数据库名; (4)创建表 CREATE TABLE ...

  4. mysql id自动增长_MySQL中的6种约束,你掌握了几种?

    -点击上方"爱数据学习社"关注我们吧!- 在MySQL里,"约束"指的是对表中数据的一种限制约束,它能够确保数据库中数据的准确性和有效性. 比如有的数据是必填项 ...

  5. mysql添加临时索引_mysql 中添加索引的三种方法

    在mysql中有多种索引,有普通索引,全文索引,唯一索引,多列索引,小伙伴们可以通过不同的应用场景来进行索引的新建,在此列出三种新建索引的方法 mysql 中添加索引的三种方法 1.1 新建表中添加索 ...

  6. mysql中给用户添加密码_MySql中添加用户,新建数据库,用户授权,删除用户,修改密码...

    MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束): 1.新建用户 登录MYSQL: @>mysql -u root -p @>密码 ...

  7. mysql内嵌插入语句_MySQL中添加或插入语句(Insert)的几种使用方式

    MySQL中添加或插入语句(Insert)的几种使用方式 1.INSERT 简写方式插入数据(不推荐) 1.先看一下表中有那些数据 2.使用Inset into 表名 values(值1,值2)进行插 ...

  8. 添加mysql组合主键_mysql怎么添加复合主键?

    在mysql中可以在创建表时添加复合主键,其语法规则是"PRIMARY KEY [字段1,字段2,-,字段n]",表示主键由多个字段联合组成. 主键约束即在表中定义一个主键来唯一确 ...

  9. mysql复合主键_mysql怎么添加复合主键?

    在mysql中可以在创建表时添加复合主键,其语法规则是"PRIMARY KEY [字段1,字段2,-,字段n]",表示主键由多个字段联合组成. 主键约束即在表中定义一个主键来唯一确 ...

最新文章

  1. 如何判断 Linux 是否运行在虚拟机上
  2. 怎样学习linux系统管理员,linux系统管理员学习笔记
  3. ASP.NET把DataTable转成XML文件的函数
  4. Py之chatterbot-corpus:python包之chatterbot-corpus包简介、安装、使用方法之详细攻略
  5. linux自动挂起什么意思,Linux中进行挂起(待机)的命令说明
  6. python 时间日期处理
  7. “极度郁闷,要求慰安”
  8. 从超大规模云服务提供商处学习效率
  9. Android 四大组件学习之ContentProvider二
  10. 下载Sonar-Runner
  11. matlab SVMtrain函数
  12. Justice 「未见系列 2」随夏而至,总有一款让你心动的配色!
  13. 网页版在线使用PS网站源码
  14. linux tar zcxf,tar/gzip/zip文件打包、压缩命令
  15. RN设置宽高100%
  16. 博士申请 | 香港中文大学(深圳)濮实老师招收分布式优化与机器学习全奖博士生...
  17. java-JDK11“ jstat -gc”中“ CGC”和“ CGCT”是什么意思?
  18. 【报错】arXiv上传文章出现XXX.sty not found
  19. 迷茫的时候找到了未来的方向
  20. 拼多多TOKEN独享方法

热门文章

  1. python字典x in d_给定字典d,哪个选项对x in d的描述是正确的
  2. git 的批量克隆 批量切换分支 批量pull
  3. C语言中的字符串与字符串函数
  4. rolling用法实例
  5. php电商实现自动售货,2020PHP自动售货发卡网程序开源源码 集成多个支付接口
  6. 毕业设计答辩常见问题汇总
  7. 详解,N沟道MOS管和P沟道MOS管
  8. 【NLP】5计数词向量底层代码编写和gensim word2vec库入门——斯坦福大学CS224n第一次课作业代码复现
  9. mac下的免费UML建模工具
  10. Matlab--创建函数(function)