3、UNIQUE 约束

  约束唯一标识数据库表中的每条记录。

创建一张测试表

CREATE TABLE `test`.`info`(
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`idCard` VARCHAR(18) UNIQUE NOT NULL, -- 直接在字段上添加唯一约束
`mobile` VARCHAR(11),
PRIMARY KEY (`id`)
) ENGINE=INNODB CHARSET=utf8 COLLATE=utf8_estonian_ci;

添加唯一约束UNIQUE

/*
除了上面的添加唯一约束的方法以外,
如果需要命名 UNIQUE 约束,以及为多个列定义 UNIQUE 约束,写法如下:
uc_idCard约束由mobile和idCard组合成唯一约束。
*/
CREATE TABLE `test`.`info`(
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`idCard` VARCHAR(18) UNIQUE,
`mobile` VARCHAR(11),
PRIMARY KEY (`id`),
CONSTRAINT `uc_idCard` UNIQUE (`mobile`,`idCard`)
) ENGINE=INNODB CHARSET=utf8 COLLATE=utf8_estonian_ci;
如果在存在表的情况下,添加唯一约束
-- 无名字的约束
ALTER TABLE `info` ADD UNIQUE (`idCard`);
-- uc_idCard约束由mobile和idCard组合成唯一约束
ALTER TABLE `info` ADD CONSTRAINT `uc_idCard` UNIQUE (`mobile`,`idCard`);

撤销 UNIQUE 约束

-- 移除指定字段的约束
ALTER TABLE `info` DROP INDEX `idCard`; -- 移除有名字的约束
ALTER TABLE `info` DROP INDEX `uc_idCard`;

向 UNIQUE 约束添加数据

-- 添加一条基础数据
INSERT INTO `info`(`idCard`,`mobile`) VALUES('',''); -- 添加一条idCard重复的记录
INSERT INTO `info`(`idCard`,`mobile`) VALUES('',''); 结果:
错误代码: 1062
DUPLICATE entry '' FOR KEY 'idCard'; -- 在唯一约束中添加 NULL
INSERT INTO `info`(`idCard`,`mobile`) VALUES(NULL,'');
-- 再次添加NULL
INSERT INTO `info`(`idCard`,`mobile`) VALUES(NULL,''); 结果:
id idCard mobile
-------------------------
6 (NULL) 1111
7 (NULL) 2222
原因:因为 NULL != NULL

MySql -- unique唯一约束的更多相关文章

  1. mysql中唯一约束用法

    以前比较naive,有次同事一定要在表里建唯一约束的时候,我就很纳闷为啥非要在db层面做限制,在自己的业务代码里做啊,就是说入库的时候先查一遍有没有,没有记录的情况再准许入库. 后来发现如果只是自己处 ...

  2. MYSQL中唯一约束和唯一索引的区别

    1.唯一约束和唯一索引,都可以实现列数据的唯一,列值可以有null.2.创建唯一约束,会自动创建一个同名的唯一索引,该索引不能单独删除,删除约束会自动删除索引.唯一约束是通过唯一索引来实现数据的唯一. ...

  3. [mysql] 删除唯一约束unique

    alter table ot_document drop index title

  4. MySQL进阶13--常见六大约束: 非空/默认/主键/唯一约束/检查约束/外键约束--表级约束 / 列级约束

    /* MySQL进阶13 常见六大约束: 1.not null 非空 2.default :默认值,用于保证该字段的默认值 ; 比如年龄:1900-10-10 3.primary key : 主键,用 ...

  5. 一、TCL事务控制语言 二、MySQL中的约束 三、多表查询(重点) 四、用户的创建和授权 五、MySQL中的索引

    一.TCL事务控制语言###<1>事务的概念 事务是访问并可能更新数据库中各种数据项的执行单元. 事务是一条SQL语句,一组SQL语句,或者整个程序. 事务是恢复和并发控制的基本单位. 事 ...

  6. MySQL中的约束,添加约束,删除约束,以及其他修饰

    一.NOT NULL(非空约束)添加非空约束 1)建表时直接添加 CREATE TABLE t_user(user_id INT(10) NOT NULL); 2)通过ALTER 语句 ALTER T ...

  7. mysql语句之约束语句

    约束语句: not null 非空 default 默认约束语句 unique 唯一约束语句 primary 主键 = 唯一 + 非空 auto_increment 自动增长 foreign key( ...

  8. Sql Server约束的学习一(主键约束、外键约束、唯一约束)

    一.约束的分类 1.实体约束 实体约束是关于行的,比如某一行出现的值不允许出现在其他行,例如主键约束. 2.域约束 域约束是关于列的,对于所有行,某一列有那些约束,例如检查约束. 3.参照完整性约束 ...

  9. day38:MySQL数据库之约束&索引&外键&存储引擎

    目录 part1:数据类型 part2:约束 part3:主键索引 PRI &唯一索引 UNI &普通索引 MUL part4:外键:foreign key part5:在外键中设置联 ...

随机推荐

  1. JS: javascript 点击事件执行两次js问题 ,解决jquery绑定click事件出现点击一次执行两次问题

    javascript 点击事件执行两次js问题 在JQuery中存在unbind()方法,先解绑再添加点击事件,解决方案为: $(".m-layout-setting").unbi ...

  2. element-ui 1.4.13

    Form 表单 rules 表单校验函数需要访问实例中的属性时应该把校验规则写为computed,校验函数写入methods <el-form-item prop="taxableIn ...

  3. 2020牛客寒假算法基础集训营4-I 匹配星星【贪心】

    链接:https://ac.nowcoder.com/acm/contest/3005/I来源:牛客网 示例1 输入 复制 2 1 1 0 2 2 1 2 1 1 0 2 2 1 输出 复制 1 1 ...

  4. MySQL进阶之存储引擎MyISAM与InnoDB的区别

    一.存储引擎(表类型) 通常意义上,数据库就是数据的集合,具体到计算机数据库可以是存储器上一些文件的集合或一些内存数据的集合.我们通常说的MySQL数据库.sql Server数据库等其实是数据库管理 ...

  5. 百度的Ueditor在VS2015/VS2010中配置需注意的地方

    1.下载:https://ueditor.baidu.com/website/download.html#uedito 官网已无1.4.3的.net版本下载,不知道百度在搞什么,下载完整版和ASP版本 ...

  6. 手把手带你开发一款 IIS 模块后门

    https://cloud.tencent.com/developer/article/1507913 首先准备工具 VS2017 IIS 开始开发 先打开 VS 创建一个 winfrom 项目然后添 ...

  7. Monkey and Banana HDU - 1069 有点像背包,又像最长上升序列

    #include<iostream> #include<algorithm> #include<cstring> #include<vector> us ...

  8. ubuntu set up 2 - 双系统时间问题

    http://ubuntuhandbook.org/index.php/2016/05/time-differences-ubuntu-1604-windows-10/ For users who d ...

  9. AOPS论坛上100+100个积分

    100+10 rare and irresistible integrals I bring you many beautiful integrals that I have collected ov ...

  10. Learn from Niu

    创新的源头来自于思考,尤其是深度思考: 1. 读博过程必然会经历痛苦,思考,深度思考这么一个过程,其中思考是最重要的,尤其是深度思考. 思考之后才是创新. 2. 借用其他的知识弥补这个领域的知识,不简 ...